Однако в языке Pascal нет оператора, предназначенного именно для записи описанного нами
цикла с параметром. Он реализуется с помощью цикла с предусловием.
i:=nz;
while i<=kz do
begin
i:=i+h;
end;
Но есть оператор цикла с параметром, но при этом значение шага изменения параметра всегда
равно единице, поэтому его указывать не требуется.
Рассмотрим, как же записывается оператор цикла с параметром на языке Paascal. Его запись
начинается со служебного слова for. После него, через пробел, следует название параметра – это
переменная целочисленного типа, объявленная в разделе описания переменных. После этого
следует знак присваивания – «:=». После него следует выражение, которым задаётся начальное
значение параметра. Через пробел после него следует одно из двух служебных
слов, to или downto. Если это слово to – значение параметра при каждом выполнении тела цикла
будет увеличиваться на 1. Если это слово downto – значение параметра при каждом выполнении
тела цикла будет уменьшаться на 1. Через пробел после одного из описанных служебных слов
следует выражение, задающее конечное значение параметра. После него, через пробел, следует
служебное слово do. Со следующей строки, с отступом в один пробел от слова for, следует тело
цикла. Если тело цикла состоит из нескольких операторов, то оно замыкается между
служебными словами begin и end. После слова end ставится точка с запятой.
for <п-р>:=<НЗ> to <КЗ> do
begin
<оператор 1>;
<оператор 2>;
<оператор n>;
end;
Решим несколько задач, используя цикл с заданным числом повторений. Вычислим факториал
натурального числа n – n!. n вводится с клавиатуры и находится в диапазоне от 1 до 12.
Вспомним, что n! = 1 × 2 × … × n. Таким образом, для того, чтобы вычислить значение n! нам
достаточно перемножить все целые числа от 1 до n.
Составим блок-схему алгоритма решения задачи. В начале пользователь задаёт с клавиатуры
значение n. Нам понадобится переменная, которая будет хранить значение вычисляемого
произведения. Назовём её f и присвоим ей значение 1, так как ни одного множителя мы ещё не
учли. Дальше будет следовать блок цикла с параметром. Назовём параметр i, и он будет
изменяться от 1 до n. Так как шаг изменения параметра равен 1, его указывать не нужно. i будет
значением очередного множителя нашего произведения f. Поэтому тело цикла будет содержать
всего один оператор присваивания f= f × i. После цикла нам остаётся лишь вывести значение
вычисленного произведения f. На этом наш алгоритм завершит свою работу.
Блок-схема алгоритма решения задачи
begin
writeln ('Программа вычисления n!');
write ('n=');
readln (n);
f:=1;
for i:=1 to n do
f:=f*i;
writeln (n, '!=', f);
end.
Программа для решения задачи
Решим ещё одну задачу. Трамвайный билет имеет номер, состоящий из девяти цифр.
Определить, является ли трамвайный билет счастливым, по введённому номеру. Счастливым
называется билет с номером, сумма первых четырёх цифр которого равна сумме последних
четырёх цифр.
Для решения этой задачи будем последовательно рассматривать цифры номера билета справа
налево, рассчитывая при этом сначала сумму последних четырёх цифр, а потом и первых
четырёх. В конце нам останется лишь сравнить две полученные суммы.
Составим блок-схему алгоритма решения этой задачи. В начале пользователь задаёт номер
билета. Для хранения номера билета будем использовать целочисленную переменную n. Так как
значения сумм цифр мы ещё не рассчитывали, присвоим им, то есть
переменным s1 и s2 значение 0. Теперь будет следовать цикл для i, изменяющегося от 1 до 4, по
количеству цифр, для вычисления одной суммы. Внутри цикла мы будем увеличивать значение
первой суммы, которое мы будем хранить в переменной s1, на значение правой цифры числа n.
Как мы помним, чтобы выделить правую цифру числа, нам нужно найти остаток от его деления
на 10. После того, как мы учли правую цифру, нам нужно убрать её из числа. Для этого
достаточно n без остатка разделить на 10. Так по завершении работы цикла мы рассчитаем
значение s1 и вычеркнем четыре правых цифры из числа. Следующая правая цифра не входит не
в первую не во вторую сумму. Поэтому мы просто убираем её нигде не учитывая. Дальше будет
следовать ещё один цикл для i, изменяющегося от 1 до 4, по количеству оставшихся цифр. В нём
мы будем увеличивать значение второй суммы, которую мы будем хранить в переменной s2, на
следующую правую цифру числа. После этого мы снова будем убирать из числа правую цифру.
После второго цикла запишем блок ветвления с условием s1 = s2. Если это условие выполняется
– билет является счастливым, и мы выведем сообщение об этом, в противном случае – билет не
является счастливым, и мы также выведем сообщение об этом.
Блок-схема алгоритма решения задачи
begin
writeln ('Программа, определяющая, является ли трамвайный билет счастливым. Введите
девятизначный номер билета.');
readln (n);
s1:=0;
s2:=0;
for i:=1 to 4 do
begin
s1:=s1+n mod 10;
n:=n div 10;
end;
n:=n div 10;
for i:=1 to 4 do
begin
s2:=s2+n mod 10;
n:=n div 10;
end;
if s1=s2
then write ('Билет с указанным номером является счастливым.')
else write ('Билет с указанным номером не является счастливым.');
end.
Программа для решения задачи
Запустим программу на выполнение и зададим номер билета: 561379042. В этом номере билета
суммы первых и последних четырёх цифр равны 15 и такой билет действительно счастливый.
Снова запустим программу и зададим номер билета: 578908213. Суммы первых и последних
четырёх цифр в этом номере билета не равны, следовательно, билет с этим номером не является
счастливым.
Важно запомнить:
На языке Pascal цикл с заданным числом повторений записывается так:
begin
<оператор 1>;
<оператор 2>;
<оператор n>;
end;
Он имеет управляющий параметр, изменяющийся в указанном диапазоне, с шагом равным
единице. Роль параметра выполняет переменная одного из целочисленных типов.