Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
LYeKTsIYa_15_2.doc
Скачиваний:
13
Добавлен:
20.04.2019
Размер:
199.68 Кб
Скачать

Вопросы

  1. Чему будет равно значение переменной n после выполнения следующих операторов?

n:=0;

while n<5 do

n:=n+1;

  1. Что будет выводиться на экран во время выполнения операторов:

n:=1;

while n<=10 do

begin

x:=n*n;

writeln(n:6,’ ‘,x:6)

end;

  1. Какие изменения следует внести в операторы из вопроса 2, чтобы программа вывела числа от 1 до 10 и их квадраты?

2.2. Оператор цикла с последующим условием (repeat).

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

Формат записи оператора:

REPEAT

{операторы циклической части программы}

UNTIL <логическое условие>;

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

Следует отметить, что нижняя граница операторов циклической части четко обозначена словом UNTIL, поэтому нет необходимости заключать операторы циклической части в скобки вида BEGIN – END. В то же время и дополнительное наличие операторных скобок не является ошибкой.

Пример 7.

Вычислить сумму бесконечного ряда с точностью до члена ряда, меньшего , для заданного значения .

Решение:

program pr2;

var x,eps,s,f:real;

i:integer;

begin

readln(x,eps);

s:=0;

i:=1;

repeat

f:=sin(2*i-1)*x/(2*i-1);

s:=s+f;

i:=i+1

until abs(f)<eps;

writeln(‘s=’,s:8:2)

end.

Необходимо обратить внимание:

  • инструкции цикла, находящиеся между repeat и until, всегда будут выполнены хотя бы один раз;

  • для того чтобы цикл завершился, необходимо, чтобы инструкции цикла, находящиеся между repeat и until, изменяли значения переменных, входящих в выражение логического условия.

Вопросы

  1. Что делают следующие инструкции?

n:=0;

repeat

writeln(‘*’);

n:=n+1

until n<5;

  1. Запишите условие окончания цикла для предыдущего примера так, чтобы было выведено 5 звездочек.

  2. Для инструкций

n:=0;

repeat

writeln(‘->’);

readln(a);

n:=n+1

until <условие>;

запишите условие окончания цикла так, чтобы цикл завершался, если введено 10 чисел или введено число 0.

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

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

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

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

  4. условие вычисляется при каждом выполнении цикла и поэтому должно быть насколько можно простым.

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