Но русским Паскаль не владеет, а потому переведем это на английский:
Как видите, конструкция построена на трех ключевых словах: FOR-TO-DO. После слова FOR следует оператор присваивания начального значения счетчику цикла. За словом TO указывают конечное значение счетчика, а после DO – выполняемый внутри цикла оператор. Но где наращивается счетчик? А нигде, это происходит автоматически! Теперь задача распечатки чисел может быть решена одним составным оператором.
var N : integer; { счетчик }
begin
for N:=1 to 10 do Writeln(N);
end.
Испытайте эту программку. Согласитесь, что ошибиться здесь труднее, чем в варианте с REPEAT. Как только вы написали FOR, то обязаны тут же указать начальное и конечное значения счетчика, а наращивать его Паскаль будет и без вас. В качестве начального и конечного значений вы вправе указать не только числа, но и выражения, – они будут вычислены один раз в начале цикла. Если начальное значение счетчика окажется равным конечному, цикл выполнится единожды. А если конечное значение окажется меньше начального, то ни разу!
Осталось ответить лишь на один вопрос: что, если внутри цикла надо выполнить несколько операторов? Ведь после слова DO предусмотрен лишь один. Впрочем, те, кто помнит об операторных скобках BEGIN-END, знают ответ. Напомню, что эти скобки превращают группу операторов в единый блок, этим мы и воспользуемся в новой версии экзаменатора.
{ P_17_1 – экзаменатор, выставляющий оценку }
var A, B, C : integer; { сомножители и произведение }
Q, E : integer; { счетчик вопросов и счетчик ошибок }
S: string;
begin
Randomize;
E:= 0; { обнуляем счетчики ошибок }
A:= 1+ Random(10); B:= 1+ Random(10);
Write(Q,’) Сколько будет ’, A,’ x ’,B, ’ ? ’);
Readln(C);
{ Если ответ неверный, увеличиваем счетчик ошибок }
if A*B <> C then E:= E+1;
case E of { выставляем оценку }
0: S:=’Отлично!’;
else S:=’Ну оччччень плохо!’;
end;
Writeln(S, ’ Нажмите Enter’); Readln;
end.
Рассмотрим изюминки этой программы. В операторе
Write(Q,’) Сколько будет ’, A,’ x ’,B, ’ ? ’);
вместе с вопросом печатается его порядковый номер Q.