Для их организации в Паскале используется оператор For (для), который в общем виде записывается так:
For Параметр := НачальноеЗначение to КонечноеЗначение do
Оператор1;(8.1)
или
For Параметр := НачальноеЗначение Downto КонечноеЗначение do
Оператор1; (8.2)
Параметром цикла в этом операторе может служить переменная так называемого перечисляемого типа:
1) целого;
2) символьного.
Оператор вида (8.1) работает в соответствии со схемой, приведенной на рис. 2.5,а. Параметр пробегает значения от начального до конечного через 1. При этом конечное значение должно быть больше или равно начальному. В противном случае оператор не выполняется.
В операторе вида (8.2) использовано слово Downto. При этом значения параметра убывают (изменяются от большего – начального значения – до меньшего с шагом -1). Работу оператора иллюстрирует схема рис. 2.5,б.
Рис. 2.5. Схема работы оператора For
Если начальное значение равно конечному, то в обоих случаях (при То и Downto) оператор выполняется один раз.
В общем случае (если параметр пробегает несколько значений) оператор 1 выполняется несколько раз.
Пример: {к величине S прибавляется 10 чисел от 1 до 10}
For i := 1 To 10 Do
S:= S+i;
Если многократно нужно выполнить несколько операторов, то они помещаются в блок операторов – между служебными словами Beginи End.
Пример. Ввести в ЭВМ 10 трёхзначных чисел и распечатать их цифры в обратном порядке, т.е. начиная с младшей.
Алгоритм (укрупненный).
1. Для номера от 1 до 10 выполнить
Ввести и обработать число
2. Конец.
Детализируем этот алгоритм.
1. Для номера от 1 до 10 выполнить
1.1. Ввести число.
1.2. Ц.1 = число mod 10; {выделяем младшую цифру}
1.3. Число = число div 10; {выделяем две старших цифры}
1.4. Ц.2 = число mod 10; {выделяем среднюю цифру}
1.5. Ц.3 = число div 10; {выделяем старшую цифру}
1.6. Вывести Ц1, Ц2, Ц3.
Программа для этого алгоритма будет иметь вид
Program Dig;
Const
D=10;
Var
Num,C1,C2,C3 : Integrer; {исходное число и цифры}
i : Integrer; {номер числа }
Begin
For I := 1 To D Do
Begin
Readln(Num);
C1:=Num Mod D;
Num:=Num Div D;
C2:=Num Mod D;
C3:=Num Div D;
Writeln(C1:2,C2:2,C3:2)
End;
End.
Пункты 1.2 – 1.6 можно также выполнить в цикле вида