
КТ_Турбо_Паскаль_лекция_4.ppt
- Количество слайдов: 22
4. ОРГАНІЗАЦІЯ РОЗГАЛУЖЕННЯ МОВОЮ ПАСКАЛЬ 4. 1. Структурні оператори. Умовний оператор if…then…else 4. 2. Вкладені оператори if…then…else для організації складних розгалужень 4. 3. Організація розгалуження за вибором альтернатив. Оператор case. . . of…end
4. 1. Структурні оператори. Умовний оператор if…then…else Розгалужена структура мовою Паскаль задається за допомогою структурних операторів. Структурні оператори будуються за допомогою спеціальних зарезервованих слів, логічних виразів та інших операторів. Такий оператор явно чи неявно містить одну чи декілька логічних перевірок.
Умовний оператор: if <логічний вираз> then <оператор1> else <оператор2>; Логічний вираз набуває одне з двох можливих значень: True (істина), False (хибно). Якщо логічний вираз набуває значення «істина» , то виконується оператор1, інакше – оператор2. ! Зауваження. Перед ELSE не ставиться «; » . Згідно формальних правил мови, після THEN та ELSE допускається застосування лише одного оператора. Але на практиці частіше виникають ситуації, коли при виконанні умови у логічному виразі слід виконати кілька операторів. В цьому випадку використовується складовий оператор (begin … end; ).
Приклад 4. 1. 1. Визначити min з двох чисел a та b. Вхідні дані: а, b. Вихідне дане: min. Початок Введення a, b так ні a
Program pr 4. 1. 1; var a, b, min: real; begin writeln(‘vvod a, b'); readln(a, b); if a
Оператор if…then Оператор if. . then є скороченою версією оператора if. . then. . else та використовується у випадку, коли дія виконується тільки при виконанні деякої умови. так if <логічний вираз> then <оператор1>; ні <наступний оператор>
Приклад 4. 1. 2. Якщо число а – парне, вивести його значення на екран. Вхідне дане: а. Вихідне дане: а. Початок Введення a ні a-парне так а Кінець
Program pr 4. 1. 2; uses crt; var a: integer; begin clrscr; write(‘vved a '); readln(a); if a mod 2 = 0 then writeln('a=', a); writeln('Press “ENTER” '); readln; end.
4. 2. Вкладені оператори if…then…else if <умова 1> then <оператор1> else if <умова 2> then <оператор 2> else if <умова 3> then <оператор 3>. . . else if <умова n> then <оператор n>;
• Якщо вирази умови 1, . . . , умови n незалежні, то має сенс розташовувати їх в тому порядку, щоб вираз з найбільшою ймовірністю приймаючий значення істина стояв на першому місці, вираз з меншою імовірністю - на другому і т. д. Це скорочує час виконання програми. ! Зауваження. Слід пам’ятати, що кожному else відповідає найближчий попередній if, який не має іншого else. • Якщо потрібно змінити послідовність дій, можна використати операторні дужки Begin … End;
Приклад 4. 2. 1. Обчислити значення змінної y, заданої формулами: x 2, x<0 Y= 1/x 2 , x>2 √ 2, xє[0, 2] Вхідне дане: х. Вихідне дане: y. y 0 2 x
Початок Х так ні X<0 y=x 2 ні y=√ 2 x, y Кінець так X>2 y=1/x 2
Program pr 4. 2. 1; uses crt; var x, y: real; BEGIN clrscr; Writeln('введіть X'); readln(x); if x<0 then y: =sqr(x) else if x>2 then y: =1/sqr(x) else y: =sqrt(2); writeln('x= ', x: 4: 2, ' y= ', y: 4: 2); write('натисніть “ENTER” '); readln END.
Приклад. Обчислити корінь квадратичного рівняння y=ax 2+bx+c Вхідні дані: а, b, с. Вихідні дані: х1, 2. Математична постановка задачі: • обчислюємо D=b 2 - 4 ac • якщо D<0 – немає дійсних коренів; • якщо D≥ 0, а=0, то рівняння має корінь x=-c/b • якщо D≥ 0, a≠ 0, то рівняння має два корені: х1, 2= -b±√D/2 a
Початок 1 a, b, c D<0 ні D=b 2 -4 ac 1 ні так а=0 Немає рішень x 1= -(b+√D)/(2 a) x 2= -(b-√D)/(2 a) Х 1, х2 Кінець так x=-c/b х
program Root; if a=0 then uses crt; begin x: =-c/b; var a, b, c, D, x, x 1, x 2: real; write('x= ', x: 4: 3) BEGIN end clrscr; else writeln('введіть a, b, c'); begin readln(a, b, c); x 1: =(-b+sqrt(D))/(2*a); x 2: =(-b-sqrt(D))/(2*a); D: =sqr(b)-4*a*c; write('x 1=', x 1: 4: 3, 'x 2=', if D<0 then x 2: 4: 3) write('рівняння не має end дійсних коренів') END. else
4. 3. Організація розгалуження за вибором альтернатив. Оператор case. . . of…end • Для ситуацій, де є декілька (три або більше альтернатив), використовується оператор case, оскільки оператор if дозволяє обирати лише одну з двох можливих дій. • Оператор case називається оператором вибору.
Оператор case. . . of…end Case <вираз> of <список констант1>: <оператор1>; <список констант2>: <оператор2>; . . . ; <список констант. N>: <оператор. N>; [else <оператор>; ] end;
• Вираз – це може бути проста змінна або арифметичний чи логічний вираз; значення виразу може бути цілого, символьного або логічного типу. • Обчислення значення виразу визначає константу, за якою визначається список, де є відповідна константа. Виконується оператор, який відповідає списку. • Якщо значення виразу відсутнє в списках значень, то жодний оператор не виконується. В цьому випадку виконується гілка else.
Приклад 4. 3. 1. a 2 С= a-3 a+3 0 якщо а=1, 2, 3 якщо а=4, 5, 6 якщо а=7, 8, 9 у протилежному випадку. Вхідне дане: а. Вихідне дане: С.
Початок Введення а ні а 1, 2, 3 с=0 с=а*a 4, 5, 6 7, 8, 9 с=а-3 с=а+3 с Кінець
Program pr 4. 3. 1; Var a, c: integer; BEGIN writeln('введіть a'); readln(a); CASE a of 1, 2, 3 : c: =a*a; 4, 5, 6 : c: =a-3; 7, 8, 9 : c: =a+3 else c: =0; end; writeln(c); END.