You are on page 1of 42

Тема 3.

Умовні оператори
мови C++
«Основи програмування»
для спеціальності
121 – Інженерія програмного
забезпечення
Умови
•Операції порівняння
• Двомісні операції порівняння мають знаки
• ==, !=, >, <, >=, <=
•("дорівнює", "не дорівнює", "більше", "менше",
•"більше або дорівнює", "менше або дорівнює").
•Результатом порівняння є false ("хибність") або
true ("істина") є значення логічного типу bool.

Основи програмування
Умови
Наприклад:
• Вирази 1==2 та 'A'=='a' мають значення false,
вирази 1 != 2 та 1 >= 1 – значення true.
Значенням виразу
sizeof(b*b - 4*a*c) > 0, є true.
• Значенням виразу:
b*b - 4*a*c > 0,
за a == 1, b == 5, c == 4 є true,
за a == 1, b == 2, c == 1 та a == 1, b == 1, c ==
1 – false.
Основи програмування
Умови
Логічні операції
Двомісні операції "і", "або" та одномісна "не"
(відповідно булеве множення, або кон'юнкція, булеве
додавання, або диз'юнкція і заперечення) у логіці й
математиці називаються булевими, або логічними і
застосовуються до булевих значень.
У мові С++ мають знаки:
&&, || та !,
застосовуються до значень логічного типу й
породжують значення false або true.

Основи програмування
Умови
A B A && B A || B !A

false false false false true

false true false true true

true false false true false

true true true true false

Основи програмування
Умови
Пріоритет порівнянь нижчий за пріоритет
+ , - , << і вищий за пріоритет &&, ||.
Оператори: > , >= , < , <=мають вищий пріоритет
ніж == та != , а &&– вищий ніж ||.

• Ураховуючи пріоритети операцій, вираз


(k > 0) && (d > 0) можна записати як
k > 0 && d > 0, але перша форма запису
сприймається людиною краще.
Основи програмування
Умови
Математичну умову 𝑥 < 𝑦 < 𝑧 можна
записати мовою C++ як
(x < y) && (y < z).
Запис x < y < z виражає зовсім іншу умову, а
саме 𝑥 < 𝑦 < 𝑧. Обчислимо вираз:
(-3 < -2)< -1.
Значенням виразу (-3 < -2) є true.
Далі обчислюємо true < -1, починаючи зі зведення
аргументів порівняння до типу int, тобто в кінці
обчислюється 1 < -1 і його
значенням є false. Проте з погляду
математики запис -3 < -2 < -1 істинний.
Основи програмування
Умови
Математичну умову 𝑥 = 𝑦 = 𝑧 того, що числа
x, y, z попарно рівні між собою, можна
записати мовою C++ як:
(x == y) && (y == z).
Для дійсних змінних x, y, z вираз x = y = z
еквівалентний виразу x = (y = z) і задає
присвоювання значення змінної z змінним y
та x; його результатом буде значення змінної
z– деяке дійсне число
Основи програмування
Умови
Умовні вирази
Вирази, що можуть бути або істинними, або
хибними, називаються умовними, або
умовами.

Умову часто використовують як ознаку деякої


властивості.

Наприклад. Умовою того, що значення цілої


змінної a парне (ділиться на 2 без остачі), є те, що
воно дає остачу 0 від ділення на 2:
a % 2 == 0.
Основи програмування
Умови
Складніші умови формулюють як системи або
сукупності, складені з простіших умов.
Системи умов записують мовою С++ за
допомогою операції &&, сукупності – за
допомогою ||.
Наприклад. Умовою того, що число x належить
проміжку [𝑎; 𝑏] , є математичний вираз 𝑎 ≤ 𝑥 ≤
𝑏. Виразимо її так:
(a <= x) && (x <= b).

Основи програмування
Умовний оператор if…else
Умовні оператори використовуються для
програмування алгоритмів з розгалуженнями.
•Оператор if ... else дозволяє вибрати один з двох
можливих варіантів виконання програми.

if ( <умова> )
<оператор 1>
else <оператор 2>
• якщо результат “true”, то виконується <оператор 1>;
• якщо результат “false”, то виконується <оператор 2>, що
розташований за словом else
Основи програмування
Умовний оператор if…else
Рівняння 𝑎𝑥 + 𝑏 = 0, залежно від конкретних
значень a, b, може розв'язуватися одним із
трьох способів.
Спосіб обирається після визначення, чи
справджується умова 𝑎 ≠ 0;
якщо це не так – то чи дійсна умова 𝑏 = 0.
Розглянемо засоби, що дозволяють вказати
вибір способу обчислень залежно від тих або
інших умов, і скористаємося ними для
розв'язання рівняння.
Основи програмування
Умовний оператор if…else
•Інструкція розгалуження в повній формі має
вигляд
•if (умова) інструкція1 else інструкція2
Слова if та else є зарезервованими, дужки
навколо умови обов'язкові.
Інструкція виконується так. Обчислюється
значення умови. Якщо це true, то виконується
інструкція1 і виконання закінчується.
Якщо ж це false, то виконується
інструкція2, записана після else. Основи програмування
Умовний оператор if…else

Основи програмування
Умовний оператор if…else
Скорочена форма інструкції розгалуження:
if (умова) інструкція
Якщо обчислення умови дає значення false, то
виконання інструкції розгалуження
закінчується (рис. б), інакше виконується
інструкція.

Основи програмування
Умовний оператор if…else
• Оператор if, як повний так і скорочений,
може бути вкладений у інший оператор if.
• При цьому слід пам’ятати, що кожна else-
частина пов’язується з найближчим if.
• Якщо ж else-частина відноситься до одного з
попередніх if, то слід застосовувати фігурні
дужки.

Основи програмування
Умовний оператор if…else
if <умова1>
{
< оператор 1.1>;
if <умова2>
{
<оператор 2.1>;
}
еlse // для умови 2
{
<оператор 2.2>;
}
< оператор 1.2>;
}
else // для умови 1
}
< оператор 1.3>;
}

