Циклы

Часто при решении задачи необходимо многократно выполнять одни и те же действия. Как вы уже знаете, для этого используются циклы.

Цикл WHILE...DO

Цикл while…do оформляется очень просто:

WHILE условие DO

begin

операторы;

end;

Здесь условие после слова while записывается так же, как и в операторе if. Операторы, записанные между begin и end после слова do, образуют тело цикла и выполняются многократно, Еще одно название цикла while следует из русского перевода – цикл «пока».

Если при выполнении программы компьютер встретит цикл while, он проверяет условие, и если оно истинно, выполняет тело цикла, затем опять возвращается к условию. Эти действия повторяются многократно до тех пор, пока при проверке условие не окажется ложным. В этом случае компьютер переходит к выполнению оператора, который идет после конца тела цикла.

Слова begin и end можно не писать, если на каждом шаге цикла нужно выполнить только один оператор (так же, как в операторе if).

Пример 1. Вывести на экран в порядке возрастания все нечетные числа, меньшие заданного числа n.

Решение.

Выводимые числа будем хранить в переменной i. Сначала i:=1, так как 1 – самое маленькое нечетное число. На каждом шаге цикла нужно выводить значение i на экран и прибавлять к ней 2 – переход к следующему нечетному числу. эти операторы составляют тело цикла. Поскольку их 2, нужно поставить begin и end. Цикл нужно выполнять, пока i<n. Это условие продолжения цикла.

var i,n:integer;

begin

readln(n);

i:=1;

while i<n do

begin

writeln(i);

i:=i+2;

end;

end.

Пример 2. Прочитать с клавиатуры число n и вывести на экран n звездочек по диагонали, начиная с левого верхнего угла экрана.

Решение.

var i,n:integer;

begin

readln(n);

while i<n do

begin

gotoxy(i,i);

write(‘*’);

i:=i+1;

end;

end.

Задачи по теме «цикл while»

  1. Вывести на экран в порядке возрастания все нечетные числа, меньшие 20.
  2. Прочитать с клавиатуры числа y и n. В строке с номером y, начиная с левого края экрана вывести n звездочек.
  3. В предыдущей задаче звездочки выводить на экран не в каждой клетке, а через одну клетку.
  4. Прочитать с клавиатуры числа x и y. В строке с номером y начиная с клетки (x,y) до конца экрана рисовать звездочки.

Цикл FOR.

Любое повторение действий можно запрограммировать при помощи цикла while, но программы с циклом For оказываются проще. Для примера 2 решение будет таким.

var i,n:integer;

begin

readln(n);

for i:=1 to n do

begin

gotoxy(i,i);

 write(‘*’);

end;

end.

Синим цветом обозначена конструкция цикла со счетчиком. Посмотрите на нее внимательно. В нашем примере, когда компьютер дойдет до цикла, он запишет в переменную i число 1, затем, если она меньше или равна n, выполнит операторы тела цикла. Далее компьютер автоматически прибавит к i единицу. И опять проверит, что она меньше или равна n, дальше опять выполнит действия. Так будет продолжаться до тех пор, пока i не станет больше n. i назывется счетчиком цикла. В качестве счетчика вместо i можно использовать любую переменную. Ей можно присваивать любое значение. Вместо переменной n может находиться любое выражение, например

for k:=2*z-1 to 58-x do

Программа с циклом for обычно короче, чем программа с циклом while. Недостаток цикла for – меньшая гибкость. На каждом шаге цикла к счетчику прибавляется 1.

Задачи по теме «цикл for»

  1. Прочитать с клавиатуры число n и вывести на экран n раз слово «привет»
  2. Прочитать число n и вывести на экран все числа от 1 до n «в столбик»
  3. Прочитать с клавиатуры значения переменных n и m и вывести на экран квадраты целых чисел от n до m.
  4. Прочитать с клавиатуры числа y и n. В строке с номером y, начиная с левого края экрана, вывести n звездочек.
  5. Сделать звездочки из предыдущей задачи разноцветными.
  6. Вывести диагональ из 20 звездочек, которая начинается в правом верхнем углу экрана.

 

Дополнительные задачи.

  1. Вокруг экрана нарисовать прямоугольную рамку из звездочек. Расстояние от рамки до границ экрана 3 клеточки.
  2. Прочитать с клавиатуры числа x, y, n и вывести на экран букву «Х». Центр буквы должен находиться в точке (x,y), а длина «палочки», выходящей из центра равна n.