var i: integer;
begin
for i := 1 to 7 do
WriteLn('Отмерил');
WriteLn('Отрезал');
end.
Запустив эту программу, вы обнаружите, что она семь раз отмерила, а потом один раз отрезала. Хотя это соответствует пословице, это не то, что мы хотели.В чём проблема? Дело в том, что цикл for повторяет лишь тот один шаг, который идет сразу после него, — вывод «Отмерил». Второй шаг, вывод «Отрезал», идет отдельно.
А сдвиг строчки «Отрезал» вправо, на один уровень с «Отмерил», вводит нас в заблуждение. Подобный прием сработал бы в языке Python, в котором границы блоков задаются отступами. Но в Паскале это не работает.
Если мы хотим зациклить обе строчки, нам следует объединить их, превратив в составной оператор. Это делается при помощи ключевых слов begin и end (начать, закончить).
var i: integer;
begin
for i := 1 to 7 do
begin
WriteLn('Отмерил');
WriteLn('Отрезал');
end;
end.
Теперь после for весь код от begin до end; рассматривается как один составной оператор, и именно он зацикливается. Такой код семь раз повторит единую процедуру — отмерить и отрезать.