На примере 1 был рассмотрен частный случай применения оператора for. В общем виде оператор for может быть представлен в двух формах.
Первая форма последовательно наращивает параметр цикла, увеличивая его каждый раз на 1:
For <параметр цикла>:= <начальное значение> to <конечное значение> do <оператор>;
Кратко: For i:=N1 to N2 do <оператор>; (N1<N2)
Вторая форма последовательно уменьшает переменную-параметр цикла на 1:
For <параметр цикла>:= <начальное значение> downto <конечное значение> do <оператор>;
Кратко: For i:=N1 downto N2 do <оператор>; (N1>N2)
В представленных формах оператора цикла For……do – заголовок цикла, <оператор> - тело цикла. Тело цикла может быть простым либо составным оператором. Параметр цикла, его начальное и конечное значения должны принадлежать к одному и тому же типу данных (чаще всего это целочисленный тип integer, но могут быть и другие типы, кроме вещественного).
Блок-схема цикла с параметром For..to может иметь следующий вид (рис. 1.8.):


Рис. 1.8
Пример 2. Вычислить сумму первых N натуральных чисел с помощью оператора for..downto.
В этом случае программа решения задачи примет вид:
program summa_N;
var i, n,sum:integer;
begin
write ('n='); {ввод исходных данных с клавиатуры}
readln(n); {n - количество первых натуральных чисел}
sum:=0; {начальное значение суммы}
for i:=n downto 1 do {параметр цикла i (счетчик цикла)
меняется от 10 до 1 с шагом -1}
sum:=sum+i; {тело цикла}
writeln('Sum =',sum);{вывод результата}
end.
Результат выполнения программы при n=10:
n=10 Sum =55 |
Важно помнить:
Ø Не рекомендуется изменять параметр цикла в теле цикла с помощью команды присваивания. Это может привести к «зацикливанию» программы (бесконечному повторению тела цикла) либо к неверным результатам выполнения программы.
Ø Если в заголовке оператора for..to начальное значение параметра цикла больше конечного значения, то тело цикла не выполнится ни разу.
Ø Если в заголовке оператора for..downto начальное значение параметра цикла меньше конечного значения, то тело цикла не выполнится ни разу.
Ø При выходе из цикла текущее значение параметра цикла равно конечному значению в операторе for..to и наоборот в операторе for..downto.
Ø Телом цикла может быть не один оператор, а группа операторов (составной оператор), которую обязательно надо заключать в операторные скобки begin… end.
Рассмотрим несколько примеров использования оператора for.
Пример 3. Вывести на экран 5 первых нечетных натуральных чисел.
Программа решения задачи может иметь вид:
Program N5;
var i, x:integer; {i – параметр цикла, в переменную
x записываем нечетные числа}
begin
x:=1; {первое нечетное натуральное число равно 1}
for i:=1 to 5 do {параметр i (счетчик цикла) меняется
от 1 до 5 с шагом 1}
begin
write(x,' '); {вывод нечетного числа}
x:=x+2; {следующее нечетного число на 2 больше
предыдущего}
end;
end.
Результат выполнения программы:
1 3 5 7 9 |
В программе N5 телом цикла является составной оператор, который образуют команды write(x,' ') и x:=x+2.
Блок-схема алгоритма программы N5 представлена на рисунке 1.9.


Рис. 1.9
С помощью оператора For можно рисовать на экране монитора различное количество графических фигур. Например, можно выводить на экран монитора множество отрезков разных цветов.
Пример 4. Вывести на экран монитора N отрезков голубого цвета, расположение которых определяется случайным образом.
Программа решения задачи может иметь вид:
program Line_n;
uses graphabc;
var k, n:integer;
begin
write ('n=');
readln (n);
clearwindow(clViolet);
setPenWidth(5);
setPenColor(clBlue);
randomize;
for k:=1 to n do
Line (random(10), random(10),random(600),random(600));
end.
В программе используются новые команды. Это randomize – подключение генератора случайных чисел, и random(n), выдающая случайные числа от 0 до n-1 (в данном случае от 0 до 9).
Результат выполнения программы при n=10 может быть таким:

