Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Книга6.doc
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
2.45 Mб
Скачать

4 Оператори керування

Оператори керування обчислювальним процесом використовуються для організації: розгалуження, циклічного повторення операторів програми, а також передачі керування в необхідне місце програми залежно від виконання певних умов.

4.1 Оператор розгалуження if

Синтаксис оператора розгалуження if:

if (Вираз) true-оператор;

де «Вираз» – це вираз довільного вигляду, що інтерпретується мовою C як логічне «так» (true), тобто будь-яке відмінне від нуля значення, або «ні» (false) у випадку якщо значення виразу дорівнює нулю.

Виконання оператора if починається з обчислення виразу. Якщо значення виразу відмінне від нуля, то виконується true-оператор, а потім наступний за if оператор; якщо значення виразу дорівнює нулю, то true-оператор пропускається і керування передається наступному за if оператору, true-оператор може містити простий чи складений оператор.

Графічне представлення оператора if зображене на рисунку 4.1.

Рисунок 4.1 – Графічне представлення оператора розгалуження if

Приклад 4.1. Написати програму обчислення вартості розмови по телефону з врахуванням 20% знижки, яка надається по суботам та неділям.

#include <stdlib.h>

#include <stdio.h>

int main()

{

int time; /* тривалість розмови, хвилин */

int day; /* день тижня */

float sum; /* вартість розмови */

printf("Vveditj tryvalistj rozmovy:\n");

scanf("%i",&time);

printf("Vveditj denj tyznya (1-7):\n");

scanf("%i",&day);

sum = 2.4 * time;

if (day == 6 || day == 7)

{

printf("E znygka 20%\n"); /* повідомлення про знижку */

sum = sum * 0.8;

}

printf("Vartistj rozmovy: %3.2f\n", sum);

system("PAUSE");

return 0;

}

4.2 Оператор розгалуження if-else

Розглянутий вище оператор if можна розглядати як окремий випадок оператора if-else.

Синтаксис оператора if-else:

if (Вираз) true-оператор;

else false-оператор;

Графічне представлення оператора if-else зображене на рисунку 4.2.

Рисунок 4.2 – Графічне представлення оператора розгалуження if-else

Виконання оператора if-else починається з обчислення виразу, якщо значення виразу відмінне від нуля, то виконується true-оператор, а потім наступний за if-else оператор; якщо значення виразу дорівнює нулю, то виконується false-оператор а потім наступний за if-else оператор. Як true-оператор так і false-оператор можуть бути простим чи складеним оператором.

Приклад 4.2. Обчислити площу кільця, радіуси отвору та кільця задати з клавіатури, у випадку якщо введений радіус отвору більший за радіус кільця видати повідомлення про помилку.

#include <stdlib.h>

#include <stdio.h>

int main()

float S; /* S – площа кільця */

float R,r; /* R – радіус кільця, r – радіус

отвору */

printf("Vveditj R, r:\n");

scanf("%f %f",&R,&r); /* Введення значень радіусів */

if (r > R)

printf("Error!"); /* Виведення повідомлення

про помилку */

{

S = 3.14*(R*R - r*r); /* Обчислення площі кільця */

printf("S = %f", S); /* Виведення результату на екран */

}

system("PAUSE");

return 0;

}

Оператори if та if-else можуть бути вкладеними. У цьому випадку true-блок чи false-блок можуть містити оператори if чи if-else.

Приклад 4.3. Програма рішення рівняння ax = b.

#include <stdlib.h>

#include <stdio.h>

int main()

{

float a,b,x;

printf("Vveditj a, b:\n");

scanf("%f %f",&a, &b);

if(a!=0)

printf("x = %f\n", b/a);

else

if(b==0)

printf("xbydj-yake chislo\n");

else

printf("Rishenj nemae\n");

system("PAUSE");

return 0;

}

Для усунення неоднозначності компілятор С інтерпретує вкладені if таким чином, що гілка else належить до найближчого попереднього if.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]