Этот вид оператора цикла называют
Инструкцию for можно реализовать двумя способами.
Вариант 1 (с увеличением счетчика).
for Счетчик := НачальноеЗначение to КонечноеЗначение do
begin
{ Инструкции }
end;
Ключевые слова for, dо обозначают "для", "выполняй" соответственно. Строка, содержащая for ... do, называется заголовком цикла, оператор, стоящий после do образует его тело. Очень часто тело цикла — составной оператор. Если тело цикла представлено одиночным оператором, то begin и end не пишутся.
На блок-схеме алгоритма цикл с параметром удобно обозначать следующим образом (рис. 3.4).
Рис. 3.4. Условное обозначение на схемах алгоритмов цикла с параметром
Инструкции между begin и end, выполняются столько раз, сколько определяет выражение [(КонечноеЗначение — НачальноеЗначение) + I].
Это соответствует всем значениям счетчика от начального до конечного включительно.
Если НачальноеЗначение больше, чем КонечноеЗначение, то инструкции между begin и end не выполняются ни разу.
Например, выполнение цикла — фрагмента программы:
For i:=10 to 14 do write (i:3);
выведет на экран последовательность цифр в виде:
10 11 12 13 14
Вариант 2 (с уменьшением счетчика).
for Счетчик := НачальноеЗначение downto КонечноеЗначение do
begin
{ Инструкции }
end;
Инструкции между begin и end, выполняются столько раз, сколько определяет выражение [(НачальноеЗначение — КонечноеЗначение) + I].
Если НачальноеЗначение меньше, чем КонечноеЗначение, то инструкции между begin и end не выполняются ни разу.
Например, выполнение цикла — фрагмента программы:
For i:=14 downto 10 do write (i:3);
выведет на экран последовательность цифр в виде:
14 13 12 11 10
Если переменная-счетчик имеет символьный char тип, то оператор:
For ch:=’a’ to ‘e’ do write (ch:2);
выведет на экран последовательность букв в виде:
а b с d е
Оператор:
For ch:=’e’ downto ‘a’ do write (ch:2);
выведет на экран последовательность букв в виде:
е d с b а
Обратите внимание — цикл for удобно использовать для организации вывода данных программы. Вместе с оператором if и функцией readln он позволяет выполнить постраничный вывод.
Например, при выполнении следующего цикла программа будет приостанавливать вывод после заполнения экрана столбцом цифр до нажатия клавиши <Еnter>.
for i:=1 to 50 do
begin
writeln (i);
if i mod 24 = 23 then readln;
end;
Следует знать:
• оператор (инструкция) for используется для организации циклов с фиксированным, заранее известным или определяемым во время выполнения программы числом повторений;
• количество повторений цикла определяется начальным и конечным значениями переменной-счетчика. Оператор for обеспечивает выполнение тела цикла до тех пор, пока не будут перебраны все значения параметра цикла: от начального до конечного;
• переменная-счетчик должна быть порядкового типа: чаще — integer, реже — char, boolean или одного из пользовательских типов (см. разд. 2.1.2). Использование вещественного типа недопустимо;
• начальное и конечное значения параметра цикла могут быть константами, переменными, выражениями и должны принадлежать к одному и тому же типу данных. Начальное и конечное значения параметра цикла нельзя изменять во время выполнения цикла;
• после нормального завершения оператора for значение параметра цикла равно конечному значению. Если оператор for не выполнялся, значение параметра цикла не определено;
• параметр цикла for может изменяться (увеличиваться или уменьшаться) каждый раз при выполнении тела цикла только на единицу. Если нужен другой шаг изменения параметра, предпочтительнее циклы repeat и while.
Примером действия оператора for может служить листинг 3.22, который выводит на экран таблицу перевода из градусов по шкале Цельсия(С) в градусы по Фаренгейту(Р) для значений от 15°С до 30°С с шагом 1 градус. Перевод осуществляется по формуле: F = С* 1.8+32.
Листинг 3.22. Таблица перевода из градусов по шкале Цельсия в градусы по Фаренгейту
varВ блоке описания переменных описаны параметр цикла I типа integer и переменная F — температура по Фаренгейту типа real. Переменная I, помимо функций управляющей переменной, является переменной, хранящей целочисленные значения температуры по шкале Цельсия. В начале выполнения программы на экран выводится надпись ' Температура ', а затем оператором повтора выводится таблица соотношения температуры в шкалах Цельсия и Фаренгейта. Печать таблицы выполняется оператором Writeln(Tlo Цельсию= ' ,1,' по Фаренгейту= ', F:5:2)
Цикл выполняется следующим образом.
При первом обращении к оператору for вычисляются значения начального (15) и конечного (30) параметров цикла, и управляющей переменной I присваивается начальное значение 15.
Затем циклически выполняется следующее:
1. Проверяется условие I<=30.
2. Если оно соблюдается, то выполняется составной оператор в теле цикла, т. е. рассчитывается значение выражения 1*1.8+32, затем оно присваивается переменной F, и на экран выводится сообщение 'По Цельсию= ' ,1,' по Фаренгейту= х, F:5:2
Если условие I<=30 не соблюдается, т. е. как только I станет > 30, оператор тела цикла не выполняется, а управление в программе передается за пределы оператора for, в нашем примере на оператор end;.Программа завершает работу.
3. Значение параметра цикла I увеличивается на единицу, и управление передается в заголовок цикла for для проверки условия.
Далее цикл повторяется с п.1.
Листинг 3.23 содержит программу "Тест по таблице умножения", измененную таким образом, чтобы она задавала ученику ровно пять вопросов, а в конце тестирования выставляла оценку по пятибалльной системе. Естественно, в такой постановке задачи наилучшим решением будет являться цикл for.
Листинг 3.23. Тест по таблице умножения (вариант № 4)
uses crt;Листинг 3.24 содержит программу, которая вычисляет среднее арифметическое и определяет минимальное и максимальное число в последовательности действительных чисел, вводимых с клавиатуры.
Листинг 3.24. Определение среднее, минимума и максимума в группе чисел
varЛистинг 3.25 содержит программу, которая вычисляет частичные суммы n членов ряда 1, -1/3, +1/5, -1/7, +..., сходящихся к значению p/4.
Листинг 3.25. вычисление частичной суммы членов ряда
var предыдущая         меню        вверх         следующая