Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекции Алгоритмизация.doc
Скачиваний:
2
Добавлен:
01.04.2025
Размер:
445.44 Кб
Скачать

Тема 5. Орга­низация алгоритмов циклической структуры. Алгоритмическое описа­ние вложенных циклических структур. (1 часа)

План лекции 7:

  1. Циклические структуры с за­данным числом повторений.

  2. Итерационные циклы.

  3. Вложенные циклические структуры

Оператор цикла с параметром

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

Оператора цикла определяет:

  • диапазон изменения значений управляющей переменной и, одновременно, число повторений оператора, содержащегося в теле цикла;

  • направление изменения значения переменной (возрастание или убывание);

  • собственно действия, выполняемые на каждой итерации (оператор тела цикла).

<оператор цикла с параметром>::=

for <переменная> := <диапазон> do <оператор>

<диапазон>::=

<выражение> <направление> <выражение>

<направление>::= to | downto

На использование управляющей переменной (параметра) налагаются следующие ограничения:

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

2. Начальные и конечные значения диапазона должны иметь тот же тип, что и параметр.

3. В теле цикла запрещается явное изменение значения управляющей переменной (например, оператором присваивания).

4. После завершения оператора значение параметра становится неопределенным.

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

for V := Expr1 to Expr2 do Body;

эквивалентен оператору:

begin

Temp1:=Expr1;

Temp2:=Expr2;

if Temp1 <= Temp2 then

begin

V:=Temp1;

Body;

while V <> Temp2 do

begin

V:=succ(V);

Body

end

end

end

Примеры:

{y=x^n}

y:=1;

for i:=1 to n do y:=y*x;

{печать латинского алфавита с конца}

for c:='z' downto 'a' do write(c);

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

<оператор> | тело цикла

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

Тело цикла повторяется, пока истинно предусловие.

Примеры:

{s=сумма целых чисел от 1 до n}

s:=0;i:=1;

while i<=n do

begin

s:=s+i;

i:=i+1

end

{x1=наибольший общий делитель x и y}

x1:=x;y1:=y;

while x1<>y1 do

if x1>y1 then x1:=x1-y1

else y1:=y1-x1;

{Для данного M>0 требуется найти наименьшее целое число k>=0, такое что 3^k > M}

y:=1;k:=0;

while y<=M do

begin

k:=k+1;

y:=y*3;

end;

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

Число повторений заранее неизвестно, но известно условие, при выполнении которого цикл должен завершиться.

repeat {<оператор>} until <логическое выражение>

Цикл с постусловием всегда выполняется, по крайней мере, один раз!

Пример. Вычислить наименьшее n, для которого y=1+1/2+1/3+...+1/n  5.

y:=0;n:=0;

repeat

n:=n+1;

y:=y+1/n;

until y>=5;