Professional Documents
Culture Documents
Лекція 3
Лекція 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
Основи програмування
Умови
Пріоритет порівнянь нижчий за пріоритет
+ , - , << і вищий за пріоритет &&, ||.
Оператори: > , >= , < , <=мають вищий пріоритет
ніж == та != , а &&– вищий ніж ||.
Основи програмування
Умовний оператор 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.
•Такі ланцюжки зручно використовувати при
вирішенні багатоваріантних задач.
Основи програмування
Умовний оператор if…else
if <умова1>
<оператор 1>
else if <умова2>
<оператор 2>
else if <умова3>
<оператор 3>
…
else <оператор N>
Основи програмування
Тернарний оператор ? : в 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…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 !.
Основи програмування