
- •Операції відношення
- •Цикл for
- •Ініціалізуючий вираз
- •Умова виконання циклу
- •Інкрементуючий вираз
- •Число виконань циклу
- •Кілька операторів в тілі циклу
- •Блоки і області видимості змінних
- •Виявлення помилок
- •Варіанти циклу for
- •Кілька ініціалізуючих виразів та умов циклу
- •Цикл while
- •Кілька операторів в циклі while
- •Пріоритети арифметичних операцій і операцій відношення
- •Цикл do
- •Вибір типу циклу
- •Розгалуження
- •Умовний оператор if
- •Кілька операторів в тілі if
- •If всередині циклів
- •Оператор if...Else
- •Функція getche()
- •Умова з присвоюванням
- •Вкладені розгалуження if...Else
- •Оператор switch
- •Оператор break
- •Інший варіант програми з використання switch і ключового слова default
- •Порівняння switch I if...Else
- •Умовна операція
- •Логічні операції
- •Операція логічного і
- •Цілі величини в якості булевих
- •Інші оператори переходу
- •Оператор break
- •Оператор continue
- •Оператор goto
- •Підсумок
- •Питання
Порівняння 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.