Рис. 1.10
Пример 5. Вывести на экран все натуральные числа от 5 до 9.
Программа решения задачи может иметь вид:
program N5_9;
var i:integer; {i – переменная цикла и в то же время выводимое
число}
begin
for i:=5 to 9 do {переменная i (счетчик цикла) меняется
от 5 до 9 с шагом 1}
write(i,' '); {вывод очередного числа – тело цикла}
end.
Результат выполнения программы:
5 6 7 8 9 |
Из примера 5 видно, что начальным значением параметра цикла for..to не обязательно должна быть единица. Чтобы узнать, сколько раз выполнится тело цикла for, нужно найти разность между крайними значениями параметра цикла (по модулю) и прибавить к результату 1. Например, в данном примере 4 тело цикла выполнится (9-5)+1 раз, то есть 5 раз, что соответствует условию задачи.
|
4. В каких случаях в программе используется оператор for?
5. Какие формы оператора for вы знаете?
6. Чем отличается формы «to» и «downto» оператора for?
|
1. Можно ли изменять параметр цикла в теле цикла?
2. Какой тип данных может иметь параметр цикла?
Упражнения
1. Сколько раз выполнится тело цикла:
For n:=3 to 6 do write (’*’);
2. Что будет выведено на экран монитора в результате выполнения цикла:
For i:=1 to 5 do write (i,’ ’);
3. Составьте программу, которая 6 раз выведет на экран монитора ваше имя.
4. Составьте программу, которая рисует 10 окружностей зеленого цвета разных радиусов с одним центром.
5. Составьте программу и блок-схему, которая выводит на экран
а) 5 первых четных натуральных чисел;
б) N первых натуральных чисел:
в) N первых четных натуральных чисел;
6. Составьте программу, которая вычисляет сумму натуральных чисел от 10
до 15.
7. Составьте программу, которая вычисляет сумму первых пяти нечетных
натуральных чисел.
3.3 Оператор цикла с предусловием
Оператор цикл с параметром for отлично выполняет свои функции, когда число повторений действий заранее известно. Однако такая ситуация встречается в программировании далеко не всегда. Часто приходится решать задачи, когда число повторений действий в теле цикла неизвестно и определяется в ходе решения задачи. В этом случае применяют цикл с условием. В языке программирования Pascal имеется две разновидности цикла с условием:
Ø цикл с предварительным условием - условие цикла проверяется перед выполнением тела цикла;
Ø цикл с последующим условием - условие цикла проверяется после выполнения тела цикла.
Остановимся на цикле с предварительным условием (кратко, с предусловием). Цикл с предусловием – это цикл, который повторяется до тех пор, пока условие выполняется (истинно). Блок-схема цикла с предусловием представлена на рисунке 1.11


Рис. 1.11
Для реализации цикла с предусловием используется оператор While. В общем виде оператор While на языке программирования Паскаль может быть представлен так:
While <условие> do заголовок цикла
<оператор>; тело цикла
Если тело цикла состоит из нескольких операторов, их нужно заключить в операторные скобки begin…end. В этом случае оператор While будет выглядеть так:
While <условие> do заголовок цикла
Begin
<оператор_1>; тело цикла
<оператор_2>;
…………
End;
Значение выражения <условие>, записанное после слова While, проверяется перед каждым выполнением оператора (операторов) тела цикла.
Если <условие> верно (истинно), выполняется тело цикла, и снова вычисляется и проверяется выражение <условия>. Если результат проверки <условия> неверен (ложный), происходит выход из цикла.
Рассмотрим, как работает оператор While на известном вам примере вычисления суммы N первых натуральных чисел. Кстати, задачи, которые можно решить с помощью оператора for, всегда можно решить и с помощью оператора While.
Пример 5. Вычислить сумму первых N натуральных чисел.
Программа решения задачи может иметь вид:
program summa_N_2;
var i, n,sum:integer;
begin
write ('n='); {ввод исходных данных с клавиатуры}
readln(n); {n - количество первых натуральных чисел}
sum:=0; {присвоим переменной sum начальное значение 0,}
i:=1; {а переменной i - начальное значение 1}
|
Из за большого объема этот материал размещен на нескольких страницах:
1 2 3 4 5 6 7 |


