Алгоритм циклічної структури - це алгоритм, в якому відбувається багаторазове повторення одного і того ж ділянки програми. Такі повторювані ділянки обчислювального процесу називаються циклами. Програма циклічної структури містить один або кілька циклів. Розрізняють детерміновані цикли із заздалегідь відомим кількістю повторень і повторюється цикли, в яких кількість повторень заздалегідь невідомо. Змінюється в циклі мінлива називається параметром циклу.
Для організації циклу необхідно виконати наступні дії:
1) поставити перед циклом початкове значення параметра циклу;
2) змінювати параметр перед кожним новим повторенням циклу;
3) перевіряти умова повторення циклу;
4) керувати циклом, тобто переходити до його початку, якщо він не закінчений, або виходити з нього по закінченні.
У мові Паскаль існує 3 види циклів:
1) цикл з параметром або цикл типу for,
2) цикл з передумовою або цикл типу while,
3) цикл з постумовою або цикл типу repeat ... until.
У циклі типу for кількість повторень відомо заздалегідь, в циклах типу while і repeat ... until кількість повторень циклу заздалегідь невідомо, проводиться перевірка умови повторення циклу: в циклі типу while - перед циклом, в циклі типу repeat ... until - після його закінчення.
В циклах типів for та while повторяющяся частина (тіло циклу) складається з одного оператора, якщо потрібно виконати в циклі кілька операторів, вони полягають у операторні дужки begin ... end, утворюючи складовою оператор. У циклі типу repeat ... until тіло циклу поміщається між зарезервованими словами мови (лексемами) repeat і until, операторні дужки не потрібні, в назві циклу його тіло умовно позначається трьома точками.
З допомогою циклу типу for зручно знаходити суми, твори, шукати максимальні і мінімальні значення і т.п. При знаходженні суми деякої змінної, наприклад S присвоюється значення 0, потім у циклі до цієї змінної додається відповідний член заданій послідовності. При знаходженні твори змінної присвоюється значення 1, потім у циклі ця мінлива множиться на загальний член послідовності.
Приклад циклу типу for
Обчислення n чисел Фібоначчі:
F1=1; F2=1;...; Fn=Fn-1+Fn-2 ,
наприклад F3=F2+F1=1 + 1 = 2; F4 = 2 + 1 = 3 і т.д.
program fib; {Знаходження чисел Фібоначчі}
var x, y, z, i, n : integer;
begin
writeln (‘Введіть n’); read (n);
x:=1; y:=0;
for i:=1 to n do
begin
z:=x ; x:=x+y ; y:=z ;
("write ", x ) ;
end;
readln;
end.
Приклад циклу типу while
Складання таблиці функції y = a3/(a2+x2) для х, що належать відрізку [-1; 1] з кроком 0.1. Так як параметр циклу типу for має бути цілим числом, зручніше використовувати цикл while, в якому значення х можна змінювати при кожному кроці на Dх = 0.1
program cycl_while;
uses crt; {виклик модуля Crt для управління режимом екрану}
var
a, x, y : real ; i : integer;
begin
clrscr ; {процедура очищення екрану з модуля Crt}
writeln ("Уведіть а " );
readln (a);
x:= -1.; writeln (‘ x ‘, ‘ y ’);
while do x<1.05 begin
y:= sqr(a)*/ a (a*a+x*x);
writeln (x:6:2, y:8:4);
:x=x+0.1
end;
readln;
end .
Умова х<1.05 відповідає кожному значенню х плюс половина кроку .
Приклад циклу типу repeat ... until
Визначити число n, при якому сума квадратів натурального ряду чисел від 1 до n не перевищить величину K, введену з клавіатури. Тобто
S >= K, де S=
program sum_sq; {Сума квадратів натурального ряду }
uses crt;
var k, s, n : integer;
begin
clrscr ;
writeln( "Уведіть K" );
readln (k);
s:=0; n:=1;
repeat
s :=s+n*n;
n := n+1;
until s > k;
writeln (N"=", n : 3, " s= " , s : 5 );
readln;
end.
Цикл повторюється доти, поки умова записане після ключового слова until, буде помилковим (не виконується). Як тільки це умова виконується, відбувається вихід з циклу. Після закінчення циклу здійснюється друк результату (оператор writeln). Зазначимо, що цикл з передумовою (типу while) може не здійснитися жодного разу, цикл з постумовою repeat ... until виконається принаймні 1 раз. Коли кількість повторень циклу невідомо заздалегідь, застосовуються цикли з передумовою або з остусловием . Коли кількість повторень циклу відомо заздалегідь, як правило, застосовується цикл типу for. Але будь-який цикл типу for можна замінити циклом з передумовою або постумовою.