Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
P_LAB_03_Программирование циклических алгоритмо...doc
Скачиваний:
1
Добавлен:
15.11.2019
Размер:
205.82 Кб
Скачать

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

REPEAT

оператор;

...

оператор

UNTIL выражение

Операторы между словами REPEAT и UNTIL повторяются, пока логическое выражение является ложным (False). Как только логическое выражение становится истинным (True), происходит выход из цикла.

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

Пример 6.

repeat

WriteLn('Введите положительное число');

ReadLn(x);

until x>0;

Пример 7. Составим программу для вычисления и вывода на печать таблицы значений функции Y=A*X*X при X=5,6,7,...,35; A=10.2.

С использованием оператора WHILE программа имеет вид

Var Y,A : real;

X : integer;

Begin

X:=5;

A:= 10.2;

While X<=35 do

begin

Y:=A*X*X;

Writeln(' X=',X,' Y=',Y);

X:=X+1

end;

End.

С использованием REPEAT программа выглядит так:

Var Y,A : real;

X : integer;

Begin

X:=5;

A:= 10.2;

Repeat

Y:=A*X*X;

Writeln(' X=',X,' Y=',Y);

X:=X+1

Until X>35

End.

С использованием оператора FOR программа имеет вид

Var Y,A : real;

X : integer;

Begin

A:= 10.2;

FOR X :=5 TO 35 DO

begin

Y:=A*X*X;

Writeln(' X=',X,' Y=',Y);

end;

End.

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

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

В версии Турбо Паскаль 7.0 определены стандартные процедуры: Break, Continue.

  • Процедура Break выполняет безусловный выход из цикла.

  • Процедура Continue обеспечивает переход к началу новой итерации цикла.

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

Пример 8. Дано натуральное число N. Определить, является ли оно простым.

Алгоритм:

  1. Вводим натуральное число;

  2. В интервале от 2 до N/2 порождаем натуральные числа и проверяем, являются ли они делителями числа N; Если хотя бы одно число является делителем N, то прекращаем итерации и выводим результат «N – не простое», иначе выводим результат «N – простое».

Var I, N : integer;

F : boolean;

Begin

Repeat

write(’Введите натуральное число N=’);

readln(N);

Until N>0;

F:=true;

For I :=2 to N div 2 do

If N mod I = 0 then

begin

F:=false;

Break;

end;

If F

Then writeln(’Число ’, N, простое’)

Else writeln(’Число ’, N, ’ не простое’)

End.

5. Обработка числовых последовательностей

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

Пример 9. Вводится последовательность из N целых чисел. Найти суммы всех отрицательных элементов.

Var X, N, Sum, I : integer;

Begin

Repeat

write(’Введите длину последовательности N=’);

readln(N);

Until N>0;

Sum :=0;

For I:=1 to N do

begin

write(’Введите X=’);

readln(X);

If X<0 then Sum:=Sum+X;

end;

If Sum=0

then writeln(’Отрицательных чисел нет’)

else writeln(’Сумма отрицательных чисел Sum=’,Sum)

End.