Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
3blok_Програмування.doc
Скачиваний:
33
Добавлен:
14.02.2016
Размер:
121.86 Кб
Скачать

3. Оператори умови і їх використання

Оператор - це частина програми, яку можна виконати окремо. Іншими словами, оператор визначає якусь дію. У мові C / C + + передбачено два умовних оператора: if і switch. Крім того, в деяких ситуаціях в якості альтернативи умовного оператору if можна застосувати тернарний оператор "?"

Оператор if має наступний вигляд:

If (вираз) оператор; else оператор;

Тут оператор може складатися з одного або декількох операторів або бути відсутнім зовсім (порожній оператор). Розділ else є необов'язковим.

Якщо вираз істинний (тобто не дорівнює нулю), виконується оператор або блок, зазначений у розділі if, в іншому випадку виконується оператор або блок, передбачений в розділі else. Оператори, зазначені в розділах if або else, є взаємовиключними.

У мові С результатом умовного виразу є скаляр, тобто ціле число, символ, покажчик або число з плаваючою крапкою. У мові C + + до цього набору типів до додавали тип bool.

Вкладені оператори if

Оператор, який знаходиться всередині іншого оператора if або else. У вкладеному умовному операторі розділ else завжди пов'язаний з найближчим оператором if, які перебувають з ним в одному блоці і не пов'язаним з іншим оператором else. Розглянемо приклад.

if (i>)

{ if (j) оператор1 ;

if {к) оператор2; / * даний if * /

else операторЗ; / * пов'язаний з даним оператором else * /

} else оператор 4; / * пов'язаний з оператором if (i) * /

Тернарна альтернатива

Замість операторів if-else можна використовувати тернарний оператор "?". Загальний вигляд замінних операторів if-else виглядає наступним чином.

if {умова}вираз; else вираз .

Оператор "?" називається тернарним, бо має три операнда. Загальний вигляд такий:

Вираз 1? Вираз 2: Вираз З

Виконання: спочатку обчислюється Вираз1. Якщо воно є істинним, обчислюється Вираз2, і його значення стає значенням всього тернарного оператора. Якщо Вираз1 є хибним, обчислюють ВиразЗ, і результатом виконання тернарного оператора вважається саме його значення. Розглянемо приклад. х = 10; у = х> 9? 100: 200; /// У даному випадку змінної у присвоюється значення 100. Якби змінна х була менше 9, то змінна у отримала б значення 200

Замість виразів в тернарному операторі можна використовувати виклики функцій. Якщо в операторі "?" Зустрічається ім'я функції, вона викликається, а її результат використовується замість значення відповідного виразу. Це означає, що, використовуючи виклики функцій в якості операндів тернарного оператора, можна виконати одну або кілька функцій відразу.

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

switch (вираз)

case константа 1:

послідовність операторів break; case Константа2 \

послідовність операторів break; case константаЗ:

послідовність операторів break;

default:

послідовність операторів }

Значенням виразу має бути символ або ціле число. Значення виразу послідовно порівнюється з константами, зазначеними в операторах case. Якщо виявляється збіг, виконується послідовність операторів, пов'язаних з даним оператором case, поки не зустрінеться оператор break або не буде досягнутий кінець оператора switch. Якщо значення виразу не збігається ні з однією з констант, виконується оператор default. Цей розділ оператора switch є необов'язковим. Якщо він не передбачений, при відсутності збігань не буде виконаний жоден оператор. Оператор break відноситься до групи операторів переходу. Його можна використовувати як в операторі switch, так і в циклах. Коли досягається оператор break, програма виконує перехід до оператора, наступного за оператором switch.

Слід знати три важливих властивості оператора switch.

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

• Дві константи в різних розділах case не можуть мати однакових значень, за винятком випадку, коли один оператор switch вкладений в інший.

• Якщо в операторі switch використовуються символьні константи, вони автоматично перетворюються в цілочисельні.

Вкладені оператори switch

Оператори switch можуть бути вкладені один в одного. Навіть якщо константи розділів case зовнішнього і внутрішнього операторів switch збігаються, проблеми не виникають. Наприклад, наведений нижче фрагмент програми є цілком прийнятним.

switch (х) {case 1:

switch (у) {case 0: printf ("Ділення на нуль.Чп");

break; case 1: process (х, у);}

break; case 2:

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