2. Логічні вирази
• Логічний вираз може набувати значення true або false.
• Логічні вирази бувають прості та складені
• Простий – це два арифметичні вирази, з'єднані символом
відношення
• Складений – це прості логічні вирази, з'єднані логічними
операціями
Увага! Логічним виразом може бути ціле число. Якщо воно не
дорівнює нулю, то значенням логічного виразу – true,
якщо це число 0 - false
3. Операції відношення
Операція Питання Приклад
== Два значення рівні? (i == 7)
!= Два значення не рівні? (a != b)
> Перше значення більше, ніж друге? (v>n)
< Перше значення менше, ніж друге? (x<34)
>= Перше значення більше або дорівнює другому? (s>=5)
<= Перше значення менше або дорівнює другому? (d<=4)
Приклад визначення результату порівняння:
Нехай a=1, b=7, тоді:
A==b →false; !(a==b) → true; a>=b → false; a!=b → true;
a+6==b → true; a<(b=1) → true; 2 → true; b → true
4. Завдання
Визначте значення наступних операцій порівняння:
Нехай a=1, b=2, c=-3; d=0.5
• ((a++) != 2)
• (b+=c )< (d*=c-a)
• (c/=b*3) == (d*=-1)
• (4/++a >= b)
• (b=2*a++) == (a=b--)
Для перевірки
клікнути
true
false (b=2=(-3)=-1 d=0.5*(-3-1)=-2)
true (c=-3/(2*3)=-0.5 d=0.5*(-1)=-0.5
true (4/2=2)
true (b=2*1=2 a=2)
5. Оператор розгалуження (коротка форма)
Загальний вигляд:
If (умова) оператор; або
if (умова) {оператор1; оператор2; оператор3;}
складений оператор
#include<iostream>
using namespace std;
int main()
{
float x,y=6.8;
cout<<“x=“;
cin>>x;
if(x>=y) cout<<“x>-y!”<<endl;
return 0;
}
#include<iostream >
using namespace std;
int main()
{
char game_end;
cout<<“prodovgimo gru? (t/n): “;
cin>>game_end;
if(game_end ==‘t’)
{ cout<<“Pravila gri:”<<endl;
cout<<“Opis :”<<endl; }
return 0;
}
6. Оператор розгалуження (повна форма)
Загальний вигляд:
If (умова) оператор1;else оператор2 або
if (умова) {оператор1_1; оператор1_2; } else {оператор2_1; oператор2_2;}
складені оператори
#include <iostream>
using namespace std;
int main()
{
int oc;
cout<<“vvedi ocinky: “; cin>>oc;
cout<<“Vasha ocinka ”<<oc<<
“ baliv”<<endl;
if(oc>=5)
{
cout<<“Zalik!”<<endl;
}
else
{
cout<<“NEzalik!”<<endl;
}
return 0;
}
7. Приклади дій команди розгалуження
Приклад 1. Нехай x=9
If (x>7) y=pow(x, 2); else y=sqrt(x);
If (x<=5) z=exp(x); else z=++x;
Отримаємо y=81, z=10, x=10
Приклад 2. Нехай x=10
If (x) y=x-10;
If (y) y+=2; else y=15;
Спочатку y=0 (оскільки x≠0), а потім y=15
Приклад 3. Нехай a=7
If (a>7) { y=a++;z=a+5;}
If (a<=9) z=++a/2; y=z+a;
Отримаємо z=(7+1)/2=4 a=7+1=8 y=4+8=12
Для перевірки клацнути
8. Команда ?
Команда ? Є аналогом команди розгалуження if.
Загальний вигляд команди:
умова ? вираз1: вираз2;
Дія команди:
Обчислюється значення логічного виразу-умови. Якщо воно істинне,
то повертається вираз1, інакше – вираз2.
Приклади:
1) x>y ? cout<<x : cout<<y; // значення більшого числа
2) Нехай с=10, тоді
x=(c==3) ? 2*c : c-2 //оскільки с≠3, обчислюється вираз2, отримаємо
х=8
12. Завдання
Складіть програми:
• Визначте чи деяка точка х належіть відрізку
[0;3)
• Визначте чи деяка точка х належіть відрізку
[2;14] або [20;25]
• Визначте чи деяка точка х належіть відрізку
[4;10] та [8;12]
• Визначте чи ділиться число а на 3 і на 5
• Визначте чи лежить точка (х;у) у другій чверті
13. Обробка декількох умов
Вкладені умови
cin>>v;
if (v<7.8)
cout<<“upade na Zemlyu” <<endl;
else if (v<11.2)
cout<<“suputnik Zemli” <<endl;
else if (v<16.4)
cout<<“suputnik Soncja” <<endl;
else
cout<<“pokinet sоnjachnu sistemu”
<<endl;
Введи v
V<7.8?
Впаде
На
Землю V<11.2?
супутник
Землі V<16.4?
супутник
Сонця
Покине
Сонячну
систему
так
так
так
ні
ні
ні
Для перевірки клацнути
14. Оператор switch-перемикач
Загальна структура оператора:
switch (Вираз)
{
case константний вираз1: оператори1;
break;
case константний вираз2: оператори2;
break;
…
case константний виразN: операториN;
break;
default: оператори;
}
Увага! Вираз та константні вирази повинні мати цілочисельний тип або
тип char.
15. Приклад
Нехай населені пукти
позначені номерами від 1
до 8. Вартість одного
квитка до конкретного
пункту визначається так:
до першого – 22 грн., до 2,
3 або 4 – 25 грн., до 5 або
6 – 30 грн., до 7 або 8 - 35
грн. Скільки
коштуватимуть m квитків
до населеного пункту,
номер k якого вводять з
клавіатури?
#include<iosream>
using namespace std;
int main()
{
int f,m; float cina;
cout<<“k= “<<endl; cin>>k;
cout<<“m= “<<endl; cin>>m;
switch (k)
{
case 1: cina=22; break;
case 2:
case 3:
case 4: cina=25; break;
case 5:
case 6: cina=30; break;
case 7:
case 8: cina=35; break;
default:
cout<<“error!”<<endl;
cina=0;
}
cout<<cina*m<<“grn”;
return 0;
}
Для перевірки клацнути
16. Команда безумовного переходу goto
Команда переходу має вигляд:
goto позначка;
Позначка може розміщуватись перед довільною командою у
програмі
позначка: команда;
Увага! Позначкою може бути лише ідентифікатор.
Приклад:
…
if (a==0) goto finish;
…
finish: a=3;
…
17. Завдання
• Складіть програму для пошуку у бібліотеці деякої книжки
за трьома параметрами : видавництво – “Деол”, рік
видання – 2003, автор – Новосад.
• Складіть програму для розв'язання квадратного рівняння
• Увести номер дня тижня. Вивести його назву двома
мовами: українською та англійською.
• Увести номер дня тижня. Вивести розклад занять у цей
день
• Написати програму, що вимагає уведення часу дня і,
залежно від уведеного значення, бажає доброго ранку,
доброго дня, доброго вечора або спокійної ночі.