Основи програмування
Умовний оператор if…else
•Більш зручними і наочними є ланцюжки повних
операторів if, в яких після кожного слова else (за
винятком останнього) знову йде повний оператор if,
рисунок 4.6.
•Такі ланцюжки зручно використовувати при
вирішенні багатоваріантних задач.

Вони досить легко аналізуються, за структурою подібні


до оператору swith, і їх можна застосовувати, на
відміну від нього, для перевірки будь-яких умов.

Основи програмування
Умовний оператор if…else
if <умова1>
<оператор 1>
else if <умова2>
<оператор 2>
else if <умова3>
<оператор 3>

else <оператор N>

Основи програмування
Тернарний оператор ? : в C++
• Використовується він зазвичай в тих випадках, коли умова та код,
який треба виконати, в результаті перевірки умови, дуже прості.
Наприклад, запитати у користувача хоче він продовжити працювати
в програмі або ж хоче вийти з неї. Синтаксис такий:

умова ? команда1 : команда2;

• Спочатку треба записати необхідну нам умову й за нею поставити


знак питання? Далі, в цьому ж рядку, після знака питання пишемо
першу просту команду, яка буде виконуватися, якщо умова поверне
істину (true). После цієї команди ставимо двокрапку: і пишемо
другу команду. Ця друга команда після двокрапки, виконається
тільки в тому випадку, якщо умова повертає хиба (false).
Тернарний оператор ? : в C++

• Тернарного оператором в якості значення


повертається значення обчисленого виразу.

