Translate

Логічний оператор if

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

Припустимо, ми хочемо з даного числа x визначити його абсолютну величину (модуль). Для цього необхідно порушити лінійну логіку програми. Програма повинна надрукувати значення змінної x, якщо x > 0 або ж величину -x в іншому випадку. Лінійна структура програми порушується: в залежності від справедливості умови x > 0 має бути виведена одна або інша величина. Відповідний фрагмент програми на C ++ має вигляд:

     double x;
     cin>>x;
     if (x>0)
     {
         cout<<x;
     }
     else
     {
         cout<<-x;
     }
     return 0;



У цій програмі використовується умовна інструкція if (якщо). Після слова if в обов'язкових круглих дужках вказується перевіряється умова (x > 0). Після цього в фігурних дужках йде блок (послідовність) інструкцій, який буде виконаний, якщо умова істинна, в нашому прикладі це вивід на екран величини x. Потім йде слово else (інакше) і після нього блок інструкцій, який буде виконаний, якщо перевіряється умова невірно.

Отже, умовна інструкція в C ++ має наступний синтаксис:

       if  (Умова)
     {
         Блок інструкцій 1
     } 
     else
     {
         Блок інструкцій 2
     }

Блок інструкцій 1 буде виконано, якщо Умова істинна. Якщо Умова помилкова, буде виконаний Блок інструкцій 2.

В умовної інструкції може бути відсутнім слово else і наступний блок. Така інструкція називається неповним розгалуженням. Наприклад, якщо дано число x і ми хочемо замінити його на абсолютну величину x, то це можна зробити наступним чином:

     if (x <0)
     {
         x = -x;
     }


У цьому прикладі змінної x буде присвоєно значення -x, але тільки в тому випадку, коли x <0.

Вкладені оператори
Усередині умовних інструкцій можна використовувати будь-які інструкції мови C ++, в тому числі і умовну інструкцію. Отримуємо вкладене розгалуження - після однієї розвилки в ході виконання програми з'являється інша розвилка. Покажемо це на прикладі програми, яка за даними ненульовим числах x і y визначає, в який з чвертей координатної площині знаходиться точка (x, y):

         double x,y;
     cin>>x>>y;
     if (x>0)
     {
         if (y>0)   // x>0, y>0
         {
             cout<<"Первая четверть"<<endl;
         }
         else       // x>0, y<0
         {
             cout<<"Четвертая четверть"<<endl;
         }
     }
     else
     {
         if (y>0)   // x<0, y>0
         {
             cout<<"Вторая четверть"<<endl;
         }
         else       // x<0, y<0
         {
             cout<<"Третья четверть"<<endl;
         }
     }

У цьому прикладі ми використовували коментарі - текст, який компілятор ігнорує. Коментарями в C ++ є послідовність символів // і весь текст після цього символу до кінця рядка. Зверніть також увагу на відступи на початку рядків, які використовуються для полегшення розуміння тексту.

Оператори порівняння
Як перевіряється умови повинно використовуватися вираз логічного типу bool. Змінні логічного типу приймають два значення: true (істина) і false (брехня). Також будь-целочисленное вираз можна трактувати, як логічне вираження, при цьому нульовий ціле число означає брехня, а ненульове - істину. Таким чином, якщо замість умови написати false або 0, то воно буде завжди помилково, якщо ж вказати true, 1 або будь-ненульове число, то умова буде істинно.


Як правило, в якості перевіряється умови використовується результат обчислення одного з наступних операторів порівняння:

<
Менше - повертає true, якщо перший операнд менше другого.
>
Більше - повертає true, якщо перший операнд більше другого.
<=
Менше або дорівнює.
> =
Більше або дорівнює.
==
Рівність. Повертає true, якщо два операнда рівні.
! =

Нерівність. Повертає true, якщо два операнда нерівні.

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

Немає коментарів:

Дописати коментар