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

Операторы цикла while, repeat, for Цикл while-do (цикл с предусловием - ред.)

Общий вид записи:

While <условие> do begin

<инструкция 1>;

...

<инструкция n>

End

Инструкция while-do выполняется следующим образом: Сначала проверяется условие. Если оно истинно, выполняются <инструкция 1>...<инструкция n> и так далее. Если же условие ложно, выполнение инструкции считается законченным, и программа переходит к обработке следующих команд. Таким образом, если условие с самого начала оказалось ложным, <инструкция 1>...<инструкция n> не будут выполнены ни разу. В цикле while-do <условие> - это условие выполнения цикла: пока оно истинно, программа из цикла не выйдет. В том случае, если внутри цикла стоит только один оператор, пара begin - end может отсутствовать, если операторов больше одного, то пара begin - end обязательна, так как иначе будет выполнятся только одна инструкция, стоящая сразу после слова do.

Пример: Надо вычислить сумму S=1+1/2+1/3+...+1/50

VAR S: REAL; N:INTEGER;

BEGIN

S:=0; N:=1;

WHILE N<=50 DO

BEGIN

S:=S+1/N;

N:=N+1;

END;

WRITELN(' S=',S);

END.

Цикл repeat-until (цикл с постусловием - ред.)

Общий вид записи:

Repeat

<инструкция 1>;

...

<инструкция n>

until <условие>;

Инструкция repeat-until выполняется следующим образом : сначала выполняются инструкции <инструкция 1>...<инструкция n>. Затем проверяется условие. Если оно ложно , происходит возврат с выполнению инструкций <инструкция 1>...<инструкция n>. Если условие истинно, цикл считается выполненным и программа переходит к обработке следующих команд. Таким образом в цикле repeat-until <условие> - это условие завершения цикла: цикл повторяется, пока оно ложно.

Пример.

VAR S: REAL; N:INTEGER;

BEGIN

S:=0; N:=1;

REPEAT

S:=S+1/N;

N:=N+1;

UNTIL N>50;

WRITELN(' S=',S);

END.

Цикл for (цикл со счётчиком - ред.)

Общий вид:

FOR I:=N1 TO N2 DO ST

I - переменная цикла, N1- начальное значение цикла, N2- конечное значение цикла, ST- оператор (простой или составной). I,N1,N2 должны быть одного и того же типа, но не real. I принимает последовательные значения данного типа от N1 до N2. Если N1 и N2 - целые числа, а I - целая переменная, то шаг всегда равен единице.

Пример:

VAR S: REAL; N:INTEGER;

BEGIN

S:=0;

FOR I:=1 TO 50 DO

S:=S+1/I;

WRITELN(' S=',S);

END.

Цикл по убывающим значениям параметра I от N2 до N1 имеет вид:

For I:=N2 downto N1 do ST;

Пример:

For I:=20 downto 1 do A:=A+1;

I изменяется от 20 до 1 с шагом -1.

Рекуррентные последовательности

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

Пример: Числа Фибоначи.

а1=1, а2=1, аn+2=an+an+1 Имеем

a3=a1+a2=1+1=2;

a4=a2+a3=1+2=3;

a5=a3+a4=2+3=5;

a6=a4+a5=3+5=8;

a7=a5+a6=5+8=13;

a8=a6+a7=8+13=21; ...

В итоге получаем последовательность 1, 1, 2, 3, 5, 8, 13, 21, 34, ... Каждый ее член, кроме первых двух, равен сумме двух предшествующих ему членов. Пример программы вывода 50 первых членов последовательности Фибоначи:

Var an,anp1, anp2,i: integer;

begin

An:=1;

Anp1:=1;

Writeln ('1, 1')

For i:=3 to 50 do

begin

Anp2:=an+anp1;

Writeln(',',anp2);

An:=anp1;

Anp1:=anp2;

End;

End.

22, 23