- •Методичні вказівки
- •Мета роботи
- •1.Теоретичні основи
- •1.1.Умовний оператор
- •1.2.Деякі особливості запису умов
- •1.3.Умовна операція
- •1.4.Перемикач
- •2.Приклади програм
- •4.Варіанти задач
- •3.Завдання на лабораторну роботу
- •5.Контрольні запитання
- •Список літератури
- •61002, Харків, вул. Фрунзе, 21.
- •61002, Харків, вул. Фрунзе, 21.
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.
