Циклы
Часто при решении задачи необходимо многократно выполнять одни и те же действия. Как вы уже знаете, для этого используются циклы.
Цикл 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»
- Вывести на экран в порядке возрастания все нечетные числа, меньшие 20.
- Прочитать с клавиатуры числа y и n. В строке с номером y, начиная с левого края экрана вывести n звездочек.
- В предыдущей задаче звездочки выводить на экран не в каждой клетке, а через одну клетку.
- Прочитать с клавиатуры числа 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»
- Прочитать с клавиатуры число n и вывести на экран n раз слово «привет»
- Прочитать число n и вывести на экран все числа от 1 до n «в столбик»
- Прочитать с клавиатуры значения переменных n и m и вывести на экран квадраты целых чисел от n до m.
- Прочитать с клавиатуры числа y и n. В строке с номером y, начиная с левого края экрана, вывести n звездочек.
- Сделать звездочки из предыдущей задачи разноцветными.
- Вывести диагональ из 20 звездочек, которая начинается в правом верхнем углу экрана.
Дополнительные задачи.
- Вокруг экрана нарисовать прямоугольную рамку из звездочек. Расстояние от рамки до границ экрана 3 клеточки.
- Прочитать с клавиатуры числа x, y, n и вывести на экран букву «Х». Центр буквы должен находиться в точке (x,y), а длина «палочки», выходящей из центра равна n.