Оператор цикла с параметром (цикл for) применяется тогда, когда заранее известно количество повторений одного и того же действия.
Для записи оператора цикла с параметром в языке Паскаль используется две формы записи.
for <параметр> := <начальное значение> to <конечное значение> do
<тело цикла>;
или
for <параметр> := <начальное значение> downto <конечное значение> do
<тело цикла>;
В первом операторе, с ключевым словом to в заголовке, параметр цикла изменяется от начального значения до конечного значения, увеличиваясь всякий раз на единицу.
Во втором операторе, с ключевым словом downto, параметр цикла уменьшаясь на единицу.
здесь:
<параметр> – переменная цикла (счетчик цикла);
<начальное значение> – начальное значение переменной цикла;
<конечное значение> – конечное значение переменной цикла.
В языке Паскаль шаг цикла всегда равен единице.
Если тело цикла состоит из нескольких операторов, то оно заключается в операторные скобки Begin – End.
Пример с использованием оператора цикла For.
Пример. Из чисел от 10 до 99 вывести те, сумма цифр которых равна n (0<n<=18).
Вопросы для обсуждения
Каким действием можно выделить последнюю цифру числа?
Каким действием можно выделить первую цифру числа?
Обозначим:
k – это просматриваемое число;
p1 – это первая цифра числа k;
p2 – это вторая цифра числа k;
s – это сумма цифр данного числа k.
Число k будем выписывать только в том случае, когда сумма p1 и p2 будет равна n.
Program Primer9_1;
Var k,n,p1,p2,s : Integer;
Begin
Writeln('Введите целое число n (0 < n <= 18): ');
Readln(n);
For k:=10 To 99 Do {Для(For) k от 10 до (To) 99 делать(Do)}
Begin
p2:=k Mod 10; {Выделяем вторую цифру}
p1:=k Div 10; {Выделяем вторую цифру}
s:=p1+p2;
If s = n Then Writeln(k); {Если сумма равна n, то выводим k}
End;
End.
Досрочное прекращение (BREAK)
Процедура BREAK применяется для досрочного прекращения циклов WHILE, REPEAT…UNTIL и FOR.
Пример: Определение номера первого нулевого элемента в массиве А
VAR
i, num : Integer;
A : array[1..10] of Integer;
BEGIN
. . . { Ввод элементов массива А }
num := 0;
FOR i:=1 TO 10 DO { Цикл для i от 1 до 10 }
IF A[i]=0 THEN begin { если найден нулевой элемент }
num := i; { запоминаем его номер }
BREAK { прекращаем цикл }
end;
IF num <> 0 THEN WriteLn(num)
ELSE WriteLn(‘Нулевых элементов нет’);
END.