Similar presentations:
Переход к циклической структуре
1. Переход к циклической структуре
12.
Цикл со счетчикомНачало
Var i,N: integer;
Begin
Ввод N
Цикл с предусловием
Начало
Вывод
«Тело цикла»
Readln(N);
Readln(N);
i:=0;
i:=0
Begin
while (i<N) do
Writeln(‘Тело цикла’);
End;
End.
Вывод «Цикл
закончен»
Begin
Ввод N
for i:=1 to N do
i=1, N, шаг 1
Var i,N: integer;
i<N
НЕТ
Begin
i:=i+1;
ДА
i:=i+1
Writeln(‘Тело цикла’);
End;
Вывод
«Тело цикла»
End.
Конец
Вывод «Цикл
закончен»
Конец
2
3. Задача
• Написать программу вычисления N!(N факториал):
• N!=1•2•3•4•…•N
• причем принято 0!=1
3
4. Математическая модель
• S(N)=1*2*3*…*N4
5. Математическая модель
• S(N)=1*2*3*…*N• Факториал для первых значений N:
• при N=0: S(0)=1
5
6. Математическая модель
• S(N)=1*2*3*…*N• Факториал для первых значений N:
• при N=0: S(0)=1
• при N=1: S(1)=1
6
7. Математическая модель
• S(N)=1*2*3*…*NФакториал для первых значений N:
при N=0: S(0)=1
при N=1: S(1)=1
при N=2: S(2)=1*2
7
8. Математическая модель
• S(N)=1*2*3*…*NФакториал для первых значений N:
при N=0: S(0)=1
при N=1: S(1)=1
при N=2: S(2)=1*2
при N=3: S(3)=1*2*3
8
9. Математическая модель
• S(N)=1*2*3*…*NФакториал для первых значений N:
при N=0: S(0)=1
при N=1: S(1)=1*1
при N=2: S(2)=1*2
при N=3: S(3)=1*2*3
9
10. Математическая модель
• S(N)=1*2*3*…*NФакториал для первых значений N:
при N=0: S(0)=1
при N=1: S(1)=1*1
при N=2: S(2)=1*1*2
при N=3: S(3)=1*2*3
10
11. Математическая модель
• S(N)=1*2*3*…*NФакториал для первых значений N:
при N=0: S(0)=1
при N=1: S(1)=1*1
при N=2: S(2)=1*1*2
при N=3: S(3)=1*1*2*3
11
12. Математическая модель
• S(N)=1*2*3*…*NФакториал для первых значений N:
при N=0: S(0)=1
при N=1: S(1)=1*1
=S(0)*1
при N=2: S(2)=1*1*2
при N=3: S(3)=1*1*2*3
Произведем замену текущего значения функции через предыдущее значение
12
13. Математическая модель
• S(N)=1*2*3*…*NФакториал для первых значений N:
при N=0: S(0)=1
при N=1: S(1)=1*1
=S(0)*1
при N=2: S(2)=1*1*2
=S(1)*2
при N=3: S(3)=1*1*2*3
13
14. Математическая модель
• S(N)=1*2*3*…*NФакториал для первых значений N:
при N=0: S(0)=1
при N=1: S(1)=1*1
=S(0)*1
при N=2: S(2)=1*1*2
=S(1)*2
при N=3: S(3)=1*1*2*3 =S(2)*3
14
15. Математическая модель
• S(N)=1*2*3*…*NФакториал для первых значений N:
при N=0: S(0)=1
при N=1: S(1)=S(0)*1
при N=2: S(2)=S(1)*2
при N=3: S(3)=S(2)*3
15
16. Математическая модель
• S(N)=1*2*3*…*NФакториал для первых значений N:
при N=0: S(0)=1
при N=1: S(1)=S(0)*1
при N=2: S(2)=S(1)*2
при N=3: S(3)=S(2)*3
Опустим индексы (x), перейдем к последовательному вычислению S по шагам.
16
17. Математическая модель
• S(N)=1*2*3*…*NФакториал для первых значений N:
шаг 0: S:=1
(S=1)
шаг 1: S:=S*1 (S=1)
шаг 2: S:=S*2 (S=2)
шаг 3: S:=S*3 (S=6)
17
18. Математическая модель
• S(N)=1*2*3*…*NФакториал для первых значений N:
шаг 0: S:=1
(S=1)
шаг 1: S:=S*1 (S=1)
шаг 2: S:=S*2 (S=2)
шаг 3: S:=S*3 (S=6)
Введем дополнительную переменную и выполним замену
18
19. Математическая модель
• S(N)=1*2*3*…*NФакториал для первых значений N:
шаг 0:
S:=1
шаг 1: a:=1;
S:=S*a
шаг 2:
S:=S*2
шаг 3:
S:=S*3
19
20. Математическая модель
• S(N)=1*2*3*…*NФакториал для первых значений N:
шаг 0:
S:=1
шаг 1: a:=1;
S:=S*a
шаг 2: a:=2;
S:=S*a
шаг 3:
S:=S*3
20
21. Математическая модель
• S(N)=1*2*3*…*NФакториал для первых значений N:
шаг 0:
S:=1
шаг 1: a:=1;
S:=S*a
шаг 2: a:=2;
S:=S*a
шаг 3: a:=3;
S:=S*a
21
22. Математическая модель
• S(N)=1*2*3*…*NФакториал для первых значений N:
шаг 0:
S:=1
шаг 1: a:=1;
S:=S*a
шаг 2: a:=2;
S:=S*a
шаг 3: a:=3;
S:=S*a
Действие повторяется
22
23. Математическая модель
• S(N)=1*2*3*…*NФакториал для первых значений N:
шаг 0: a:=0;
S:=1
шаг 1: a:=1;
S:=S*a
шаг 2: a:=2;
S:=S*a
шаг 3: a:=3;
S:=S*a
добавим формально a:=0
23
24. Математическая модель
• S(N)=1*2*3*…*NФакториал для первых значений N:
шаг 0: a:=0;
S:=1
шаг 1: a:=a+1; S:=S*a
шаг 2: a:=2;
S:=S*a
шаг 3: a:=3;
S:=S*a
Произведем замену a:=1 на формулу a+1
24
25. Математическая модель
• S(N)=1*2*3*…*NФакториал для первых значений N:
шаг 0: a:=0;
S:=1
шаг 1: a:=a+1; S:=S*a
шаг 2: a:=a+1; S:=S*a
шаг 3: a:=3;
S:=S*a
Произведем замену a:=2 на формулу a+1
25
26. Математическая модель
• S(N)=1*2*3*…*NФакториал для первых значений N:
шаг 0: a:=0;
S:=1
шаг 1: a:=a+1; S:=S*a
шаг 2: a:=a+1; S:=S*a
шаг 3: a:=a+1; S:=S*a
Произведем замену a:=3 на формулу a+1
26
27. Математическая модель
• S(N)=1*2*3*…*NФакториал для первых значений N:
шаг 0: a:=0;
S:=1
шаг 1: a:=a+1; S:=S*a
шаг 2: a:=a+1; S:=S*a
шаг 3: a:=a+1; S:=S*a
Шаги 1,2,3 полностью повторяются.
27
28. Математическая модель
• S(N)=1*2*3*…*NФакториал для первых значений N:
шаг 0: a:=0;
S:=1
шаг 1: a:=a+1; S:=S*a
шаг 2: a:=a+1; S:=S*a
шаг 3: a:=a+1; S:=S*a
Шаг 0 – присвоение начальных значений
28
29.
• Переход к циклической структуревозможен только тогда, когда действия
на каждом последующем шаге
абсолютно повторяют действия
предыдущего шага, начиная с
определенного шага (обычно шаг 1 или
2).
29
30. Математическая модель
• S(N)=1*2*3*…*NФакториал для первых значений N:
шаг 0: a:=0;
S:=1 – перед циклом
шаг 1: a:=a+1; S:=S*a – тело цикла
шаг 2: a:=a+1; S:=S*a
шаг 3: a:=a+1; S:=S*a
30
31. Математическая модель
• S(N)=1*2*3*…*NФакториал для первых значений N:
a:=0
s:=1
шаг 0: a:=0;
S:=1
a:=a+1
шаг 1: a:=a+1; S:=S*a
s:=s*a
шаг 2: a:=a+1; S:=S*a
Порядок действий
имеет значение!
шаг 3: a:=a+1; S:=S*a
31
32.
НачалоНачало
Ввод N
Начальные значения
вставить перед циклом
Ввод N
a:=0
s:=1
i:=0
i=1, N, шаг 1
Вывод
«Тело цикла»
Вывод «Цикл
закончен»
i<N
a:=a+1
s:=s*a
Повторяющиеся шаги
поместить внутрь цикла
НЕТ
ДА
i:=i+1
Вывод
«Тело цикла»
Конец
Вывод «Цикл
закончен»
Конец
32
33.
НачалоНачало
Ввод N
Ввод N
a:=0
s:=1
a:=0
s:=1
a:=0
s:=1
i:=0
i=1, N, шаг 1
a:=a+1
s:=s*a
a:=a+1
s:=s*a
i<N
НЕТ
ДА
i:=i+1
Вывод s
a:=a+1
s:=s*a
Конец
Вывод s
Конец
33
34.
НачалоНачало
Ввод N
Ввод N
s:=1
s:=1
s:=1
i:=0
i=1, N, шаг 1
s:=s*i
i<N
НЕТ
ДА
s:=s*i
i:=i+1
Вывод s
Конец
Так как переменная a
принимает те же значения,
что и переменная цикла i,
то можно вместо a
использовать i.
s:=s*i
Вывод s
Конец
34