
- •Язык Pascal в популярном изложении
- •§ 1 Постоянные и переменные величины
- •§ 2 Арифметические действия. Элементарные функции
- •§ 3 Арифметические выражения. Скобки
- •§ 4 Вычисление значения арифметического выражения. Команда присваивания
- •§ 5 Типы числовых данных
- •§ 6 Описание числовых переменных
- •§ 7 Обобщение по вещественному типу данных
- •§ 8 Обобщение по целому типу данных
- •§ 9 Простая программа. Команда Writeln
- •§ 10 Исполнение программы. И снова о команде Writeln
- •§ 11 Исполнение программы (продолжение). Сообщения об ошибках
- •§ 12 Учимся самостоятельно писать программы и отлаживать их на компьютере
- •§ 13 Строка символов в команде Writeln
- •§ 14 Ввод исходных данных. Команда Readln
- •§ 15 Отношения между величинами
- •§ 16 Разветвляющиеся алгоритмы. Полное ветвление
- •§ 17 Разветвляющиеся алгоритмы. Неполное ветвление
- •§ 18 Давайте попробуем разработать программу - тест
- •§ 19 Команда множественного выбора case
- •§ 20 Графика в паскаЛе
- •§ 21 Цикл пока в языке Паскаль
- •§ 22 Цикл для каждого в языке Паскаль
- •§ 23 Работа цикла для каждого (for)
- •§ 24 Модификация цикла для каждого
- •§ 25 Некоторые специальные процедуры и функции, используемые в языке
- •§ 26 Разработка мультика
- •§ 27 Строковый тип данных
- •§ 28 Строковые процедуры и функции
- •§ 29 Массивы, размерность, длина, описание массивов
- •§ 30 Процедуры в языке Паскаль
- •1) Процедуры без параметров;
- •§ 31 Процедуры без параметров
- •§ 32 Процедура с параметрами-значениями
- •§ 33 Процедуры с параметрами-переменными
- •§ 33 Функции, определенные пользователем
- •§ 34 Несколько рекомендаций по использованию процедур и функций
§ 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.