
- •Лекция 5. Разветвляющиеся вычислительные процессы в
- •1.Исследование условного оператора if…else
- •2. Использование условного оператора if…else для 3-х интервалов значений переменой
- •5. Исследование вложенного условного оператора if…else
- •2. Оператор выбора switch
- •3. Безусловный оператор goto
- •Goto Метка;
- •Метка: оператор;
- •1. Структури потоку управління.
- •2. Умовний оператор if …else.
- •If (умова) оператор1; else оператор 2; .
- •If (умова)
- •If (умова) оператор1; else оператор 2;
- •If (умова) оператор 1;
- •3. Оператор вибору switch.
- •Vvedit zagolovnu bucvu alfavitu :
- •Voloshin
- •Vvedite zagolovnu bucvu alfavitu :
- •4. Безумовний оператор.
- •If (умова) оператор1; else оператор 2;
- •Питання для самоконтролю.
2. Умовний оператор if …else.
Умовний оператор реалізує структуру вибору. Форма запису оператора має вигляд:
If (умова) оператор1; else оператор 2; .
Якщо умова виконується (приймає значення «істина» - true), то виконується оператор 1. Якщо умова не виконується (приймає значення «неправда» - false) – виконується оператор 2.
Схема алгоритму виконання оператора if …else приведена на рис. 1.
Ні
Так
Рис.1. Схема алгоритму виконання оператора
Приклад запису умовного оператора: if (а > b) x= а; else x = b; .
Як вже було сказано, замість одиночного оператора завжди можна поставити блок з декількох операторів (в операторних (фігурних) дужках). Іншими словами, можлива наступна синтаксична форма запису оператора:
If (умова)
{оператори блоку if};
else
{оператори блоку else};
Приклад. Є два числа а і b. Якщо а > b, то поміняти їх місцями; інакше – присвоїти їм нулі.
if (а > b)
{
temp = а;
а = b;
b = temp;
}
else
{
а = 0;
b = 0;
}
При записі оператора if його частина else, може бути відсутня. Тоді, якщо умова не виконується (приймає значення false), виконується наступний оператор програми.
Приклад.
if (а > b)
{temp = а;
а = b;
b = temp; }
Відповідно до правила суперпозиції можна будувати вкладені if …else. Тобто в операторі
If (умова) оператор1; else оператор 2;
замість оператор1 і оператор 2 можна ставити будь які оператори мови С++, у тому числі і оператор if....else.
Наприклад.
If (умова) оператор 1;
else if (умова) оператор 2;
else if (умова) оператор 3;
.....................................
else оператор N;
У такій конструкції умови операторів if перевіряються зверху вниз. Як тільки яка-небудь з умов приймає значення «істина», виконується оператор, наступний за цією умовою, а вся решта конструкції буде пропущена.
Приклад. Задано три числа а, b, c. Необхідно визначити найбільше з них.
Фрагмент програми матиме вигляд.
max = c;
if ( а > b )
{
if ( а > c )
max = а;
}
else
if ( b > c )
max = b;
Умова оператора if може бути скільки завгодно складним виразом. Воно може містити операції відношення (операції порівняння), арифметичні операції, логічні операції, тощо. Але частіше за все воно містить операції порівняння. Вираз вважається істинним (true), якщо умова виконується, і помилковим (false) – якщо умова не виконується.
Приклади запису виразів.
if ( x )… - //якщо x не дорівнює нулю;
if ( !x ) … - // якщо x дорівнює нулю;
if ( b = = с ) … - //якщо b дорівнює с;
if ( b != с )… - //якщо b не дорівнює с;
if (x >= а && x <= b)… - //x належить відрізку ab.
!!! При записі виразів досить часто замість знака = = (дорівнює) записують знак = (присвоєння). Не слід забувати цієї різниці.
3. Оператор вибору switch.
Часто виникають ситуації, коли обчислення необхідно проводити не по двох гілках, як в операторі if …else, а по декількох (>=3).
У цьому випадку можна використовувати послідовно вкладені оператори if …else. Але використовування такої конструкції робить програму практично не читаною. Для подібних випадків у мові С (С++) існує спеціальний оператор вибору switch. Оператор switch записується таким чином.
switch (вираз)
{
case константний вираз 1: група операторів;
case константний вираз 2: група операторів;
.........................................
default: група операторів;
}
Конструкція switch є своєрідним перемикачем. Працює він таким чином. Спочатку обчислюється значення «виразу» в операторі switch. Потім набуте значення послідовно порівнюється з кожним з константних виразів. При збігу значень управління передається на відповідну групу операторів, тобто відбувається виконання відповідності операторів, наступних за двокрапкою. Якщо значення «виразу» не співпадає ні з одним з константних виразів, то управління передається на групу операторів, визначених ключовим словом default, або на наступний після конструкції switch оператор програми, якщо група default відсутня.
Під групою операторів мається на увазі просто один оператор або декілька довільних операторів. Група тут не зобов'язана бути блоком, тобто брати її в операторні дужки не потрібно.
Розглянемо приклад.
char ch;
cout << "Vvedit zagolovnu bucvu alfavitu :"<<endl;
cin >> ch;
if( ch >='A' && ch<='Z')
switch (ch)
{
case 'A':
cout<<"Avramenko"<<endl;
case 'B':
cout<<"Bugaenko"<<endl;
case 'G':
cout<<"Golovko"<<endl;
case 'V':
cout<<"Voloshin"<<endl;
default:
cout<<"Zuev"<<endl;
}
else
cout<<"Vvedite zagolovnu bucvu !"<<endl;
Після запуску програми і введення наприклад, букви В на екрані з'явиться результат: