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

1.2.Деякі особливості запису умов

Вище відзначалося, що вираз_умова може бути будь-яким виразом, тип якого може бути автоматично перетворений до типу bool. Найчастіше за все, поряд з арифметичними операціями, у цьому виразі використовуються операції порівняння (операції <, >, <=, >=, ==, !=), а також логічні операції ! (логічне заперечення, НЕ), && (кон’юнкція, ТА), || (диз’юнкція, АБО).

Значення виразу_умови обчислюється з урахуванням пріоритетів операцій. При цьому потрібно пам’ятати наступне:

  • операція ! і операція зміни знака (унарний «мінус») мають найвищий пріоритет серед перелічених операцій (арифметичних, порівняння й логічних) і виконуються справа наліво;

  • операції множення та ділення мають більш високий пріоритет у порівнянні з операціями додавання та вирахування;

  • серед перелічених операцій операції && та || мають найнижчий пріоритет;

  • пріоритет арифметичних операцій вище пріоритету операцій порівняння;

  • бінарні операції одного пріоритетного рівня виконуються зліва направо.

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

Результат виконання логічних операцій визначається наступною таблицею:

Значення операндів

Результат

a

b

! a

a && b

a || b

false

false

true

false

false

false

true

true

false

true

true

false

false

false

true

true

true

false

true

true

Досить часто в складних логічних виразах помилково замість операції && використовується операція «кома», сенс якої полягає в тому, що кілька виразів обчислюються послідовно зліва направо, але результатом є значення самого правого виразу. Наприклад, результат обчислення виразу

d1 < v, v < d2

визначається значенням виразу v < d2 і ніяк не залежить від значення виразу d1 < v. Правильною є така конструкція:

d1 < v && v < d2

В останній конструкції немає необхідності у використанні круглих дужок, оскільки операції порівняння мають більш високий пріоритет, ніж бінарні логічні операції (зокрема, &&).

1.3.Умовна операція

У деяких випадках оператор if може бути замінений умовною операцією ?:, особливістю якої є те, що вона може використовуватися у виразах. Ця операція має наступний формат:

вираз_умова ? вираз_1 : вираз_2

При виконанні умовної операції в першу чергу обчислюється значення виразу_умови, що повинний бути скалярним. Якщо він істинний, то виконується обчислення значення виразу_1, а вираз_2 ігнорується. Якщо ж вираз_умова має хибне значення, то обчислюється вираз_2, а вираз_1 ігнорується. Результатом умовної операції є те зі значень вираз_1 і вираз_2, що було обчислено.

1.4.Перемикач

Перемикач (оператор багатоальтернативного вибору) використовується для організації розгалуження по багатьом альтернативам. Його формат наступний:

switch (вираз-перемикач) { case константа_1 : оператори_1 case константа_2 : оператори_2 ... case константа_N : оператори_N default : оператори }

Особливості складових частин оператора switch:

  • вираз-перемикач або повинен бути цілочисловим, або допускати автоматичне перетворення свого значення до цілого типу;

  • константа_1, константа_2, …, константа_N повинні бути цілочисловими, або допускати автоматичне перетворення свого значення до цілого типу;

  • константа_1, константа_2, …, константа_N можуть бути іменованими константами;

  • константа_1, константа_2, …, константа_N можуть бути виразами над константами;

  • службове слово case з наступною константою, а також службове слово default відіграють роль міток усередині перемикача, але до цих міток не можна перейти за допомогою оператора goto.

  • кожен з операторів, що стоять у фігурних дужках, може бути помічений однієї або декількома конструкціями виду

case константа :

  • оператори, записувані в альтернативах, можуть бути блоками.

Оператор switch виконується в такий спосіб.

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

Рис. 1.2. Схема роботи оператора switch

Для забезпечення примусового виходу з перемикача використовується оператор break. Таким чином, якщо по кожній з альтернатив повинна виконатися тільки одна гілка, потрібно кожну з них (за винятком останньої) завершити оператором break.