Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекция_7.docx
Скачиваний:
4
Добавлен:
22.01.2022
Размер:
57.02 Кб
Скачать

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

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

while < логическое выражение> do <тело цикла>

где while (пока), do (выполнить) – служебные слова, тело цикла – простой или составной оператор. Если логическое выражение имеет значение true, то выполняются операторы, входящие в тело цикла. Как только логическое выражение примет значение false, выполнение оператора цикла заканчивается. Так как проверка условия происходит до выполнения тела цикла, то входящие в него операторы выполняются ноль или более раз. Значения переменных, входящих в условие, должны изменяться в теле цикла, иначе оператор никогда не завершится.

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

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

repeat

<оператор 1>;

<оператор 2>;

…………………..

<оператор N>

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

где repeat (повторять), until (до тех пор, пока) – служебные слова. В отличие от оператора цикла с предусловием, в операторе цикла с постусловием проверка условия производится после каждой итерации, что обеспечивает выполнение, по крайней мере, одного вычисления в цикле. Служебные слова repeat … until по действию похожи на операторные скобки begin … end: между ними можно поместить группу операторов, отделяя, их друг от друга точкой с запятой. Операторы выполняются в этом цикле, пока условие ложно.

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

Пример 7.3. Составить программу для вычисления значения функции y = sin(2x) при изменении аргумента х от 0 до  с шагом /12.

С использованием оператора цикла с предусловием:

……………………………………..

writeln(‘ x : y’);

x:=0;

while x<=pi do

begin

y:=sin(2*x);

writeln(x:5:3, ‘ : ’,y:6:3);

x:=x+pi/12;

end;

………………………………….

С использованием оператора цикла с постусловием:

……………………………………..

writeln(‘ x : y’);

x:=0;

repeat

y:=sin(2*x);

writeln(x:5:3, ‘ : ’,y:6:3);

x:=x+pi/12;

until x>pi

………………………………….

При записи циклов с предусловием или постусловием необходимо учитывать следующие моменты:

  • перед каждым выполнением цикла условие его окончания (или продолжения) должно быть определено (иметь конкретное значение);

  • тело цикла должно содержать хотя бы один оператор, влияющий на условие окончания (продолжения), иначе цикл будет продолжаться бесконечно;

  • условие окончания цикла должно быть, в конце концов, удовлетворено.

7.4.Операторы прерывания циклов

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

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

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

Внутренний и внешний циклы могут быть любого вида: циклами с параметром, с предусловием или с постусловием.

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

Работу вложенных циклов иллюстрирует следующий пример.

Пример 7.4. Разработать программу табулирования функции двух переменных z = 5x + y/2, где x изменяется от 2 до 4 с шагом 1, y изменяется от 1 до 5 с шагом 1.

………………………………….

writeln(' x : y : z');

writeln('-----------------');

for x:=2 to 4 do

for y:=1 to 5 do

begin

z:=5*x+y/2;

writeln(x:2,' : ',y:2,' : ',z:6:3);

end;

………………………………………………….