Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Lb_4_k1.pdf
Скачиваний:
8
Добавлен:
27.03.2015
Размер:
483.42 Кб
Скачать
Да
S
Рис. 1. Цикл WHILE. Алгоритм работы.
A

Лабораторная работа № 4

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

Цель работы

Ознакомиться с конструкциями операторов цикла и научиться описывать на языке ПАСКАЛЬ циклические действия.

Краткие теоретические сведения

В языке ПАСКАЛЬ имеются три конструкции операторов цикла.

Оператор цикла while

Организует «цикл с предусловием», то есть условие продолжения цикла проверяется до выполнения тела цикла. Это наиболее универсаль-

ный оператор цикла. С его помощью можно описать любые циклические Нет действия.

Общий вид: while A do S ;

где A – логическое (булевское) выражение (условие продолжения цикла);

S – любой оператор (простой или составной) языка ПАСКАЛЬ (тело цикла).

Оператор работает так (см. Рис. 1): выражение A вычисляется перед каждой попыткой выполнения оператора S. Если значение A истинно (A = True), то оператор S выполняется, и снова предпринимается попытка выполнить оператор S, то есть, управление передается на вычисление значения A; если значение A оказывается ложным (A = False), то оператор S не выполняется, цикл заканчивается и выполняется следующий за while оператор.

Если при первой же попытке выполнить оператор S значение A окажется ложным (A = False), то оператор S не будет выполнен ни разу.

Если значение выражения A никогда не принимает значения лож (False), то тело цикла будет выполняться бесконечное число раз (происходит “зацикливание”). Таким образом, получают «бесконечный цикл» (цикл типа «петля»): достаточно задать условие, которое всегда дает значение true, напри-

мер, 0 = 0.Остановить такую программу можно, нажав клавиши Ctrl+Break S1

или Ctrl+C.

Оператор цикла repeat

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

Общий вид: repeat

S1;

S2;

SN

until A;

где S1, S2, …, SN – группа выполняемых в цикле операторов (тело цикла); A – логическое (булевское) выражение (условие продолжения цикла).

SN

Нет

A

Да

Рис. 2. Цикл REPEAT.

Алгоритм работы.

I := E1 .. E2
S
Рис. 4. Цикл FOR. Обозначение на блоксхемах.
2): сначала выполняются опера-
I := E1
Нет
I <= E2
Да
S
I := I + 1
Рис. 3. Цикл FOR. Алгоритм работы.

Выполняется оператор repeat в следующем порядке (см. Рис. торы S1, S2, …, SN, затем вычисляется выражение A; если значение A оказывается ложным (A = False), то вновь выполняются операторы S1, S2, …, SN, а если значение A истинно (A = True), цикл заканчивается и выполняется следующий за repeat оператор (оператор стоящий после выражения A).

Тело цикла repeat выполняется как минимум один раз (если значение A оказывается истинно на первом же шаге).

Если значение выражения A никогда не принимает значения истина (True), то тело цикла будет выполняться бесконечное число раз (происходит “зацикливание”). Таким образом, получают «бесконечный цикл» (цикл типа «петля»): достаточно задать условие, которое всегда дает значение false, например, 0 = 1.Остановить такую программу можно, нажав клавиши Ctrl+Break или Ctrl+C.

Оператор цикла for

Оператор «цикла с параметром (счетчиком)». Используют в тех случаях, когда количество выполнений тела цикла можно вычислить. Обычно это операции с массивами.

Общий вид:

for I := E1 to E2 do S ;

или

for I := E1 downto E2 do S ;

где I – параметр цикла, часто называемый счетчиком цикла или цикловой переменной, это переменная любого скалярного типа, кроме типа real;

E1 – начальное значение параметра цикла, выражение того же типа, что и переменная I; E2 – конечное значение параметра цикла, выражение того же типа, что и переменная I; S – любой оператор (простой или составной) языка ПАСКАЛЬ (тело цикла).

Оператор цикла выполняется следующим образом (см. Рис. 3):

1) на первом шаге вычисляются значения выражений

E1 и E2, переменной I присваивается результат вычисления выражения E1

2) выполняется оператор S (тело цикла);

3) затем переменной I присваивается следующее значение, вычисляется значение выражения E2 и результат вычислений сравнивают с новым значением переменной I. Если результат сравнения – истинна (True), то действия повторяются; если результат сравнения оказывается ложным (False), то оператор S не выполняется, цикл заканчивается и выполняется следующий за for оператор.

Следующее значение параметра цикла вычисляется в операторе с ключевым словом to следующим образом: как I := SUCC( I ) (при I целого типа I := I + 1 ), а в операторе с

ключевым словом downto как I := PRED( I ) (при I целого типа I := I - 1 ).

Выражения E1 и E2 вычисляются только один раз, в начале цикла!

Категорически запрещается в теле цикла for (в операторе S) изменять значение параметра цикла (переменной I)!

После завершения цикла значение параметра цикла ( переменной I) не определено, «портится». Пользоваться этим значением после завершения цикла запрещено! Перед использованием, переменной необходимо присвоить новое значение, поэтому, как правило, ее используют в другом цикле for.

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