- Главная
- Информатика
- Циклические операторы на Паскале
Содержание
- 2. Цикл с предусловием (WHILE . . . DO . . .) многократно выполняет одни и те
- 3. 3 В цикле с постусловием (REPEAT . . . UNTIL . . .) сначала выполняются операторы,
- 4. 4 Цикл (FOR ... TO ... DO ...) работает следующим образом: параметру цикла присваивается значение выражения
- 5. 5 Цикл (FOR ... DOWNTO ... DO ...) работает следующим образом: параметру цикла присваивается значение выражения
- 6. 6 Для решения одной и той же задачи можно составить несколько вариантов вычислительных алгоритмов на основе
- 7. Циклические структуры алгоритмов «N факториал» F = N! = 1 * 2 * ... * N
- 8. «N факториал» F = N! = 1 * 2 * ... * N начало ввод N
- 9. «N факториал» F = N! = 1 * 2 * ... * N начало ввод N
- 10. начало конец да нет Трассировка циклического алгоритма F R Трассировка алгоритма алг N ! цел F,
- 11. начало конец да нет алг N ! цел F, N, R нц кон кц нач ввод
- 12. начало конец да нет алг N ! цел F, N, R нц кон кц нач ввод
- 13. начало конец да нет алг N ! цел F, N, R нц кон кц нач ввод
- 14. начало конец да нет алг N ! цел F, N, R нц кон кц нач ввод
- 15. начало конец да нет алг N ! цел F, N, R нц кон кц нач ввод
- 16. начало конец да нет алг N ! цел F, N, R нц кон кц нач ввод
- 17. алг N ! цел F, N, R нц кон кц нач ввод N R := R
- 18. алг N ! цел F, N, R нц кон кц нач ввод N F := F
- 19. алг N ! цел F, N, R нц кон кц нач ввод N F := F
- 20. алг N ! цел F, N, R нц кон кц нач ввод N R := R
- 21. алг N ! цел F, N, R нц кон кц нач ввод N F := F
- 22. алг N ! цел F, N, R нц кон кц нач ввод N F := F
- 23. конец алг N ! цел F, N, R нц кон кц нач ввод N F :=
- 24. " N - факториал " на Паскале F := 1 начало да нет конец ввод N
- 26. Скачать презентацию
Цикл с предусловием (WHILE . . . DO . .
Цикл с предусловием (WHILE . . . DO . .
2
Оператор цикла
с параметром
Оператор цикла
с предусловием
Оператор цикла
с постусловием
да
нет
да
нет
условие
DO
WHILE
оператор
REPEAT
UNTIL
оператор
условие
FOR
TO
DOWNTO
:=
DO
оператор
FOR
:=
DO
оператор
переменная
выражение 1
переменная
выражение 1
Имя параметра (счетчика) цикла
Начальное значение счетчика цикла
выражение 2
выражение 2
Конечное значение счетчика цикла
Циклические операторы на Паскале
3
В цикле с постусловием (REPEAT . . . UNTIL .
3
В цикле с постусловием (REPEAT . . . UNTIL .
Оператор цикла
с параметром
Оператор цикла
с предусловием
да
нет
Оператор цикла
с постусловием
да
нет
условие
DO
WHILE
оператор
REPEAT
UNTIL
оператор
условие
FOR
TO
DOWNTO
:=
DO
оператор
FOR
:=
DO
оператор
переменная
выражение 1
переменная
выражение 1
Имя параметра (счетчика) цикла
Начальное значение счетчика цикла
выражение 2
выражение 2
Конечное значение счетчика цикла
Циклические операторы на Паскале
4
Цикл (FOR ... TO ... DO ...) работает следующим образом:
4
Цикл (FOR ... TO ... DO ...) работает следующим образом:
Оператор цикла
с параметром
Оператор цикла
с предусловием
да
нет
Оператор цикла
с постусловием
да
нет
условие
DO
WHILE
оператор
REPEAT
UNTIL
оператор
условие
FOR
TO
DOWNTO
:=
DO
оператор
FOR
:=
DO
оператор
переменная
выражение 1
переменная
выражение 1
Имя параметра (счетчика) цикла
Начальное значение счетчика цикла
выражение 2
выражение 2
параметр цикла
параметр цикла
Конечное значение счетчика цикла
Циклические операторы на Паскале
5
Цикл (FOR ... DOWNTO ... DO ...) работает следующим образом:
5
Цикл (FOR ... DOWNTO ... DO ...) работает следующим образом:
Оператор цикла
с параметром
Оператор цикла
с предусловием
да
нет
Оператор цикла
с постусловием
да
нет
условие
DO
WHILE
оператор
REPEAT
UNTIL
оператор
условие
FOR
TO
DOWNTO
:=
DO
оператор
FOR
:=
DO
оператор
переменная
выражение 1
переменная
выражение 1
Имя параметра (счетчика) цикла
Начальное значение счетчика цикла
выражение 2
выражение 2
параметр цикла
параметр цикла
Конечное значение счетчика цикла
Циклические операторы на Паскале
6
Для решения одной и той же задачи можно составить несколько
6
Для решения одной и той же задачи можно составить несколько
r > n
:=
r
1
;
:=
F
F * r
;
:=
r
r + 1
;
REPEAT
;
UNTIL
FOR
TO
DO
:=
r
1
n
:=
F
F * r
;
DOWNTO
FOR
DO
:=
r
1
n
:=
F
F * r
;
DO
WHILE
r <= n
:=
r
1
;
BEGIN
:=
F
F * r
;
:=
r
r + 1
END
;
«N факториал» F = N! = 1?2 ? ... ? N
Циклические операторы на Паскале
Циклические структуры алгоритмов
«N факториал»
F = N! = 1 * 2
Циклические структуры алгоритмов
«N факториал»
F = N! = 1 * 2
алг N !
цел F, N, R
нач ввод N
F := 1
R := 1
пока R <= N,
повторять
нц
F := F * R
R := R + 1
кц
вывод F
кон
начало
ввод N
вывод F
F := 1
R := 1
F := F * R
R := R + 1
конец
да
нет
R < N
Количество различных комбинаций из N предметов, получаемых изменением их порядка, называется
числом перестановок. Это число выражается функцией от N, которая называется факториалом ( N! )
F = N! = 1 * 2 * . . . * N Подобные задачи решает раздел математики - КОМБИНАТОРИКА.
Для решения подобных задач для разных значений N необходимо выполнить различное число
умножений, поэтому алгоритм решения данной задачи будет циклическим.
«N факториал»
F = N! = 1 * 2 * ... *
«N факториал»
F = N! = 1 * 2 * ... *
начало
ввод N
вывод F
F := 1
R := 1
F := F * R
R := R + 1
конец
да
нет
R < N
ЦИКЛ – это команда исполнителю многократно повторить указанную последовательность команд.
В нашем примере применяется алгоритмическая структура «цикл с предусловием»
Пока выполняется условие цикла ( R <= N),
повторяется выполнение тела цикла (F := F * R, R := R + 1)
алг N !
цел F, N, R
нач ввод N
F := 1
R := 1
пока R <= N,
повторять
нц
F := F * R
R := R + 1
кц
вывод F
кон
Циклические структуры алгоритмов
«N факториал»
F = N! = 1 * 2 * ... *
«N факториал»
F = N! = 1 * 2 * ... *
начало
ввод N
вывод F
F := 1
R := 1
F := F * R
R := R + 1
конец
да
нет
R < N
В данном алгоритме переменная R - множитель, значение которого меняется от 1 до N через 1.
Произведение накапливается в переменной F, начальное значение которой равно 1.
Цикл заканчивается, когда R = N + 1
алг N !
цел F, N, R
нач ввод N
F := 1
R := 1
пока R <= N,
повторять
нц
F := F * R
R := R + 1
кц
вывод F
кон
Циклические структуры алгоритмов
начало
конец
да
нет
Трассировка циклического алгоритма
F
R
Трассировка алгоритма
алг N !
цел F, N,
начало
конец
да
нет
Трассировка циклического алгоритма
F
R
Трассировка алгоритма
алг N !
цел F, N,
нц
кон
кц
ввод N
F := F * R
R := R + 1
вывод F
пока R <= N, повторять
R := 1
F := 1
F := 1
R := 1
R < N
F := F * R
R := R + 1
вывод F
2
3
4
5
6
7
8
9
10
11
12
13
14
1
На первом шаге алгоритма необходимо ввести исходные данные для решения задачи. В нашем примере для вычисления факториала необходимо задать количество ( N ) предметов. Рассмотрим случай, когда N = 3.
нач ввод N
N = 3
начало
конец
да
нет
алг N !
цел F, N, R
нц
кон
кц
нач ввод
начало
конец
да
нет
алг N !
цел F, N, R
нц
кон
кц
нач ввод
ввод N
F := F * R
R := R + 1
вывод F
пока R <= N, повторять
R := 1
F := 1
R := 1
R < N
F := F * R
R := R + 1
вывод F
F
R
1
Трассировка алгоритма
3
4
5
6
7
8
9
10
11
12
13
14
1
2
На втором шаге алгоритма функции F присваивается начальное значение,
равное единице (F := 1)
N = 3
F := 1
Трассировка циклического алгоритма
начало
конец
да
нет
алг N !
цел F, N, R
нц
кон
кц
нач ввод
начало
конец
да
нет
алг N !
цел F, N, R
нц
кон
кц
нач ввод
F := F * R
R := R + 1
вывод F
пока R <= N, повторять
F := 1
F := 1
R := 1
R < N
F := F * R
R := R + 1
вывод F
F
R
1
1
Трассировка алгоритма
2
4
5
6
7
8
9
10
11
12
13
14
1
ввод N
3
Промежуточной переменной R (счетчику) присваивается начальное значение, равное 1. Эта переменная в алгоритме вычисления факториала играет роль множителя, значение которого меняется от начального значения до N (в нашем примере до 3)
N = 3
R := 1
Трассировка циклического алгоритма
начало
конец
да
нет
алг N !
цел F, N, R
нц
кон
кц
нач ввод
начало
конец
да
нет
алг N !
цел F, N, R
нц
кон
кц
нач ввод
F := F * R
R := R + 1
вывод F
R := 1
F := 1
F := 1
R := 1
F := F * R
R := R + 1
вывод F
F
R
1
1
Трассировка алгоритма
2
3
5
6
7
8
9
10
11
12
13
14
1
ввод N
4
Проверяется условие выполнения цикла R <= N. От истинности этого условия зависит, будут ли исполняться команды, составляющие тело цикла. Пока условие на этом шаге выполняется, так как R = 1, а N = 3 ( 1 < 3 )
N = 3
пока R <= N, повторять
Трассировка циклического алгоритма
начало
конец
да
нет
алг N !
цел F, N, R
нц
кон
кц
нач ввод
начало
конец
да
нет
алг N !
цел F, N, R
нц
кон
кц
нач ввод
R := R + 1
вывод F
пока R <= N, повторять
R := 1
F := 1
F := 1
R := 1
R < N
F := F * R
R := R + 1
вывод F
F
R
Трассировка алгоритма
2
3
4
6
7
8
9
10
11
12
13
14
1
ввод N
5
1
1
Поскольку условие выполнения цикла на шаге № 4 выполнено, исполняются последовательно две команды вычисления факториала , составляющие тело цикла. На этом шаге функции F присваивается значение 1 – результат перемножения предыдущих значений переменных F и R ( F := F * R = 1 * 1 = 1 )
N = 3
F := F * R
Трассировка циклического алгоритма
начало
конец
да
нет
алг N !
цел F, N, R
нц
кон
кц
нач ввод
начало
конец
да
нет
алг N !
цел F, N, R
нц
кон
кц
нач ввод
F := F * R
вывод F
пока R <= N, повторять
R := 1
F := 1
F := 1
R := 1
R < N
F := F * R
R := R + 1
вывод F
F
R
Трассировка алгоритма
2
3
4
5
7
8
9
10
11
12
13
14
1
ввод N
6
1
2
Значение переменной R увеличивается на единицу (R : = R + 1 = 1 + 1 = 2).
Новое значение множителя (переменной R) равно 2.
N = 3
R := R + 1
Трассировка циклического алгоритма
начало
конец
да
нет
алг N !
цел F, N, R
нц
кон
кц
нач ввод
начало
конец
да
нет
алг N !
цел F, N, R
нц
кон
кц
нач ввод
F := F * R
R := R + 1
вывод F
R := 1
F := 1
F := 1
R := 1
F := F * R
R := R + 1
вывод F
F
R
Трассировка алгоритма
2
3
4
5
6
8
9
10
11
12
13
14
1
ввод N
7
1
2
Второй раз проверяется условие выполнения цикла R <= N при новом значении R. Пока условие на этом шаге выполняется, так как R = 2, а N = 3 ( 2 < 3 )
N = 3
пока R <= N, повторять
Трассировка циклического алгоритма
алг N !
цел F, N, R
нц
кон
кц
нач ввод
алг N !
цел F, N, R
нц
кон
кц
нач ввод
R := R + 1
вывод F
пока R <= N, повторять
R := 1
F := 1
F
R
Трассировка алгоритма
2
3
4
5
6
7
9
10
11
12
13
14
1
начало
конец
да
нет
F := 1
R := 1
R < N
F := F * R
R := R + 1
вывод F
ввод N
8
2
2
Поскольку условие выполнения цикла на шаге № 7 выполнено, во второй раз исполняются последовательно две команды вычисления факториала , составляющие тело цикла. На этом шаге функции F присваивается значение 2 – результат перемножения предыдущих значений переменных F и R ( F := F * R = 1 * 2 = 2 )
N = 3
F := F * R
Трассировка циклического алгоритма
алг N !
цел F, N, R
нц
кон
кц
нач ввод
алг N !
цел F, N, R
нц
кон
кц
нач ввод
F := F * R
вывод F
пока R <= N, повторять
R := 1
F := 1
F
R
Трассировка алгоритма
2
3
4
5
6
7
8
10
11
12
13
14
1
начало
конец
да
нет
F := 1
R := 1
R < N
F := F * R
R := R + 1
вывод F
ввод N
9
2
3
Значение переменной R увеличивается на единицу (R : = R + 1 = 2 + 1 = 3).
Новое значение множителя (переменной R) равно 3.
N = 3
R := R + 1
Трассировка циклического алгоритма
алг N !
цел F, N, R
нц
кон
кц
нач ввод
алг N !
цел F, N, R
нц
кон
кц
нач ввод
F := F * R
R := R + 1
вывод F
R := 1
F := 1
F
R
Трассировка алгоритма
2
3
4
5
6
7
8
9
11
12
13
14
1
начало
конец
да
нет
F := 1
R := 1
F := F * R
R := R + 1
вывод F
ввод N
10
2
3
В третий раз проверяется условие выполнения цикла R <= N при новом значении R. Пока условие на этом шаге выполняется, так как R = 3, а N = 3 ( 3 = 3 )
N = 3
пока R <= N, повторять
Трассировка циклического алгоритма
алг N !
цел F, N, R
нц
кон
кц
нач ввод
алг N !
цел F, N, R
нц
кон
кц
нач ввод
R := R + 1
вывод F
пока R <= N, повторять
R := 1
F := 1
F
R
Трассировка алгоритма
2
3
4
5
6
7
8
9
10
12
13
14
1
начало
конец
да
нет
F := 1
R := 1
R < N
F := F * R
R := R + 1
вывод F
ввод N
11
6
3
Поскольку условие выполнения цикла на шаге № 10 выполнено, в третий раз исполняются последовательно две команды вычисления факториала , составляющие тело цикла. На этом шаге функции F присваивается значение 6 – результат перемножения предыдущих значений переменных F и R ( F := F * R = 2 * 3 = 6 )
N = 3
F := F * R
Трассировка циклического алгоритма
алг N !
цел F, N, R
нц
кон
кц
нач ввод
алг N !
цел F, N, R
нц
кон
кц
нач ввод
F := F * R
вывод F
пока R <= N, повторять
R := 1
F := 1
F
R
Трассировка алгоритма
2
3
4
5
6
7
8
9
10
11
13
14
1
начало
конец
да
нет
F := 1
R := 1
F := F * R
R := R + 1
вывод F
ввод N
12
1
4
Значение переменной R увеличивается на единицу (R : = R + 1 = 3 + 1 = 4).
Новое значение множителя (переменной R) равно 4.
N = 3
R := R + 1
Трассировка циклического алгоритма
алг N !
цел F, N, R
нц
кон
кц
нач ввод
алг N !
цел F, N, R
нц
кон
кц
нач ввод
F := F * R
R := R + 1
вывод F
R := 1
F := 1
F
R
Трассировка алгоритма
2
3
4
5
6
7
8
9
10
11
12
14
1
начало
конец
да
нет
F := 1
R := 1
F := F * R
R := R + 1
вывод F
ввод N
13
6
4
В четвертый раз проверяется условие выполнения цикла R <= N при новом значении R. Условие на этом шаге не выполняется, так как R = 4, а N = 3 ( 4 > 3 ). После этого шага цикл заканчивается и команды тела цикла исполняться больше не могут.
N = 3
пока R <= N, повторять
Трассировка циклического алгоритма
конец
алг N !
цел F, N, R
нц
кон
кц
нач ввод
конец
алг N !
цел F, N, R
нц
кон
кц
нач ввод
F := F * R
R := R + 1
пока R <= N, повторять
R := 1
F := 1
вывод F
F
R
Трассировка алгоритма
2
3
4
5
6
7
8
9
10
11
12
13
1
начало
да
нет
F := 1
R := 1
F := F * R
R := R + 1
ввод N
14
6
4
Так как на шаге № 13 алгоритма вычисления факториала условие выполнения цикла не выполнено, цикл заканчивается, команды тела цикла не исполняются и управление на шаге № 14 передается команде вывода конечного значения функции F, в которой накоплено значение, равное числу 6. Это последний шаг вычислительного алгоритма.
N = 3
вывод F
Трассировка циклического алгоритма
" N - факториал " на Паскале
F := 1
начало
да
нет
конец
ввод N
вывод
" N - факториал " на Паскале
F := 1
начало
да
нет
конец
ввод N
вывод
R := 1
F := F ? R
R := R + 1
«N - факториал»
F = N! = 1?2 ? ... ? N
PROGRAM
VAR
READLN
WRITE
:
INTEGER
F, N, R
(
)
;
DO
WHILE
Words
;
N
;
(
)
’ Введите число букв ’
R <= N
:=
F
1
BEGIN
;
;
:=
R
1
;
BEGIN
:=
F
F * R
:=
R
R + 1
;
END
;
WRITELN
(
)
’Из ’ ,N,’ букв можно
составить ’ ,F,’ слов’