Главная Случайная страница Контакты | Мы поможем в написании вашей работы! | ||
|
Досить часто в програмі необхідно виконувати деякі дії в тому випадку, коли є істинною деяка умова. Найпростішим оператором, що використовується у цьому випадку, є оператор if (оператор розгалуження, умовний оператор):
if (вираз_умова) оператор
Якщо вираз_умова істинний (true), то виконується оператор, розташований після дужок, а потім – наступний оператор; якщо значенням виразу_умови є false, то оператор, що стоїть після дужок, пропускається (див. рис. 1.1, а). Як вираз_умова може бути записаний довільний вираз, результатом обчислення якого є одне з булевих значень true або false, а також будь-який вираз, результат обчислення якого може бути автоматично перетворений або до значення true, або до значення false. При цьому варто пам’ятати, що істинним є будь-яке значення, відмінне від нуля, а нульове значення трактується як хибне.
Наведена конструкція зручна у випадку, коли деяка дія повинна виконуватися тільки при позитивній відповіді на запитання і не виконуватися, якщо отримано негативну відповідь. Якщо ж при негативній відповіді необхідно виконати іншу дію, то оператор if доведеться повторити з умовою, протилежною умові, що перевіряється в першій конструкції:
if (вираз_умова) оператор_1
if (протилежна_умова) оператор_2
Більш загальною конструкцією є конструкція, ідея якої полягає в тому, щоб здійснювати перевірку не того, потрібно або не потрібно виконувати деяку дію, а того, яка із двох дій повинна бути виконана (див. рис. 1.1, б). При цьому обидві дії не виконуються ніколи.
Повна форма оператора if така:
if (вираз_умова) оператор_1
else оператор_2
Оператори, записувані після дужок, у які укладений вираз_умова, ва також після службового слова else (оператор, оператор_1 і оператор_2) можуть бути як простими операторами (але не описами та визначеннями), так і складеними операторами або блоками (тобто складеними операторами, що містять описи та визначення).
Складеним оператором називається послідовність операторів, укладена у фігурні дужки:
{оператори}
Якщо серед операторів, що утворюють складений оператор, є описи та визначення, то його називають блоком.
Рис. 1.1. Можливі схеми дії оператора if
Іноді деяку дію потрібно виконувати тільки при хибності виразу_умови. Тоді після дужок, у які укладений вираз_умова, вказують порожній оператор, позначуваний символом «точка з комою», що стоїть окремо:
if (вираз_умова);
else оператор
У цьому випадку більш розумно представити умову, що перевіряється, у вигляді протилежної умови:
if (протилежна_умова) оператор
Наприклад, еквівалентними за одержуваним результатом є такі дві конструкції:
if (x < x1); else z = x1;
та
if (x >= x1) z = x1;
Обидва оператора (оператор_1 і оператор_2), що фігурують в операторі if, можуть бути будь-якими операторами, у тому числі операторами, що перевіряють умову. Тому, якщо необхідно вибрати одну з декількох взаємовиключних альтернатив, використовують вкладений оператор if, формат якого наступний:
if (вираз_умова_1) оператор_1
else
if (вираз_умова_2) оператор_2
else оператор_3
або
if (вираз_умова_1)
if (вираз_умова_2) оператор_1
else оператор_2
else оператор_3
Відповідність між службовими словами if та else установлюється в такий спосіб: кожному if відповідає найближче наступне службове слово else, не задіяне при встановленні відповідності з іншимif.
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, що було обчислено.
Дата публикования: 2015-07-22; Прочитано: 260 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!