Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Учебник по Pascal с задачами NEWXP.doc
Скачиваний:
1
Добавлен:
03.01.2020
Размер:
461.82 Кб
Скачать

§ 21 Цикл пока в языке Паскаль

Определение цикла. Циклом называется такая форма организации действий, при которой одна и та же последовательность действий совершается несколько раз (или ни разу) до тех пор, пока выполняется некоторое условие.

С

.

помощью блок - схем цикл можно изобразить так:

команды

Условие выполняется ?

да

нет

В языке Паскаль существует несколько типов циклов.

Ц икл ПОКА записывается так:

WHILE условие повторения DO begin

Команда1; Команда2; …………… Командаn;

end;

У

Задание. Приведите примеры, при каких значениях переменных, входящих в данные выражения, они являются верными, а при каких неверными.

словие повторения - это отношение, которое может быть либо верно, либо неверно.

Например, а<6

c>=4+f

(x<7) or (x>9)

(x<=12) and (x>=0)

k < 'мама'

Команда1;…Командаn; - это любые команды языка, которые необходимо выполнить многократно.

Работа цикла. Паскаль проверяет условие повторения, если оно выполняется, то выполняется тело цикла, а затем вновь происходит переход на проверку условия, если оно вновь выполняется, то вновь повторяется тело цикла, и так до тех пор ПОКА при проверке условия окажется, что оно перестало выполняться. Тогда Паскаль идет на выполнение команд, записанных после конца цикла.

Н апример,

Пусть требуется вычислить средний рост группы учащихся из 6 человек.

Var

S, с, Sr:real;

i:integer;

begin

S:=0;

i:=0;

WHILE i<6 DO begin

i:=i+1;

writeln('Введите Ваш рост');readln(c);

S:=S+C;

еnd;

Sr:=S/6;

Writeln (‘Средний рост=‘,Sr);

end.

Ответьте на вопросы:

  • Cколько здесь команд в теле цикла?

  • Как понять запись i:=i+1;

  • Cколько раз выполнится тело цикла?

  • Что делает эта программа?

  • А, следовательно, что надо записать между апостофами при выводе результата,

Бывает так, что программист плохо продумает условие повторения тела цикла (а что надо обязательно продумать?), и тогда оно (тело) может повторяться бесконечно. Говорят, что программа зациклила. Чтобы прервать работу такой программы надо нажать CTRL+Break два раза. А потом искать свою ошибку.

!! Помните, что на Вас лежит ответственность за то, чтобы условие повторения изменялось, и программа не зацикливала.

§ 22 Цикл для каждого в языке Паскаль

Посмотрите, в предыдущем параграфе решалась задача, когда рост нужно было спросить у 6 человек. Нам пришлось позаботиться о том, чтобы Паскаль попросил ввести рост 6 раз. Для этого мы:

  • взяли некоторую переменную i целого типа, сами задали ей начальное числовое значение равное 1 (i:=0;),

  • а затем стали менять значение i, прибавляя каждый раз по 1, (i:=i+1;) перед тем как рост надо ввести т.е. стали считать какой очередной раз мы собираемся запросить рост. i у нас стало счетчиком числа повторений «запрашивания» роста.

  • затем возвращались на проверку того, что наше i меньше 6. Как только i становилось равно 6, мы прекращали запрашивать рост.

В этой задаче рост нужно было запросить для каждого из 6 опрашиваемых. Т.е. в этой задаче заранее было известно, сколько раз нужно запросить рост. В таком случае в Паскале используется другой тип цикла. Он называется ДЛЯ КАЖДОГО.

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

В нашем случае i:Integer;

А затем использовать и сам цикл ДЛЯ КАЖДОГО.

В нашем случае он будет выглядеть так:

FOR i:= 1 TO 6 DO begin

writeln('Введите Ваш рост');readln(c);

end;

Обратите внимание, что в заголовке мы указали, что переменная i должна меняться от 1 до 6, и поэтому в теле цикла уже не заботимся о ее изменении, а только записываем те команды, которые нужно выполнить 6 раз. О переменной i можно сказать, что в процессе работы цикла она принимает сначала значение 1, затем 2, затем 3 и т.д. до 6. Для каждого из этих значений i выполняется тело цикла, которое начинается со слова begin и заканчивается словом end;

В общем виде цикл ДЛЯ КАЖДОГО записывается так:

FOR переменная цикла := начальное знчение TO конечное значение DO

переменной цикла переменной цикла

begin

команда1;

команда2;

. . .

командаn;

end;

Переменная цикла является счетчиком числа повторений тела цикла.

Начальное знчение переменной цикла меньше или равно конечному значению переменной цикла

И то и другое всегда типа Integer.