• У програмі командою
x = n> 0? 5.4: 3.2;
перевіряється умова n> 0, і якщо це так,
повертається значення 5.4. В іншому випадку
повертається значення 3.2.
Оператор вибору switch…case
Оператор вибору switch дозволяє обрати один
варіант ходу розв’язку задачі з декількох в
залежності від значення виразу. Таким чином
забезпечується багатонаправлене розгалуження.
Оператор switch може бути замінений оператором
if. Однак, у деяких випадках використання
оператора switch може бути більш ефективним, ніж
використання оператора if.

Основи програмування
Оператор вибору switch…case
Синтаксис оператору switch…case наступний:

Основи програмування
Оператор вибору switch…case
• вираз – деякий вираз цілочисельного (int) або
символьного типу (char);
• константа1, константа2, …, константа n – константні
значення, з якими порівнюється значення виразу.
• константа – це мітка даного варіанту, яка може бути
константою або виразом.
• Останній варіант, що починається словом default, не
є обов’язковим. Мітка відділяється від оператора
двокрапкою.
• оператор – визначає дії, які повинні бути виконані,
якщо < вираз > приймає значення константи.
Основи програмування
Оператор вибору switch…case
Слова switch, case, default є зарезервованими; вони позначають
відповідно "перемикач", "випадок", "за відсутності".
switch (вираз)
{
case константа1:
послідовність_операторів1;
break;
case константа2:
послідовність_операторів2;
break;
...
case константаN:
послідовність_операторівN;
break;
default
послідовність_операторів;
} Основи програмування
Оператор вибору switch…case
Інструкція break; закінчує виконання інструкції, в
якій її записано.
Вираз у дужках після слова switch називається
селектором варіантів.

Основи програмування
Оператор вибору switch…case
Оператор switch працює наступним чином:
На початку обчислюється значення <вираз>. Потім
це значення послідовно порівнюється з
константами з заданого списку.
Як тільки знайдене співпадіння для однієї з умов
порівняння (гілка case), виконується послідовність
інструкцій, що зв’язані з цим порівнянням.
Якщо не знайдено жодного співпадіння, то
виконуються оператори, що слідують після
ключового слова default.
Основи програмування
Оператор вибору switch…case
Ключове слово case використовується для того, щоб
вказати значення константи, при співпадінні з якою
значення виразу, буде виконуватись відповідна
послідовність операторів.
Операція break перериває (закінчує) виконання
коду, що визначений інструкцією switch.
Операції, що розміщені після ключового слова
default, виконуються в тому випадку, якщо жодна з
case-констант не співпадає з результатом
обчислення switch-виразу.

Основи програмування
Оператор вибору switch…case

Основи програмування
Оператор вибору switch…case
Приклад.
Дано значення n = 1..7, що є номером дня тижня. За
значенням n визначити, вихідний цей день чи
робочий. Результат записати в змінну fDayOff типу
bool.

Основи програмування
Оператор вибору switch…case
int day; break;
bool fDayOff;
  case 4:
day = 3; fDayOff = false;
  break;
switch (day) case 5:
{ fDayOff = false;
case 1: break;
fDayOff = false; case 6:
break; fDayOff = true;
case 2: break;
fDayOff = false; case 7:
break; fDayOff = true;
case 3: break;
fDayOff = false; } Основи програмування
Оператор вибору switch…case
int day; break;
bool fDayOff;
day = 7; case 6:
  case 7:
switch (day) fDayOff = true;
{ break;
case 1: }
case 2:
case 3:
case 4:
case 5:
fDayOff = false;
Основи програмування
Оператор вибору switch…case
int day;
bool fDayOff;
 
day = 7;
 
switch (day)
{
case 6:
case 7:
fDayOff = true;
break;
default:
fDayOff = false;
} Основи програмування
Оператор вибору switch…case
Особливості використання операції break в операторі
switch

• В операторі switch операція break не є обов’язковою.


• Якщо операція break є присутньою, то відбувається
вихід з оператору switch і виконання наступного за ним
оператору.
• Якщо операція break у case-гілці відсутня, тоді
виконуються усі оператори, що зв’язані з даною case-
гілкою а також усі оператори, що слідують одразу після
неї до тих пір, поки не зустрінеться інша інструкція
break або не буде досягнуто кінець switch-оператора.
Основи програмування
Оператор вибору switch…case
• Особливість механізму виходу з оператора switch
(мається на увазі вихід з оператора за допомогою
інструкції break) дозволяє об'єднувати кілька case-
умов.
• Розглянемо це на прикладі чисел Фібоначчі.

Нагадаємо, що послідовність Фібоначчі виходить


так: перші два числа послідовності рівні 1, а кожне
наступне дорівнює сумі двох попередніх. Початкові
числа в послідовності Фібоначчі, таким чином, рівні
1, 1, 2, 3, 5 і 8 (це ті числа, що потрапляють в
діапазон від 0 до 10).
Основи програмування
Оператор вибору switch…case
#include <iostream>
using namespace std;
int main(){
int n; case 5:
cout<<"Enter number from 0 to 10: "; case 8:
cin>>n; cout<<"This is Fibonacci number!\
switch(n){ n";
case 0: break;
cout<<"The number is zero!\n"; default:
break; cout<<"This is integer number!\n";
case 1: }
case 2: return 0;
case 3: }
Основи програмування
Оператор вибору switch…case
• У процесі виконання програми користувачеві
пропонується ввести ціле число в діапазоні від 0 до
10.
• Число зчитується з клавіатури і виконується
перевірка на предмет того, чи є воно нулем і чи
належить послідовності чисел Фібоначчі.
• Після введення числа з клавіатури воно
записується в цілочисельну змінну n. Значення
змінної перевіряється в операторі switch ().

Основи програмування
Оператор вибору switch…case
• Перший case-блок оператора відповідає ситуації,
коли користувачем введено нульове значення.
• Якщо значення змінної n дорівнює 0, на екран
виводиться повідомлення The number is zero !.
Завдяки інструкції break після оператора
виведення зазначеного повідомлення, робота
switch-оператора на цьому завершиться.

Основи програмування
Оператор вибору switch…case
• Якщо ж було введено нульове значення, перший
case-блок не виконується. Замість цього буде
продовжена перевірка значення змінної n на
предмет збігу з одним зі значень 1, 2, 3, 5 або 8.
• Звернемо увагу на ту обставину, що case-блоки для
значень 1, 2, 3 і 5 є порожніми, тобто після
інструкції case із зазначенням відповідного
значення відразу слід наступна case-інструкція.

Основи програмування
Оператор вибору switch…case
Оскільки у switch-операторі команди виконуються
до першої інструкції break (або до закінчення всього
оператора), такий синтаксис призводить до того, що
для значень 1, 2, 3, 5 і 8 змінної n виконується одна і
та ж послідовність команд – це ті команди, що
вказані в case-блоці для значення змінної n рівного
8: з'явиться повідомлення This is Fibonacci number! і
робота switch-оператора буде завершена (через
інструкції break після команди cout << "This is
Fibonacci number! \ n").

Основи програмування
Оператор вибору switch…case
• Наприклад, якщо користувач ввів число 1,
відповідно до наведеного в лістингу 2.4
програмним кодом повинні виконуватися всі
команди після інструкції case 1: у switch-операторі.
• Команди виконуються до першої інструкції break
(або, якщо не зустрінеться ні одна інструкція break,
до кінця всього switch-оператора). Оскільки перша
інструкція break зустрічається в блоці case 8 :,
будуть виконані всі команди, що знаходяться між
інструкцією case 1: і цією інструкцією break.

Основи програмування
Оператор вибору switch…case
• Нарешті, якщо користувач ввів нульове число, що
не співпадає з числами 1, 2, 3, 5 і 8, виконується
блок команд, розміщених після інструкції default.
• В даному випадку там всього одна команда, якій
на екран виводиться повідомлення This is integer
number !.

Основи програмування

You might also like