Скачать презентацию 4 ОРГАНІЗАЦІЯ РОЗГАЛУЖЕННЯ МОВОЮ ПАСКАЛЬ 4 1 Структурні Скачать презентацию 4 ОРГАНІЗАЦІЯ РОЗГАЛУЖЕННЯ МОВОЮ ПАСКАЛЬ 4 1 Структурні

КТ_Турбо_Паскаль_лекция_4.ppt

  • Количество слайдов: 22

4. ОРГАНІЗАЦІЯ РОЗГАЛУЖЕННЯ МОВОЮ ПАСКАЛЬ 4. 1. Структурні оператори. Умовний оператор if…then…else 4. 2. 4. ОРГАНІЗАЦІЯ РОЗГАЛУЖЕННЯ МОВОЮ ПАСКАЛЬ 4. 1. Структурні оператори. Умовний оператор if…then…else 4. 2. Вкладені оператори if…then…else для організації складних розгалужень 4. 3. Організація розгалуження за вибором альтернатив. Оператор case. . . of…end

4. 1. Структурні оператори. Умовний оператор if…then…else Розгалужена структура мовою Паскаль задається за допомогою 4. 1. Структурні оператори. Умовний оператор if…then…else Розгалужена структура мовою Паскаль задається за допомогою структурних операторів. Структурні оператори будуються за допомогою спеціальних зарезервованих слів, логічних виразів та інших операторів. Такий оператор явно чи неявно містить одну чи декілька логічних перевірок.

Умовний оператор: if <логічний вираз> then <оператор1> else <оператор2>; Логічний вираз набуває одне з Умовний оператор: if <логічний вираз> then <оператор1> else <оператор2>; Логічний вираз набуває одне з двох можливих значень: True (істина), False (хибно). Якщо логічний вираз набуває значення «істина» , то виконується оператор1, інакше – оператор2. ! Зауваження. Перед ELSE не ставиться «; » . Згідно формальних правил мови, після THEN та ELSE допускається застосування лише одного оператора. Але на практиці частіше виникають ситуації, коли при виконанні умови у логічному виразі слід виконати кілька операторів. В цьому випадку використовується складовий оператор (begin … end; ).

Приклад 4. 1. 1. Визначити min з двох чисел a та b. Вхідні дані: Приклад 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'); Program pr 4. 1. 1; var a, b, min: real; begin writeln(‘vvod a, b'); readln(a, b); if a

4. 2. Вкладені оператори if…then…else if <умова 1> then <оператор1> else if <умова 2> 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 незалежні, то • Якщо вирази умови 1, . . . , умови n незалежні, то має сенс розташовувати їх в тому порядку, щоб вираз з найбільшою ймовірністю приймаючий значення істина стояв на першому місці, вираз з меншою імовірністю - на другому і т. д. Це скорочує час виконання програми. ! Зауваження. Слід пам’ятати, що кожному else відповідає найближчий попередній if, який не має іншого else. • Якщо потрібно змінити послідовність дій, можна використати операторні дужки Begin … End;

Приклад 4. 2. 1. Обчислити значення змінної y, заданої формулами: x 2, x<0 Y= Приклад 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<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('введіть 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, с. Вихідні дані: Приклад. Обчислити корінь квадратичного рівняння 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 ні так Початок 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, 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 • Для 4. 3. Організація розгалуження за вибором альтернатив. Оператор case. . . of…end • Для ситуацій, де є декілька (три або більше альтернатив), використовується оператор case, оскільки оператор if дозволяє обирати лише одну з двох можливих дій. • Оператор case називається оператором вибору.

Оператор case. . . of…end Case <вираз> of <список констант1>: <оператор1>; <список констант2>: <оператор2>; Оператор 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. 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, Початок Введення а ні а 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 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.