Переход к циклической структуре
Задача
Математическая модель
Математическая модель
Математическая модель
Математическая модель
Математическая модель
Математическая модель
Математическая модель
Математическая модель
Математическая модель
Математическая модель
Математическая модель
Математическая модель
Математическая модель
Математическая модель
Математическая модель
Математическая модель
Математическая модель
Математическая модель
Математическая модель
Математическая модель
Математическая модель
Математическая модель
Математическая модель
Математическая модель
Математическая модель
Математическая модель
Математическая модель
401.50K
Категория: ПрограммированиеПрограммирование

Переход к циклической структуре

1. Переход к циклической структуре

1

2.

Цикл со счетчиком
Начало
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*…*N
4

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
English     Русский Правила