Циклические операторы на Паскале

Содержание

Слайд 2

Цикл с предусловием (WHILE . . . DO . . .)


Цикл с предусловием (WHILE . . . DO . .

.) многократно выполняет одни и те же действия при истинности условия, которое изменяется обычно внутри цикла. Истинность условия проверяется перед выполнением операторов. Таким образом, если условие с самого начала оказалось ложным, то операторы тела цикла не будут выполнены ни разу. Если в цикле необходимо выполнить несколько простых операторов, они объединяются после служебного слова DO в составной оператор операторными скобками BEGIN . . . END.

2

Оператор цикла
с параметром

Оператор цикла
с предусловием

Оператор цикла
с постусловием

да

нет

да

нет

условие

DO

WHILE

оператор

REPEAT

UNTIL

оператор

условие

FOR

TO

DOWNTO

:=

DO

оператор

FOR

:=

DO

оператор

переменная

выражение 1

переменная

выражение 1

Имя параметра (счетчика) цикла

Начальное значение счетчика цикла

выражение 2

выражение 2

Конечное значение счетчика цикла

Циклические операторы на Паскале

Слайд 3

3 В цикле с постусловием (REPEAT . . . UNTIL .


3

В цикле с постусловием (REPEAT . . . UNTIL .

. .) сначала выполняются операторы, составляющие тело цикла, затем проверяется условие, которое в данном случае является условием выхода из цикла, т.е. если оно ложно, то операторы цикла повторяются, иначе (если условие истинно) – цикл завершается. Таким образом, в конструкции (REPEAT . . . UNTIL . . .) тело цикла всегда выполняется хотя бы один раз. В данном цикле не требуется обязательное использование операторных скобок при циклическом выполнении нескольких операторов.

Оператор цикла
с параметром

Оператор цикла
с предусловием

да

нет

Оператор цикла
с постусловием

да

нет

условие

DO

WHILE

оператор

REPEAT

UNTIL

оператор

условие

FOR

TO

DOWNTO

:=

DO

оператор

FOR

:=

DO

оператор

переменная

выражение 1

переменная

выражение 1

Имя параметра (счетчика) цикла

Начальное значение счетчика цикла

выражение 2

выражение 2

Конечное значение счетчика цикла

Циклические операторы на Паскале

Слайд 4

4 Цикл (FOR ... TO ... DO ...) работает следующим образом:


4

Цикл (FOR ... TO ... DO ...) работает следующим образом:

параметру цикла присваивается значение выражения 1, потом это значение сравнивается со значением выражения 2. Если условие выполнения цикла истинно (значение счетчика меньше значения выражения 2 ), то выполняется тело цикла. Далее значение параметра цикла автоматически увеличивается на единицу, снова сравнивается со значением выражения 2, если условие истинно, то опять выполняется тело цикла. Цикл прекращается, когда значение параметра цикла станет больше значения выражения 2.

Оператор цикла
с параметром

Оператор цикла
с предусловием

да

нет

Оператор цикла
с постусловием

да

нет

условие

DO

WHILE

оператор

REPEAT

UNTIL

оператор

условие

FOR

TO

DOWNTO

:=

DO

оператор

FOR

:=

DO

оператор

переменная

выражение 1

переменная

выражение 1

Имя параметра (счетчика) цикла

Начальное значение счетчика цикла

выражение 2

выражение 2

параметр цикла

параметр цикла

Конечное значение счетчика цикла

Циклические операторы на Паскале

Слайд 5

5 Цикл (FOR ... DOWNTO ... DO ...) работает следующим образом:


5

Цикл (FOR ... DOWNTO ... DO ...) работает следующим образом:

параметру цикла присваивается значение выражения 1, потом это значение сравнивается со значением выражения 2. Если условие выполнения цикла истинно (значение счетчика больше значения выражения 2 ), то выполняется тело цикла. Далее значение параметра цикла автоматически уменьшается на единицу, снова сравнивается со значением выражения 2, если условие истинно, то опять выполняется тело цикла. Цикл прекращается, когда значение параметра цикла станет меньше значения выражения 2.

Оператор цикла
с параметром

Оператор цикла
с предусловием

да

нет

Оператор цикла
с постусловием

да

нет

условие

DO

WHILE

оператор

REPEAT

UNTIL

оператор

условие

FOR

TO

DOWNTO

:=

DO

оператор

FOR

:=

DO

оператор

переменная

выражение 1

переменная

выражение 1

Имя параметра (счетчика) цикла

Начальное значение счетчика цикла

выражение 2

выражение 2

параметр цикла

параметр цикла

Конечное значение счетчика цикла

Циклические операторы на Паскале

Слайд 6

6 Для решения одной и той же задачи можно составить несколько


6

Для решения одной и той же задачи можно составить несколько

вариантов вычислительных алгоритмов на основе применения различных операторов. При этом, чем сложнее задача, тем больше возможных путей ее решения. На данном слайде предлагается четыре варианта программ на языке Паскаль для вычисления N факториала. Это хороший пример для демонстрации всех циклических конструкций, используемых в Паскале.

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

Циклические операторы на Паскале

Слайд 7

Циклические структуры алгоритмов «N факториал» F = N! = 1 *

Циклические структуры алгоритмов

«N факториал»
F = N! = 1 * 2

* ... * N

алг 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 необходимо выполнить различное число
умножений, поэтому алгоритм решения данной задачи будет циклическим.

Слайд 8

«N факториал» F = N! = 1 * 2 * ...

«N факториал»
F = N! = 1 * 2 * ... *

N

начало

ввод 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
кон

Циклические структуры алгоритмов

Слайд 9

«N факториал» F = N! = 1 * 2 * ...

«N факториал»
F = N! = 1 * 2 * ... *

N

начало

ввод 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
кон

Циклические структуры алгоритмов

Слайд 10

начало конец да нет Трассировка циклического алгоритма F R Трассировка алгоритма

начало

конец

да

нет

Трассировка циклического алгоритма

F

R



Трассировка алгоритма

алг N !
цел F, N,

R

нц

кон

кц

ввод 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

Слайд 11

начало конец да нет алг N ! цел F, N, R

начало

конец

да

нет

алг N !
цел F, N, R

нц

кон

кц

нач ввод

N

ввод 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

Трассировка циклического алгоритма

Слайд 12

начало конец да нет алг N ! цел F, N, R

начало

конец

да

нет

алг N !
цел F, N, R

нц

кон

кц

нач ввод

N

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

Трассировка циклического алгоритма

Слайд 13

начало конец да нет алг N ! цел F, N, R

начало

конец

да

нет

алг N !
цел F, N, R

нц

кон

кц

нач ввод

N

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, повторять

Трассировка циклического алгоритма

Слайд 14

начало конец да нет алг N ! цел F, N, R

начало

конец

да

нет

алг N !
цел F, N, R

нц

кон

кц

нач ввод

N

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

Трассировка циклического алгоритма

Слайд 15

начало конец да нет алг N ! цел F, N, R

начало

конец

да

нет

алг N !
цел F, N, R

нц

кон

кц

нач ввод

N

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

Трассировка циклического алгоритма

Слайд 16

начало конец да нет алг N ! цел F, N, R

начало

конец

да

нет

алг N !
цел F, N, R

нц

кон

кц

нач ввод

N

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, повторять

Трассировка циклического алгоритма

Слайд 17

алг N ! цел F, N, R нц кон кц нач

алг N !
цел F, N, R

нц

кон

кц

нач ввод

N

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

Трассировка циклического алгоритма

Слайд 18

алг N ! цел F, N, R нц кон кц нач

алг N !
цел F, N, R

нц

кон

кц

нач ввод

N

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

Трассировка циклического алгоритма

Слайд 19

алг N ! цел F, N, R нц кон кц нач

алг N !
цел F, N, R

нц

кон

кц

нач ввод

N

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, повторять

Трассировка циклического алгоритма

Слайд 20

алг N ! цел F, N, R нц кон кц нач

алг N !
цел F, N, R

нц

кон

кц

нач ввод

N

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

Трассировка циклического алгоритма

Слайд 21

алг N ! цел F, N, R нц кон кц нач

алг N !
цел F, N, R

нц

кон

кц

нач ввод

N

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

Трассировка циклического алгоритма

Слайд 22

алг N ! цел F, N, R нц кон кц нач

алг N !
цел F, N, R

нц

кон

кц

нач ввод

N

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, повторять

Трассировка циклического алгоритма

Слайд 23

конец алг N ! цел F, N, R нц кон кц

конец

алг N !
цел F, N, R

нц

кон

кц

нач ввод

N

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

Трассировка циклического алгоритма

Слайд 24

" N - факториал " на Паскале F := 1 начало

" N - факториал " на Паскале

F := 1

начало

да

нет

конец

ввод N

вывод

F

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,’ слов’