Слайд 14. ОРГАНІЗАЦІЯ РОЗГАЛУЖЕННЯ МОВОЮ ПАСКАЛЬ
4.1. Структурні оператори. Умовний оператор if…then…else
4.2.
Вкладені оператори if…then…else для організації складних розгалужень
4.3. Організація розгалуження за
вибором альтернатив.
Оператор case...of…end
Слайд 24.1. Структурні оператори. Умовний оператор if…then…else
Розгалужена структура мовою Паскаль задається
за допомогою структурних операторів.
Структурні оператори будуються за допомогою спеціальних
зарезервованих слів, логічних виразів та інших операторів.
Такий оператор явно чи неявно містить одну чи декілька логічних перевірок.
Слайд 3Умовний оператор:
if then
else ;
Логічний вираз набуває одне з двох можливих значень: True
(істина), False (хибно).
Якщо логічний вираз набуває значення «істина», то виконується оператор1, інакше – оператор2.
! Зауваження. Перед ELSE не ставиться «;».
Згідно формальних правил мови, після THEN та ELSE допускається застосування лише одного оператора.
Але на практиці частіше виникають ситуації, коли при виконанні умови у логічному виразі слід виконати кілька операторів.
В цьому випадку використовується складовий оператор (begin … end;).
Слайд 4Приклад 4.1.1. Визначити min з двох чисел a та b.
Вхідні дані: а,b.
Вихідне дане: min.
Початок
Кінець
a
Слайд 5Program pr4.1.1;
var a,b,min: real;
begin
writeln(‘vvod a, b');
readln(a,b);
if a
min:=b;
write('min=',min);
end.
Слайд 6Оператор if…then
Оператор if..then є скороченою версією оператора if..then..else
та використовується у випадку, коли дія виконується тільки при виконанні
деякої умови.
так
if <логічний вираз> then <оператор1>;
ні
<наступний оператор>
Слайд 7Приклад 4.1.2. Якщо число а – парне, вивести його значення
на екран.
Вхідне дане: а.
Вихідне дане: а.
Початок
Кінець
a-парне
Введення a
а
ні
так
Слайд 8Program pr4.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.
Слайд 94.2. Вкладені оператори if…then…else
if then
else
if
then <оператор 2>
else
if <умова 3> then <оператор 3>
.
.
.
else if <умова n> then <оператор n>;
Слайд 10Якщо вирази умови1,.....,умови n незалежні, то має сенс розташовувати їх
в тому порядку, щоб вираз з найбільшою ймовірністю приймаючий значення
істина стояв на першому місці, вираз з меншою імовірністю - на другому і т.д. Це скорочує час виконання програми.
! Зауваження. Слід пам’ятати, що кожному else відповідає найближчий попередній if, який не має іншого else.
Якщо потрібно змінити послідовність дій, можна використати операторні дужки
Begin … End;
Слайд 11Приклад 4.2.1. Обчислити значення змінної y, заданої формулами:
x2,
x2
√2,
xє[0,2]
Вхідне дане: х.
Вихідне дане: y.
0
2
x
y
Слайд 13Program pr4.2.1;
uses crt;
var x,y:real;
BEGIN
clrscr;
Writeln('введіть
X');
readln(x);
if 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.
Слайд 14Приклад. Обчислити корінь квадратичного рівняння y=ax2+bx+c
Вхідні дані: а, b,с.
Вихідні дані: х1,2.
Математична
постановка задачі:
обчислюємо D=b2 - 4ac
якщо D
D≥0, а=0, то рівняння має корінь x=-c/b
якщо D≥0, a≠0, то рівняння має два корені: х1,2= -b±√D/2a
Слайд 16program Root;
uses crt;
var a,b,c,D,x,x1,x2:real;
BEGIN
clrscr;
writeln('введіть a,b,c');
readln(a,b,c);
D:=sqr(b)-4*a*c;
if D
має дійсних коренів')
else
if a=0 then
begin
x:=-c/b;
write('x= ',x:4:3)
end
else
begin
x1:=(-b+sqrt(D))/(2*a);
x2:=(-b-sqrt(D))/(2*a);
write('x1=',x1:4:3,'x2=',
x2:4:3)
end
END.
Слайд 174.3. Організація розгалуження за вибором альтернатив.
Оператор case...of…end
Для ситуацій,
де є декілька (три або більше альтернатив), використовується оператор case,
оскільки оператор if дозволяє обирати лише одну з двох можливих дій.
Оператор case називається оператором вибору.
Слайд 18Оператор case...of…end
Case of
: ;
: ;
.................................................;
:
;
[else ;]
end;
Слайд 19Вираз – це може бути проста змінна або арифметичний чи
логічний вираз; значення виразу може бути цілого, символьного або логічного
типу.
Обчислення значення виразу визначає константу, за якою визначається список, де є відповідна константа. Виконується оператор, який відповідає списку.
Якщо значення виразу відсутнє в списках значень, то жодний оператор не виконується. В цьому випадку виконується гілка else.
Слайд 20Приклад 4.3.1.
a2 якщо а=1,2,3
С= a-3 якщо а=4,5,6
a+3 якщо а=7,8,9
0 у протилежному випадку.
Вхідне дане: а.
Вихідне дане: С.
Слайд 21Початок
а
с=0
Введення а
с=а*a
с=а+3
с=а-3
с
Кінець
ні
1,2,3
4,5,6
7,8,9
Слайд 22Program pr4.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.