Комп. Техніка та інформ. Технології Лекція
Тема: Оператори циклу, оператори розгалуження, приклади циклічних
та розгалужених програм.
План лекції:
Новий матеріал:
Розгалужений процес, умова розгалуження;
Оператор розгалуження, логічний вираз мовою Паскаль;
Приклади розгалужених програм;
Цикли, види циклів;
Оператори циклів;
Приклади циклічних програм;
Контрольні питання:
Приведіть приклади розгалужених процесів, відомих в учбовій практиці?
Як виконується оператор розгалуження?
Приведіть приклади циклічних процесів, відомих в учбовій практиці?
Як виконуються оператори циклу?
Розгалужені процеси
Часто при розрахунках виникають ситуації, коли подальші дії виконуються по різним правилам, формулам залежно від того, чи виконуються певні співвідношення величин. Наприклад, при розв’язку квадратного рівняння спочатку знаходимо дискримінант, а потім, залежно від того, яке він має значення, відбуваеться розгалуження: додатне, нульове чи від’ємне, далі знаходимо або 2 корені, або один, або взагалі нічого не розраховуємо, а пишемо в відповідь „Рівняння не має дійсних коренів”. Маємо 3 різні гілки розрахунків, але виконуватись буде одна. Для визначення розгалуження в алгоритмі використовуємо конструкцію:
ЯКЩО <УМОВА> ТО <ГІЛКА 1> АБО <ГІЛКА>;
У
мовою
може бути логічний вираз, або змінна,
якій заздалегідь присвоєний логічний
вираз. Найпростіший логічний вираз
може мати вигляд співвідношення величин
на знаки ,
,
,
,
,
.
Логічний вираз може мати одне з двох
значень: ІСТИНА (так, умова виконується),
або ПОХИБКА (ні, умова не виконується).
Іноді треба перевірити кілька
співвідношень, в цьому випадку поєднуємо
їх союзами І, АБО, що відповідає операціям
кон’юнкції та диз’юнкції з логічними
виразами.
Розгалуження може мати повну (а) і неповну форму (б).
Для реалізації розгалуження на мові Turbo Pascal існує оператор розгалуження:
if <логічний вираз> then <оператор1> [ else <оператор2>];
На мові Turbo Pascal не існує символів , , , бо їх не існує на клавіатурі, тому в логічних виразах їх аналогами є комбінації: >=, <=, < >. Для поєднання кількох виразів в один використовуються слова and(також), or(або), not(не).
Розглянемо логічні висловлювання, які можуть бути умовою розгалуження і їх подання на мові Turbo Pascal:
Для дійсного x[-2; 5], i x0 - на мові Turbo Pascal: (x>=-2) and (x<=5) and (x< >0);
Для цілого z20 кратного 3 - на мові Turbo Pascal: (z>=20) and (z mod 3 = 0);
Для дійсного x[-2; 5] - на мові Turbo Pascal: (x>5) or (x<-2).
З
а
форматом команди галка „так” або „ні”
може складатись з одного оператора, але
ж на практиці часто треба виконати
кілька операцій. В цьому випадку кілька
команд поєднати в один оператор за
допомогою операторних дужок begin…..end.
Розглянемо такий приклад: для 2-х чисел a і b, введених користувачем, визначити, яке з чисел більше, надрукувати його, потім зменшити на величину меншого числа і надрукувати знову його нове значення. Програма мовою Turbo Pascal:
program pr1;
uses crt;
var a, b:real;
begin
write(‘’); readln(a, b);
if a>=b then begin write(‘a=’,a:8;2); a:=a-b; writeln(‘a=’,a:8;2) end
else begin write(‘b=’,b:8;2); b:=b-a; writeln(‘b=’,b:8;2);end;
end.
І
ноді
розрахунки мають 3, 4 гілки. Але розглянуті
структури та оператор розгалуження
мають тільки 2 гілки. Щоб отримати
розгалуження на 3 гілки часто досить
2-х операторів розгалуження. Це якщо
умови виконання кожної гілки охвачують
всю множину можливих співвідношень.
Наприклад, при розв’язку квадратного рівняння маємо 3 гілки розрахунків, що визначаються порівняннями d>0; d=0; d<0. Щоб розгалузити розрахунки, досить перевірити будь-які 2 умови з 3-х, на виконання 3-ої умови потрапимо по гілці Ні-Ні.
Складемо програму розв’язку
квадратного рівняння:
Program kwur;
Uses
crt;
Var a, b, c, d, x, x1, x2:real;
Begin
Write(‘ Vvjd koeficientow A, B, C:’);
Readln(a, b, c); d:=sqr(b)-4*a*c;
If d>0 then begin
x1:=(-b+sqrt(d))/(2*a);
x2 :=(-b-sqrt(d))/(2*a);
writeln(‘x1=’,x1:6:2, ‘ x2=’,x2:6:2);
end
else if d=0 then begin
x:=-b/(2*a);
writeln(‘x1=x2=’,x:6:2); end
else writeln(‘ Net kornej’);
end .
В математиці часто зустрічаються розгалужені функції. Розглянемо програму розрахунку значень такої функції:
Для
функції
знайти її значення для будь-якого
значення аргументу х, визначеного
користувачем з клавіатури.
Інформаційна модель: Область визначення функції –
(0; ∞), якщо Х входе до ОДЗ, перевіряти умову розгалуження: Х>5, якщо Х <0, друкувати повідомлення , що Х – не входе до ОДЗ.
Program gilr;
Uses crt;
Var x, y : real;
Begin
write(‘
Ввести
аргумент:
’);
readln(x);
If x>=0 then
begin
If x>5
then y:=ln(x-5)/ln(2)
else
y:=x*x*x+5;
Writeln(‘y=’,y:7:2);
end
Else
writeln(‘Х
– не в ОДЗ’);
readln;
End.
