Для чего вообще нужны циклы? Они нужны для того, чтобы вводить/выводить повторяющуюся информацию не 100 строками кода, 2-мя. Циклы бывают 3-х видов: 1) Параметрический цикл - цикл с заданным кол-вом итераций (Итерация - один проход всех команд в цикле) 2) Цикл с предусловием - будет выполняться, пока будет или не будет выполняться некое условие 3) Цикл с постусловием - то же самое, что и с предусловием, только условие будет проверяться после итерации, а не перед ней. Допустим, нам нужна сумма чисел от 1-го до 30, мы же не будем писать так: Код: sum := 1+2; sum := sum+3; sum := sum+4; и т.д. Намного проще задействовать для этого цикл: - Параметрический Код: program Project1; {$APPTYPE CONSOLE} uses SysUtils; var i,sum:integer; begin sum := 0; for i := 1 to 30 do sum := sum + i; writeln(sum); readln; end. - Цикл с предусловием Код: program Project1; {$APPTYPE CONSOLE} uses SysUtils; var i,sum:integer; begin sum := 0; i := 1; while i <= 30 do begin sum := sum + i; i := i+1; end; writeln(sum); readln; end. Заметьте, что здесь мы выделили каждую итерацию конструкцией begin-end, показывая компилятору тем самым, что с каждой итерацией нужно выполнять более, чем 1-у команду. - Цикл с постусловием: Код: program Project1; {$APPTYPE CONSOLE} uses SysUtils; var i,sum:integer; begin sum := 0; i := 1; repeat sum := sum + i; i := i+1; until (i > 30); writeln(sum); readln; end. В цикле с постусловием не нужно выделять несколько команд конструкцией begin-end, т.к. конструкция вида repeat-until уже предусматривает выполнение нескольких команд (ну это можно понять, взглянув на код). Если Вам нужно прервать цикл в определенной итерации, то Вы должны воспользоваться командой Break: Код: program Project1; {$APPTYPE CONSOLE} uses SysUtils; var i,sum:integer; begin sum := 0; i := 1; repeat sum := sum + i; i := i+1; if i = 15 then Break; until (i > 30); writeln(sum); readln; end. В этом случае выполнение цикла на 15-й итерации прервется. Иногда бывает нужно пропустить некую итерацию, в этом случае мы воспользуемся командой Continue: Код: program Project1; {$APPTYPE CONSOLE} uses SysUtils; var i,sum:integer; begin sum := 0; for i := 1 to 30 do begin if i = 15 then Continue; sum := sum + i; end; writeln(sum); readln; end. Тогда программа пропустит 15-ю итерацию и, соответственно, не прибавит число 15 (т.к. условие стоит до выполнения суммы). Кстати, поскольку теперь в цикле нужно выполнять более одной операции мы выделили их конструкцией begin-end. Но тут все задано программно и неинтересно. Сделаем ввод с клавиатуры (сделаю только с параметрическим циклом, с другими сами разберетесь): Код: program Project1; {$APPTYPE CONSOLE} uses SysUtils; var i,limit,sum:integer; begin Write('Input sum limit: '); Readln(limit); sum := 0; for i := 1 to limit do sum := sum + i; writeln('Sum: ',sum); readln; end. Вот мы и научились пользоваться циклами. Поздравляю! P.S. Вместо такой конструкции i := i+1 или i := i-1 лучше пользоваться фукциями inc(i) и dec(i) соответственно.