Оператор розгалуження Максименко Марина Миколаївна вчитель інформатики вищої категорії, вчитель-методист Конотопської гімназії Конотопської міської ради Сумської області 2008 р.
Зміст Логічні вирази Операції відношення Завдання Оператор розгалуження (коротка форма) Оператор розгалуження (повна форма) Приклади дій команди розгалуження Команда ? Завдання Логічні операції Приклади Завдання Обробка декількох умов. Вкладені умови Оператор switch-перемикач Оператор switch-перемикач Команда безумовного переходу goto Команда безумовного переходу goto Завдання Література
Логічні вирази Логічний вираз може набувати значення true або false. Логічні вирази бувають прості та складені Простий – це два арифметичні вирази, з'єднані символом відношення Складений – це прості логічні вирази, з'єднані логічними операціями Увага! Логічним виразом може бути ціле число. Якщо воно не дорівнює нулю, то значенням логічного виразу – true, якщо це число 0 - false
Операції відношення ОпераціяПитанняПриклад == Два значення рівні? (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
Завдання Визначте значення наступних операцій порівняння: Нехай 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--) Для перевірки клацнути false (a=1+1=2) 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)
Оператор розгалуження (коротка форма) Загальний вигляд: If (умова) оператор; або if (умова) {оператор1; оператор2; оператор3;} складений оператор #includ int main() { float x,y=6.8; cout<<x=; cin>>x if(x>=y) cout -y!<<endl; getch(); return 0; } #includ int main() { char game_end;; cout<<prodovgimo gru? (t/n): ; cin>>game_end; if(game_end ==t) { cout<<Pravila gri:<<endl; cout<<Opis :<<endl; } getch(); return 0; }
Оператор розгалуження (повна форма) Загальний вигляд: If (умова) оператор1;else оператор2 або if (умова) {оператор1_1; оператор1_2; } else {оператор2_1; oператор2_2;} складені оператори #includ int main() { int oc; cout >oc; if(oc>=5) { cout<<Vasha ocinka <<oc< baliv<<endl; cout<<Zalik!<<endl; } else { cout<<Vasha ocinka <<oc< baliv<<endl; cout<<NEzalik!<<endl; } getch(); Return 0; }
Приклади дій команди розгалуження Приклад 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=9 If (x) y=x-10; If (y) y+=2; else y=15; Спочатку y=0 (оскільки x0), а потім 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 Для перевірки клацнути
Команда ? Команда ? Є аналогом команди розгалуження if. Загальний вигляд команди: умова ? команда1 або вираз1: команда2 або вираз2; Дія команди: Обчислюється значення логічного виразу-умови. Якщо воно істинне, то виконується команда1 або вираз1, інакше – команда2 або вираз2. Приклади: 1) x>y ? cout<<x : cout<<y; // значення більшого числа 2) Нехай с=10, тоді x=(c==3) ? 2*c : c-2 //оскільки с3, обчислюється вираз2, отримаємо х=8
Завдання Складіть програми перевірки: Чи є число а парним Чи ділиться число а без остачі на 3 Ввести два цілих числа. Знайти більше з них Обчислити значення функції Чи є точка(х;у) у крузі одиничного радіуса з центром у початку координат
Логічні операції Вираз (не)Значення !truefalse !falsetrue Вираз (і)Значення true && truetrue true && falsefalse false && truefalse false && falsefalse Вираз (або)Значення true || truetrue true || falsetrue false || truetrue false || falsefalse пріоритетопераціяназва 1!не 2&&і 3||або
Приклади Приклад визначення результату логічного виразу: Нехай a=1, b=7, тоді: a>=-3 && a<=2 true; a>=0 && b<=4) false; b 15 true; !(a =10) true; a!=b || a+15>b && b<0 true; (a!=b || a+15>b) && b<0 false;
Завдання Складіть програми: Чи деяка точка х належіть відрізку [0;3) Чи деяка точка х належіть відрізку [2;14] або [20;25] Чи деяка точка х належіть відрізку [4;10] та [8;12] Чи ділиться число а на 3 і на 5 Чи є точка (х;у) у другій чверті
Обробка декількох умов Вкладені умови 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 snjachnu sistemu <<endl; Введи v V<7.8? Впаде На Землю V<11.2? супутник Землі V<16.4? супутник Сонця Покине Сонячну систему так ні Для перевірки клацнути
Оператор switch-перемикач Загальна структура оператора: switch (Вираз) { case константний вираз1: оператори1; break; case константний вираз2: оператори2; break; … case константний виразN: операториN; break; default: оператори; } Увага! Вираз та константні вирази повинні мати цілочисельний тип або тип char.
Приклад Нехай населені пукти позначені номерами від 1 до 8. Вартість одного квитка до конкретного пункту визначається так: до першого – 22 грн., до 2, 3 або 4 – 25 грн., до 5 або 6 – 30 грн., до 7 або грн. Скільки коштуватимуть m квитків до населеного пункту, номер k якого вводять з клавіатури? #includ int main() { int f,m; float cina; cout >k; cout >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; getch() return 0; } Для перевірки клацнути
Команда безумовного переходу goto Команда переходу має вигляд: goto позначка; Позначка може розміщуватись перед довільною командою у програмі позначка: команда; Увага! Позначкою може бути лише ідентифікатор. Приклад: … if (a==0) goto finish; … finish: getch(); …
Завдання Складіть програму для пошуку у бібліотеці деякої книжки за трьома параметрами : видавництво – Деол, рік видання – 2003, автор – Новосад. Складіть програму для розв'язання квадратного рівняння Увести номер дня тижня. Вивести його назву двома мовами: українською та англійською. Увести номер дня тижня. Вивести розклад занять у цей день Написати програму, що вимагає уведення часу дня і, залежно від уведеного значення, бажає доброго ранку, доброго дня, доброго вечора або спокійної ночі.
Література Лєхан С.Ф. Інформатика С++. Спецкурс класи. – Шепетівка; Аспект, Глинський Я.М., Анохін В.Є., Ряжська В.А. С++ і С++ Builder. Навчальний посібник. – Львів: СПД Глинський, Глушаков С.В., Смирнов С.В., Коваль А.В. Практикум по С++. – Харьков: Фолио, Павловская Т.А. С/С++. Программирование на языке высокого уровня. – СПб.: Питер, 2003