Студопедия.Орг Главная | Случайная страница | Контакты | Мы поможем в написании вашей работы!  
 

Умовний оператор



Досить часто в програмі необхідно виконувати деякі дії в тому випадку, коли є істинною деяка умова. Найпростішим оператором, що використовується у цьому випадку, є оператор 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 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!



studopedia.org - Студопедия.Орг - 2014-2024 год. Студопедия не является автором материалов, которые размещены. Но предоставляет возможность бесплатного использования (0.009 с)...