Цикл repeat

Цикл for

Часто цикл for называют циклом со счетчиком. Этот цикл используется, когда число повторений не связано с тем, что происходит в теле цикла. Т.е. количество повторений может быть вычислено заранее (хотя оно не вычисляется).

В заголовке цикла указываются два значения. Первое значение присваивается так называемой переменной-счетчику, от этого значения начинается отсчет количества итераций (повторений). Отсчет идет всегда с шагом равным единице. Второе значение указывает, при каком значении счетчика цикл должен остановиться. Другими словами, количество итераций цикла определяется разностью между вторым и первым значением плюс единица. В Pascal тело цикла не должно содержать выражений, изменяющих счетчик.

Цикл for существует в двух формах:

for счетчик:=значение to конечное_значение do

тело_цикла;

for счетчик:=значение downto конечное_значение do

тело_цикла;

В нашем случае счётчик будет переменной целого типа.

Количество итераций цикла for известно именно до его выполнения, но не до выполнения всей программы. Так в примере ниже, количество выполнений цикла определяется пользователем. Значение присваивается переменной, а затем используется в заголовке цикла. Но когда оно используется, циклу уже точно известно, сколько раз надо выполниться.

var i, n: integer; begin write ('Количество знаков: '); readln (n); for i:= 1 to n do write ('(*) '); readln end.

Цикл while

Цикл while является циклом с предусловием. В заголовке цикла находится логическое выражение. Если оно возвращает true, то тело цикла выполняется, если false – то нет.

Когда тело цикла было выполнено, то ход программы снова возвращается в заголовок цикла. Условие выполнения тела снова проверяется (находится значение логического выражения). Тело цикла выполнится столько раз, сколько раз логическое выражение вернет true. Поэтому очень важно в теле цикла предусмотреть изменение переменной, фигурирующей в заголовке цикла, таким образом, чтобы когда-нибудь обязательно наступала ситуация false. Иначе произойдет так называемое зацикливание, одна из самых неприятных ошибок в программировании.

var i, n: integer; begin write ('Количество знаков: '); readln (n); i:= 1; while i <= n do begin write ('(*) '); i:= i + 1 end; readln end.

Цикл repeat

Цикл while может не выполниться ни разу, если логическое выражение в заголовке сразу вернуло false. Однако такая ситуация не всегда может быть приемлемой. Бывает, что тело цикла должно выполниться хотя бы один раз, не зависимо оттого, что вернет логическое выражение. В таком случае используется цикл repeat – цикл с постусловием.

В цикле repeat логическое выражение стоит после тела цикла. Причем, в отличие от цикла while, здесь всё наоборот: в случае true происходит выход из цикла, в случае false – его повторение.

var i, n: integer; begin write ('Количество знаков: '); readln (n); i:= 1; repeat write ('(*) '); i:= i + 1 until i > n; readln end.

Задачи (первая лёгкая, вторая сложная, решаем с помощью циклов, разумеется):

1. Вчашке находится n микробов, их количество с каждой минутой удваивается. Составить программу нахождения количества микробов за время t.

Примечание: здесь и далее все обозначенные буквами переменные должны вводиться с клавиатуры.

2. У основания столбика высотой L см сидит улитка.
Днем (с 7:00 до 20:00) она проползает вверх К см. Ночью - улитка спит, поэтому сползает вниз на Н см.
Определите и выведите на экран на какие сутки улитка доберется до вершины столбика, при условии, что полностью восстановить силы за ночь ей не удается, и каждые новые сутки ее продвижение вверх уменьшается на М см. А может это ей и вовсе не удасться?
Значения L, К, Н и М - целые числа, которые вводятся с клавиатуры и лежат в пределах от 0 до 1000 включительно.

Решайте за выходные, в пн обсудим.


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: