понедельник, 17 января 2011 г.
суббота, 15 января 2011 г.
Рекуррентные последовательности
Последовательность рекуррентная, если любой член последовательности, начиная с некоторого, выражается через предшествующие члены. При этом способе задания последовательности указывают ее первый член (или несколько начальных членов) и формулу, позволяющую определить любой член последовательности по известным предшествующим членам.
Пример: Числа Фибоначи.
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.
Цикл 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.
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.
Цикл 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.
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.
Цикл 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.
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.
Виды циклов
Безусловные циклы
Иногда в программах используются циклы, выход из которых не предусмотрен логикой программы. Такие циклы называются безусловными, или бесконечными. Специальных синтаксических средств для создания бесконечных циклов, ввиду их нетипичности, языки программирования не предусматривают, поэтому такие циклы создаются с помощью конструкций, предназначенных для создания обычных (или условных) циклов. Для обеспечения бесконечного повторения проверка условия в таком цикле либо отсутствует (если позволяет синтаксис, как, например, в цикле LOOP…END LOOP языка Ада), либо заменяется константным значением (while true do … в Паскале).Цикл с предусловием
Цикл с предусловием — цикл, который выполняется пока истинно некоторое условие, указанное перед его началом. Это условие проверяется до выполнения тела цикла, поэтому тело может быть не выполнено ни разу (если условие с самого начала ложно). В большинстве процедурных языков программирования реализуется оператором while, отсюда его второе название — while-цикл. На языке Pascal цикл с предусловием имеет следующий вид:while <условие> do begin <тело цикла> end;
Цикл с постусловием
На языке Pascal цикл с постусловием имеет следующий вид::
repeat <тело цикла> until <условие>
Цикл cо счётчиком
Цикл со счётчиком — цикл, в котором некоторая переменная изменяет своё значение от заданного начального значения до конечного значения с некоторым шагом, и для каждого значения этой переменной тело цикла выполняется один раз. В большинстве процедурных языков программирования реализуется оператором for, в котором указывается счётчик (так называемая «переменная цикла»), требуемое количество проходов (или граничное значение счётчика) и, возможно, шаг, с которым изменяется счётчик.For I := A To B Do
Begin <операторы>
End;
Введение

Подписаться на:
Сообщения (Atom)