Комп. техніка та інформ. технології Лекція
Тема:Оператори циклу, оператори розгалуження, приклади циклічних
та розгалужених програм.
План лекції:
1. Новий матеріал:
¨ Розгалужений процес, умова розгалуження;
¨ Оператор розгалуження, логічний вираз мовою Паскаль;
¨ Приклади розгалужених програм;
¨ Цикли, види циклів;
¨ Оператори циклів;
¨ Приклади циклічних програм;
2. Контрольні питання:
¨ Приведіть приклади розгалужених процесів, відомих в учбовій практиці?
¨ Як виконується оператор розгалуження?
¨ Приведіть приклади циклічних процесів, відомих в учбовій практиці?
¨ Як виконуються оператори циклу?
Розгалужені процеси
Часто при розрахунках виникають ситуації, коли подальші дії виконуються по різним правилам, формулам залежно від того, чи виконуються певні співвідношення величин. Наприклад, при розв’язку квадратного рівняння спочатку знаходимо дискримінант, а потім, залежно від того, яке він має значення, відбуваеться розгалуження: додатне, нульове чи від’ємне, далі знаходимо або 2 корені, або один, або взагалі нічого не розраховуємо, а пишемо в відповідь „Рівняння не має дійсних коренів”. Маємо 3 різні гілки розрахунків, але виконуватись буде одна. Для визначення розгалуження в алгоритмі використовуємо конструкцію:
ЯКЩО <УМОВА> ТО <ГІЛКА 1> АБО <ГІЛКА>;
Умовою може бути логічний вираз, або змінна, якій заздалегідь присвоєний логічний вираз. Найпростіший логічний вираз може мати вигляд співвідношення величин на знаки ³, £, <, =, >, ¹. Логічний вираз може мати одне з двох значень: ІСТИНА (так, умова виконується), або ПОХИБКА (ні, умова не виконується). Іноді треба перевірити кілька співвідношень, в цьому випадку поєднуємо їх союзами І, АБО, що відповідає операціям кон’юнкції та диз’юнкції з логічними виразами.
Розгалуження може мати повну (а) і неповну форму (б).
Для реалізації розгалуження на мові Turbo Pascal існує оператор розгалуження:
if <логічний вираз> then <оператор1> [ else <оператор2>];
На мові Turbo Pascal не існує символів ³, £, ¹, бо їх не існує на клавіатурі, тому в логічних виразах їх аналогами є комбінації: >=, <=, < >. Для поєднання кількох виразів в один використовуються слова and(також), or(або), not(не).
Розглянемо логічні висловлювання, які можуть бути умовою розгалуження і їх подання на мові Turbo Pascal:
1) Для дійсного xÎ[-2; 5], i x¹0 - на мові Turbo Pascal: (x>=-2) and (x<=5) and (x< >0);
2) Для цілого z³20 кратного 3 - на мові Turbo Pascal: (z>=20) and (z mod 3 = 0);
3) Для дійсного 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, друкувати повідомлення , що Х – не входе до ОДЗ.
Циклічний обчислювальній процес
Розглянемо рішення такої задачі: обчислити вираз
Хід виконання можна описати таким чином:
З цього фрагменту алгоритма видно, що одна й та сама команда повторюється багаторазово. Але виконувати запис цієї команди також багаторазово не раціонально. На всіх мовах програмування є команди циклу, команди, які дозволяють зробити запис якоїсь послідовності команд один раз, але виконуватись вона буде багаторазово. Цю послідовність команд будемо називати тілом циклу, або просто циклом.
Іноді з умови задачі відома змінна величина, яка в циклі змінюється лінійно, як члени арифметичної послідовності. В цьму випадку цю величину оберемо як параметр циклу. Іноді її ще називають лічильником. Тоді такий циклічний процес можна описати в бдок-схемі за допомогою такої конструкції: I – змінна, параметр циклу;
N – початкове значення параметру циклу;
K – кінцеве значення параметру циклу;
H – різниця між послідовними значеннями параметру циклу.
Команда повторення дозволяє виконати послідовність команд, які в конструкції задаються як тіло циклу, для кожного значення параметру циклу, що змінюється від N до К з кроком зміни H.
Але іноді з умови задачі неможливо визначити кількість повторень тілу циклу і немає лінійної змінної, від значення якої залежить, повторення циклу. В цьому випадку треба знайти в умові таке співвідношення величин, присутніх в циклі, від виконання якого залежить, повторювати цикл, чи ні. Розглянемо алгоритм Евкліда для знаходження найбільшого спільного множника двох цілих чисел. Евклід пропонує зменшувати більше з двох цілих чисел на величину меншого до тих пір, доки вони стануть рівними. Розглянемо приклад з числами 225 і 180:
Записати цей алгоритм можна використовуючі цикл з післяумовою, або передумовою:
В наведеній блoк-схемі алгоритм Евкліда описаний за допомогою циклу з післяумовою. Умовою виходу з циклу є виконання умови: M=N.
На мові програмування Turbo Pascal для зациклювання використовуються такі оператори циклу:
1. Цикл з параметром:
For I : = N to K do <оператор>;
При цьому крок зміни параметра завжди дорівнює 1, і параметр циклу – цілого типу. Якщо параметр циклу треба зменшувати на 1, то використовуємо оператор циклу: For I : = N downto K do <оператор>;
2.Цикл з передумовою:
While <умова> do <оператор>;
3. Цикл з післяумовою:
Repeat <тіло циклу> until <умова>;
Якщо тіло циклу складається з кількох операторів, то перетворюємо їх в один за допомогою операторних дужок begin і end.
Згідно цього програми наведених алгоритмів на мові Turbo Pascal мають вигляд:
Спеціальність ТОМВ
Дисципліна «Інформатика та обчислювальна техніка»
Самостійна робота №8