Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
kamchatgtu246.pdf
Скачиваний:
50
Добавлен:
23.02.2016
Размер:
1.2 Mб
Скачать

5. Сравнение работы операторов while, repeat и for

Отметим отличия и особенности хорошего стиля работы с рассмотренными циклическими операторами (табл. 13).

 

Таблица 13

 

 

 

Цикл с предусловием while

Цикл с постусловием repeat

( пока условие истинно )

( до истинности условия)

 

1.До начала цикла должны быть сделаны начальные установки переменных, управляющих условием цикла, для корректного входа в цикл

2.В теле цикла должны присутствовать операторы, изменяющие переменные условия так, чтобы цикл через некоторое число итераций завершился

3.

Цикл работает, пока условие истин-

3.

Цикл работает, пока условие ложно (пока

но ( пока True )

False)

4.

Цикл завершается, когда условие

4.

Цикл завершается, когда условие становится

становится ложным (до False)

истинным (до True)

5.

Цикл может ни разу не выполнить-

5.

Цикл обязательно выполняется как минимум

ся, если исходное значение условия

один раз

при входе в цикл равно False

 

 

6.

Если в теле цикла требуется более

6.

Независимо от количества операторов в теле

одного оператора, то необходимо ис-

цикла использование составного оператора не

пользовать составной оператор

требуется

Цикл со счетчиком for

1.Начальная установка переменной счетчика циклов до заголовка не нужна

2.Изменение в теле цикла значений переменных, стоящих в заголовке цикла, не допускается

3.Количество итераций цикла неизменно и точно определяется значениями нижней и верхней границ и шага цикла

4.Нормальный ход работы цикла может быть нарушен оператором goto или процедура-

ми Break и Continue

5.Цикл может не выполниться ни разу, если шаг цикла будет изменять значение счетчика от нижней границы в направлении, противоположном верхней границе

6. Вложенные циклы

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

Наглядный пример – заполнение таблицы умножения с помощью двух вложенных циклов:

for i : =1 to 9 do for j : = 1 to 9 do

WriteLn (i, ' x ‘, j , ' = ', i * j);

66

Для каждого из девяти значений параметра внешнего цикла i (множимого) исполнится внутренний цикл, в котором его параметр j (множитель) меняется от 1 до 9.

Циклы могут быть вложены один в другой. При их использовании программу составляем таким образом, чтобы внутренний цикл полностью укладывался во внешний цикл (матрешка).

6.1. Структура вложенных циклов

НАЧАЛО ЦИКЛА I; НАЧАЛО ЦИКЛА J;

Начало цикла M Конец цикла M

КОНЕЦ ЦИКЛА J; КОНЕЦ ЦИКЛА I;

Рассмотрим задачу, где применяются вложенные циклы.

Задача 6

Вычислить значение функции Y = 2K + I. При этом I меняется от едини-

цы до трех с шагом, равным единице, а

К меняется от трех до девяти с ша-

гом, равным двум.

 

Program Lab5_6;

 

Var

 

I, K, Y: integer;

 

BEGIN {1}

 

For N = 1 to 3 Do

Внешний цикл по N

Begin {2}

 

K : = 3;

 

While K < = 9 Do

 

Begin {3}

Внутренний цикл по К

Y : = 2 * K + I;

WriteLn (I : 4, K : 4, Y : 4);

K : = K + 2;

End; {3}

End;{2}

END. {1}

Пояснения к задаче 6

Блок-схема программы представлена на рис. 24. Согласно условию задачи мы должны сделать вычисления по формуле: Y : = 2 * K + I.

Поскольку в формуле две переменные I и K меняют свои значения, организовано два цикла :

внешний цикл по I (с шагом 1);

внутреннийциклпоK (сшагом2).

67

Внешним циклом управляет пере-

 

менная I – это цикл со счетчиком for.

 

Управляющая

переменная

I

принимает

 

значения 1, 2, 3. Значения, которые полу-

 

чают в процессе выполнения программы

 

переменные I, K и вычисленные по фор-

 

муле значения Y, приведены в табл. 7. Пе-

 

ременная I меняется медленнее, чем К.

 

1. Внутренним

циклом

управляет

 

переменная K. Она меняет свое значение

 

от 3 до 9 с шагом 2. Значит, K принимает

 

значения, равные 3, 5, 7, 9. Внутренний

 

цикл организован с помощью оператора

 

цикла while. До входа в цикл присваиваем

 

управляющей

переменной

внутреннего

 

цикла К начальное значение, равное3.

 

В цикле делаем вычисления по

 

формуле, печать и изменение значений К

 

на шаг, который равен 2.

 

 

 

Окончание цикла осуществляется

 

проверкой условия K < = 9 в операторе

Рис. 24. Вычисление значений функции

While. Как только

К примет

значение,

y= 2K + i

 

равное 9, цикл выполнится последний раз и прервется, выйдет на End{2}. Как меняются в цикле переменные, мы видим в табл. 14.

Таблица 14

N

 

1

 

 

 

 

2

 

 

 

3

 

K

2

4

 

6

8

2

4

 

6

8

2

4

 

6

8

Y

5

9

 

13

17

6

10

 

14

18

7

11

 

15

19

7. Контрольные вопросы

1.Как называются программы, в основе которых лежит структура повторения?

2.Сколько операторов цикла вам известно?

3.Как называется оператор, синтаксическая диаграмма которого приведена на рис. 25?

Рис. 25

4.Какой тип выражения в операторе цикла с предусловием?

5.Верно ли, что в теле цикла с предусловием должен находиться один оператор?

68

6.Как сделать, чтобы в теле цикла было несколько операторов?

7.Когда проверяется истинность выражения в цикле while?

8.Верно ли, что истинность выражения в цикле с предусловием является условием продолжения цикла?

9.Сколько раз выполнится оператор в теле цикла whi1e, если с самого начала значение выражения равно false?

10.Верно ли, что цикл while используется при вычислении всякого рода сумм и произведений, когда заранее не известно число повторений?

11.Как называется оператор, синтаксическая диаграмма которого приведена на рис. 26?

Рис. 26

12.Сколько операторов можно записать между ключевыми словами repeat и until?

13.Когда проверяется истинность выражения в операторе цикла repeat?

14.Какой тип имеет выражение в операторе цикла с постусловием?

15.Почему в цикле repeat оператор тела цикла всегда будет выполнен хотя бы один раз?

16.Верно ли, что истинность выражения в цикле repeat является условием окончания цикла?

17.С помощью каких служебных слов записывается цикл с параметром?

18.Верно ли, что цикл с параметром применяется в тех случаях, когда заранее известно число повторений?

19.Пусть цикл записан в виде

for I : = Nl to N2 do S;

Тогда:

а) как называется Nl? б) как называется N2? в) как называется I?

20.Сколько раз выполнится оператор S, если N1 = N2, а цикл записан в виде for I : = Nl to N2 do S?

21.Сколько раз выполнится оператор S и можно ли изменить значение переменнойI внутрицикла, еслиN1 > N2, ациклзаписанввидеfor I : = Nl to N2 do S?

22.Сколько раз выполнится оператор S, если N1 = N2, а цикл записан в виде for I : = Nl downto N2 do S?

23.Сколько раз выполнится оператор S, если N1 < N2, а цикл записан в виде for I : = Nl downto N2 do S?

24.Верно ли, что в качестве параметра цикла for используется простая переменная, описанная в текущем блоке?

69

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]