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

2.8 Організація розгалужень в програмі

Усі дії в програмі виконують оператори. Найпростіший оператор – оператор присвоювання ми вже розглядали раніше у зв’язку з описом змінних.

Якщо оператори завжди виконуютьмя в одній і тій же послідовності, то говорять, що програма або дялянка програми лінійна. Реальні програми мають нелінійну організацію. Для створення таких програм використовуються оператори розгалужень і цикли. Найчастіше для розгалужень використовують оператори if и switch.

Оператор if

Синтаксис оператора if визначається таким чином

if(вираз)

оператор1;

[else

оператор2]

де обчислене значення виразу має бути логічного типу, оператор1 і оператор2 можуть бути будь-якими операторами мови С.

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

Наступний фрагмент програми ілюструє обчислення Y за формулами:

Y=a-x, якщо x<a; Y=a,якщо x=a; Y=a+x,якщо x>a.

if(x<a)

Y=a-x;

else

if(x==a)

Y=a;

else

Y=a+x;

Ми розглянули приклад використовування оператора if, коли при виконанні умови і при невиконанні вибирався тільки один внутрішній оператор. Проте часто вибір варіанта передбачає деякий ланцюжок дій. Припустимо, необхідно при значенні X>0 надати нові значення дл яY і Z за відповідними формулами. У цьому випадку потріьно буде замінити внутрішнього оператора на блок. Блок – це послідовність операторів (і описів), узята у фігурні дужки. Нижче наведений оператор if, що містить блок.

if(X>0)

{

Y=2;

Z=X-1;

}

Оператор switch

Оператор switch використовують для організації в програмі множини гілок обчислень. Якщо умова вибору варіанта може бути представлена константою, то оператор switch представляє розгалуження в програмі значно простіше, ніж це можна реалізувати ланцюжком операторів if – else – if.

Синтаксис оператора має такий вигляд.

switch(вираз)

{

case константа1 : Послідовність операторів

case константа1 : Послідовність операторів

...

case константаN : Послідовність операторів

[default: Послідовність операторів]

}

Обчислене значення виразу може бути будь-якого простого типу. Константи повинні мати тип, сумісний з типом виразу.

Робота оператора відбуваєтьмя таким чином.

Обчислене значення виразу послідовно порівнюється зі всіма константами. Якщо знайдений збіг значень в деякій гілці, то відповідна послідовність операторів виконується. У цьому випадку оператор switch не передбачає вихід за свої межі, тому виконуватимуться всі послідовності операторів, розташовані нижче. Якщо такий алгоритм не відповідає розв’язуваній задачі, є можливість в кінці послідовностей операторів записати оператор break (розглянуто пізніше), який завершує роботу оператора switch.

Якщо значення виразу не збіглося ні з однією константою, то управління передається гілці default, а при її відсутності оператор switch не виконує ніяких дій.

Наступний приклад дозволяє вибрати один з п’яи варіантів обчислення Y залежно від значення деякої змінної P.

switch(P)

{

case 1 : Y=x+a; break;

case 2 : Y=x+a+b; break;

case 3 : Y=x+a+b+c; break;

case 4 : Y=x+a+b+c+d; break;

default : Y=0;

}