Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекція 21-24.doc
Скачиваний:
0
Добавлен:
01.04.2025
Размер:
181.25 Кб
Скачать

Порівняння switch I if...Else

Коли краще використовувати порівняння if...else, а коли switch? При використанні if...else можна перевіряти значення різних не зв’язаних одна з одною змінних, причому порівняння можуть бути як завгодно складними. Натомість, в операторі switch всі розгалуження використовують одну і ту ж змінну, єдина можливість перевірки в такому розгалуженні – порівняння значення змінної з певною константою. Зокрема, неможливо виконати таку перевірку:

case a<3

//operator

break;

Спільно з case можуть використовуватися константи, що мають цілий або символьний тип, наприклад, 3 або ’а’, або ж константні вирази, що приводять до обчислення значення одного з цих типів. Тому switch є «вузькоспеціалізованим» оператором, але в межах своєї спеціалізації – дуже зручним.

Умовна операція

Ця операція виконує дещо нетипові дії. Існує поширена в програмуванні ситуація: змінній потрібно присвоїти одне значення при виконання умови і інше значення при невиконанні умови (функція ЕСЛИ в Excel працює саме за таким принципом).

Без використання спеціальної операції, це можна реалізувати так:

if (alpha<beta)

min=alpha;

else

min=beta;

Подібні дії є настільки поширеними, що для них існує спеціальна умовна операція, вона записується за допомогою двох знаків і використовує три операнди. Це єдина операція С++, яка використовує більше двох операндів. З її допомогою попередній фрагмент може бути записаний так:

min=(alpha<beta)?alpha:beta;

Знак питання ? і двокрапка : означають умовну операцію. Умова стоїть перед знаком питання

(alpha<beta)

Дужки навколо умови не обов’язкові, але їх досить часто ставлять, щоб спростити візуальне сприймання оператора.

Логічні операції

Досі ми використовували лише два типи операцій: арифметичні і операції відношення. Розглянемо третю групу операцій, які називаються логічними.

В C++ існують три логічні операції

Операція

Назва

&&

Логічне І

||

Логічне Або

!

Логічне Ні

Операція логічного і

Логічне і – це операція, результат якої є істинним тоді і лише тоді, коли істинними є обидва її операнди. Для позначення цієї операції в С++ використовується комбінація символів &&.

Приведемо приклад програми, що використовуєю цю операцію (це розширення одної з попередніх програм).

#include <iostream>

using namespace std;

#include <conio.h>

int main()

{char dir=’a’;

int x=10,y=10;

cout<<”Natysnit Enter dlia vyhodu \n”;

while (dir!=’\r’) // доки не натиснута клавіша Enter

{cout<<”\n Koordynaty “<<x<<” , “<<y;

cout<<”Vvedit napriamok (n,s,e,w) “;

dir =getche();

switch(dir)

{case ‘n’: y--; break;

case ’s’: y++; break;

case ’e’: x++; break;

case ’w’: x--; break;

case ‘\r’:cout<<”Vyhid...\n”;break;

default: cout<<”Repeat\n”;

}

if (x==7 && y==11)

{cout<<”Wy znajszly skarb\n”;

exit(0);

}

}

return 0;

}

В даній програмі ключовим є вираз:

if (x==7 && y==11)

Умова, приведена в цьому виразі, буде істинною тоді, коли істинні обдві її частини: x=7, y=11.

Звернемо увагу на те, що використання внутрішніх дужок

if ((x==7) && (y==11))

не обов’язкове, оскільки операція порівняння мають більш високий пріоритет порівняно з логічними.

Логічне Або

Ця операція істинна тоді, коли істинний хоч один з її операндів. Продемонструємо механізм її дії, ще трохи підкорегувавши попередню програму. Нехай нам видається спеціальне попередження, якщо ми по горизонталі зайшли задалеко вліво або вправо і можемо перетнути допустиму межу (від 0 до 80)

#include <iostream>

using namespace std;

#include <conio.h>

int main()

{char dir=’a’;

int x=10,y=10;

cout<<”Natysnit Enter dlia vyhodu \n”;

while (dir!=’\r’) // доки не натиснута клавіша Enter

{cout<<”\n Koordynaty “<<x<<” , “<<y;

cout<<”Vvedit napriamok (n,s,e,w) “;

dir =getche();

switch(dir)

{case ‘n’: y--; break;

case ’s’: y++; break;

case ’e’: x++; break;

case ’w’: x--; break;

case ‘\r’:cout<<”Vyhid...\n”;break;

default: cout<<”Repeat\n”;

}

if (x==7 && y==11)

{cout<<”Wy znajszly skarb\n”;

exit(0);

}

if (x<5 || x>75)

cout<<”Oberezno – mezi!\n”;

}

return 0;

}

Логічне Не

Операція логічного Не є унарною, тобто має лише один операнд. Дія операції ! полягає в тому, що вона змінює значення свого операнда на протилежне.

Наприклад, вираз !(x==7) еквівалентний виразу x!=7.