Для реалізації циклічних алгоритмів, тобто алгоритмів, що містять багато разів повторюються однакові операції, застосовуються спеціальні оператори циклу. У Паскалі є три види циклів: FOR, WHILE і REPEAT. Оператор циклу FOR записується у вигляді:
FOR змінна: = початкове значення TO кінцеве значення DO
FOR змінна: = початкове значення DOWNTO кінцеве значення DO
Тут змінна - будь-яка змінна порядкового типу, звана в такому контексті змінної циклу, початкове значення і кінцеве значення - вираження того ж типу (виняток, як завжди робиться для різнотипних цілочисельних змінних). Цикл FOR виконується таким чином: змінної циклу присвоюється початкове значення, після чого виконується тіло циклу (оператор або блок, що стоїть після DO). Два цих дії разом складають один крок циклу. Потім змінної циклу присвоюється наступне (в циклі FOR. TO) або попереднє (в циклі FOR. DOWNTO) значення (згадаймо функції Succ і Pred) і виконується наступний крок циклу. Так відбувається до тих пір, поки значення змінної циклу не стане більше (FOR. TO) або менше (FOR. DOWNTO) кінцевого значення. Цикл FOR може не виконатися жодного разу, якщо початкове значення більше кінцевого в циклі FOR. TO або менше кінцевого в циклі FOR. DOWNTO. Запишемо два приклади використання циклу FOR. обчислимо суму квадратів натуральних чисел від 1 до N.
CONST s. Real = 0; N = 22;
BEGIN FOR i: = 1 TO N DO s: = s + SQR (i); WRITELN ( 'сума =', s); END.
і виведемо на екран символи з номерами від 32 до 255
BEGIN FOR c: = '' TO # 255 DO WRITE (c); WRITELN; END.
Другий тип циклу - цикл WHILE - записується у вигляді:
WHILE логічне вираження DO оператор / блок
Тут логічне вираження - будь-який вираз типу Boolean. Цикл виконується таким чином. обчислюється логічне вираження і, якщо воно істинно, виконується тіло циклу, в іншому випадку цикл закінчується. Очевидно, що цикл WHILE може як не виконатися жодного разу, так і виконуватися нескінченну кількість разів (в останньому випадку говорять, що програма зациклилася). Запишемо дві попередні завдання, використовуючи цикл WHILE:
CONST i. Word = 1; s. Real = 0; N = 22;
BEGIN WHILE i<=N DO BEGIN s:=s+SQR(i); INC(i); END;