Часто при решении задач возникает необходимость выполнения одних и тех же действий, но с разными значениями переменных. В таких случаях применяется циклическая конструкция.
Вы уже знаете, существует три вида циклов: с параметром, с предусловием и с постусловием.
Оператор цикла с параметром применяют тогда, когда известно число повторений одного и того же действия.
Общая форма записи цикла с параметром:
Блок-схема цикла с параметром
Начальное и конечное значение параметра могут быть представлены константами, переменными или арифметическими выражениями.
Управляющая переменная (параметр), а также значения А и В должны быть одного типа, обязательного порядкового (перечислить порядковые типы данных).
Например:
Рассмотрим, как выполняется оператор цикла с параметром For – To.
1) Сначала вычисляются значения выражения А и В (они остаются фиксированными до конца выполнения цикла).
2) Если A< .=B, то параметр последовательно принимает значения А, А+1, А+2…В-1, В, и для каждого из этих значений выполняется < .тело цикла> ..
|
|
3) Если А> .В, то тело цикла не будет выполнено ни разу и выполнение цикла с параметром сразу же закончится.
Выполнение цикла For – DownTo происходит аналогично, но с шагом, равным –1.
Изменение параметра в теле цикла For может привести к ошибкам, считается «дурным тоном» в программировании. Договоримся о том, что это действие запрещено законом. Запретим искусственные выходы из For. Оператор For должен иметь одну точку входа и одну выхода.
Если тело цикла состоит из нескольких операторов, то операторы тела цикла заключаются в операторные скобки Begin End.
Задание 1. Решить задачу возведения числа x в неотрицательную степень y.
Ответить на вопросы:
1) Какие действия повторяются многократно при возведении числа в степень?
(Многократное умножение числа на себя. x )
2) Какую функцию будет выполнять параметр цикла?
(Будет отвечать за количество повторений операции умножения).
3) Построить алгоритм решения задачи в виде блок-схемы.
4) Почему начальное значение переменной принято равное 1?
Трассировка примера | |||
Пусть введеныx:=2 . y:=5 | |||
№ шага | i | A< .=B | s |
1≤5 | s:=1*2 | ||
2≤5 | s:=2*2 | ||
3≤5 | s:=4*2 | ||
4≤5 | s:=8*2 | ||
5≤5 | s:=16*2 | ||
6≤5 false | Ответ: s=32 |
Program Stepen .
Uses crt .
Var x,y,s,i:integer .
Begin
Clrscr .
Writeln(Enter x, y) .
readln(x, y) .
s:=1 .
for i:=1 to y do
s:=s*x .
Writeln(Stepen=,s) . Readln . End.
Задание 2. Решить задачу нахождения факториала натурального числа N.
Факториал числа N – это результат произведения всех натуральных чисел из диапазона от 1 до N. N! =1*2*3*…(N-1)*N
Ответить на вопросы:
1) Какие действия повторяются многократно при возведении числа в степень? (Многократное умножение различных чисел от 1 до N).
|
|
2) За что будет отвечать параметр цикла? (За величину очередного множителя).
3) Какое начальное значение накапливающей переменной целесообразно взять и почему?
4) Построить алгоритм решения задачи в виде блок-схемы.
Трассировка примера | |||
Пусть введенon:=5 . | |||
№ шага | k | k< .=n | f |
2≤5 | f:=1*2 | ||
3≤5 | f:=2*3 | ||
4≤5 | f:=6*4 | ||
5≤5 | f:=24*5 | ||
6≤5 false | Ответ: f=120 |
Program Factorial .
Uses crt .
Var i,n:integer .
s:longint .
Begin
Clrscr .
Writeln(Enter n) .
Readln(n) .
f:=1 .
for k:=2 to n do
f:=f*k .
Writeln(Factorial=,f) .
Readln .
End.
Задание 3. Найти все двузначные числа, в которых есть цифра N или само число делится на N.