Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ИНФ_ЛЕКЦИИ_(1 С)_2011.doc
Скачиваний:
5
Добавлен:
16.04.2019
Размер:
898.56 Кб
Скачать

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

While логическое выражение do оператор,

где оператор – простой или состав­ной оператор, который является телом цикла.

Выполнение оператора.

1) вычисляется логическое выражение, результат вычисления анализируется;

2) если результат вычислений – true, то выполняется тело цикла, после чего осуществляется возврат к оператору while; если результат – false, то тело цикла не выполняется, а управление пе­редаётся оператору программы, расположенному непосредственно пос­ле тела цикла.

Если первая проверка условия окончания цикла дала результат false, то тело цикла не выполнится ни разу.

Логику действия оператора while можно сформулировать так: «выполнять тело цикла, пока условие истинно».

Пример 4.13. Вычислить значения функции y = sin (x 2) на отрезке [a, b], если шаг изменения её аргумента x.

var

X, y, deltaX, a, b : real;

begin

write ('введите a, b, deltaX - ');

readln (a, b, deltaX);

x := a; { присваивание параметру цикла x его

начального значения }

while x <= b do { проверка условия работы цикла }

begin { операторы, составляющие }

y := sin(x * x); { тело цикла, заключены в }

writeln ('x=', x:10:3, ' y=' ,y:10:3);

x := x + deltaX { опе­раторные скобки }

end { begin-end }

end.

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

Структура оператора

repeat

oператор1;

oператор2;

……………

oператорN

until логическое выражение;

где опе­ратор1, оператор2,..., операторN – операторы, представляющие в совокупности тело цикла; repeat ([репиит] – повторять), until ([антил] – пока) – ключевые слова оператора. Приставка “пост” означает “после”, т.е. в дословном переводе это цикл с “послеусловием”.

Выполнение оператора.

1) исполняются операторы, составляющие тело цикла;

2) вычисляется логическое выражение, результат вычисления анализируется;

3) если результатом вычислений является false, тело цикла выполняется снова, в противном случае (результат вычислений – true) очередного повторения тела цикла не происходит, а осуществляется выход из цикла на следующий по порядку оператор программы.

Таким образом, логику действия оператора repeat можно выра­зить инструкцией «выполнять тело цикла до тех пор, пока условие не станет истинным».

Пример 4.14. Выполнить задание примера 4.13, используя оператор repeat.

var

X, y, deltaX, a, b : real;

begin

write ('введите a, b, deltaX - ');

readln (a, b, deltaX);

x := a; {присваивание параметру цикла x

его начального значения }

repeat

{ вычисления, предус­мотренные телом цикла }

y := sin(x * x);

writeln ('x =', x:10:3,' y =', y:10:3);

x := x + deltaX

until x > b { проверка условия выхода из цикла }

end.

Применяя операторы while и repeat, необходимо позаботиться о том, чтобы значения переменных, входящих в условие окончания цик­ла, менялись в теле цикла, иначе циклический процесс будет продолжаться бесконечно («зацикливание» программы).

Подчеркнем отличия между операторами repeat и while.

1. В операторе repeat проверка условия выхода из цикла про­изводится в конце, а не в начале цикла, поэтому тело цикла выпол­няется хотя бы один раз.

Это наиболее важное различие, оно отражено и в названиях операторов: “предусловие” – т.е. сначала проверяется условие, “постусловие” – т.е. условие проверяется после.

2. В операторе repeat условие выхода из цикла удовлетворяет­ся, если логическое выражение истинно, а в операторе while, если ложно.

Для лучшего запоминания этого различия предлагается такое правило: если в данных операторах логическое выражение истинно, то выполняется то действие, которое следует за ним. В цикле while это тело цикла, а в repeat – следующие за циклом операторы.

3. Тело цикла, организованного с помощью оператора while, может содержать только один оператор (в том числе и составной), в то время как между словами repeat и until их можно разместить несколько.