Оператор цикла с параметром For..do (цикл с параметром)

Программирование повторяющихся алгоритмов

План:

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

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

3. Оператор цикла с параметром For..do

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

Неоднократно повторяемые деяния могут быть заданы при помощи оператора цикла. Разглядим синтаксическую диаграмму 1-го из таких операторов - оператора цикла с предусловием:

While do

;

Производится данный оператор цикла так Оператор цикла с параметром For..do (цикл с параметром): поначалу рассчитывается значение булевского выражения (т.е. условие, стоящее после слова while,проверяется на истинность). Если оно имеет значение true, то производится оператор, стоящий после слова do, потом условие проверяется вновь и т.д. Как на следующем шаге условие не производится (значение булевского выражения становится равным false), то выполнение Оператор цикла с параметром For..do (цикл с параметром) оператора цикла прекращается. Если выполняемый оператор не изменяет значения переменных, входящих в условие, то условие будет настоящим всегда и цикл будет производиться вечно, при всем этом молвят, что программка зацикливается. Если же при первой проверке условия оно сходу оказывается неверным, то оператор цикла не производится вообщем.

Если в цикле Оператор цикла с параметром For..do (цикл с параметром) нам нужно делать больше, чем один оператор, то, как и в случае с условным оператором, применяется составной оператор, другими словами несколько операторов заключаются в операторные скобки begin... end.

Пример оператора цикла с предусловием:

whileх<=0do

х := х + 1

Если до оператора цикла значение х положительно, то цикл не будет производиться вообщем Оператор цикла с параметром For..do (цикл с параметром).

Если х было равно 0 то цикл будет производиться ровно один раз, а если х было меньше 0, то цикл выполнится пару раз и завершится, когда х станет равным 1.

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

1. Отыскать Оператор цикла с параметром For..do (цикл с параметром) сумму натуральных чисел от 1 до 100:

var i,sum: integer;

Begin

sum:=0; i:=0;

while i<100 do begin

i:=i+1;

sum:=sum+i;

end;

writeln('Сумма равна: ',sum);

readln;

end.

2. По данному целому неотрицательному значению п, не применяя формулы, вычислить:

s = 1 + 2 + 3 + 4 + ... + п:

readln(n);

s := 0;

i := 0;

whilex < n do

Begin

i : = i + 1;

s Оператор цикла с параметром For..do (цикл с параметром) : = s+I;

End.

В таких задачках очень принципиально верно задать до цикла значения изменяемых в цикле переменных и проконтролировать, необходимое ли количество раз выполнится цикл. Так, если в рассмотренной задачке поменять условие х < n на х <= n, то на последнем шаге цикла к s прибавится значение n + 1, что ошибочно. Заметим, что Оператор цикла с параметром For..do (цикл с параметром) приведенная в качестве решения задачки программка автоматом работает правильно, и для варианта n = 0. Цикл при всем этом просто не будет производиться. При других же вариантах решения данный случай, вероятнее всего, придется рассматривать раздельно.

3. С клавиатуры вводятся натуральные числа. Последовательность этих чисел завершается 0 (в этом случае 0 - признак окончания ввода). Отыскать их Оператор цикла с параметром For..do (цикл с параметром) сумму:

read(а);

s := 0;

while а 0 do

begin

s := s + а;

read(a)

end.

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

В языке Pascal существует очередной оператор цикла с условием, которое проверяется уже после выполнения оператора. Приведем его синтаксическую диаграмму:

Repeat

;

until ;

В данном операторе слова repeatи untilслужат операторными скобками begin endиспользовать не требуется Оператор цикла с параметром For..do (цикл с параметром). На первом шаге цикла операторы, заключенные меж repeatи until,производятся в любом случае, далее же цикл будет повторяться, пока значение булевского выражения неверно. Другими словами цикл завершится, когда оно станет настоящим.

1. Отыскать сумму натуральных чисел от 1 до 100.

var i,sum: integer;

Begin

sum:=0; i:=0;

Repeat

i:=i+1;

sum:=sum+i;

until Оператор цикла с параметром For..do (цикл с параметром) i=100;

writeln('Сумма равна: ',sum);

readln;

end.

2. По данному целому неотрицательному значению п вычислите п! = 1*2*3*.,.*п. Учтите, что по определению 0! = 1.

3. По данному целому неотрицательному значению п и вещественному значению х вычислите хn. Для решения задачки используйте оператор цикла (операция возведения в степень в языке Pascal отсутствует).

Оператор Оператор цикла с параметром For..do (цикл с параметром) цикла с параметром For..do (цикл с параметром)

Синтаксическую диаграмму для данного оператора нужно дополнить последующими правилами.

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

2. Оба Оператор цикла с параметром For..do (цикл с параметром) выражения рассчитываются перед выполнением оператора цикла и потом не перевычисляются!!!

3. Идентификатор является параметром цикла и по эталону не должен изменяться снутри оператора цикла (данное требование эталона поддерживается в языке Delphi), но это не противоречит синтаксису Borland Pascal, но может приводить к непредсказуемым последствиям, к примеру, зацикливанию.

For := to do

;

For Оператор цикла с параметром For..do (цикл с параметром) := downto do

;

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

Оператор цикла производится так: поначалу рассчитываются значения выражений, обозначим их А и В. Они являются исходным и конечным значениями параметра цикла. Если для цикла с to А < В Оператор цикла с параметром For..do (цикл с параметром), то параметр цикла поочередно будет принимать значения, равные А, А + 1, А + 2, ..., В. Другими словами цикл будет производиться ровно В - А + 1 раз.

Если А > В, то цикл не будет производиться совершенно.

Если для цикла с downto А > В, то параметр цикла поочередно будет принимать значения, равные А, А - 1, А Оператор цикла с параметром For..do (цикл с параметром) - 2, ..., В. Другими словами цикл будет производиться ровно А - В + 1 раз.

Если А < В, то цикл не будет производиться совершенно.

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

Использовать цикл for при заблаговременно известном количестве повторений. Не изменять параметр в теле цикла. При использовании кратных (вложенных) циклов использовать различные переменные в качестве характеристик. Определять до цикла значения всех применяемых в Оператор цикла с параметром For..do (цикл с параметром) нем переменных. Не ставить точку с запятой после do.

1. По данному целому неотрицательному значению п и вещественному х вычислить хn:

p: =1

for i : =1 to n do

p: = p*x;

2. По данному целому неотрицательному значению n вычислить n!

f:=1

for i := 2 to n do

f:= f*I;

Если в качестве Оператор цикла с параметром For..do (цикл с параметром) оператора цикла нужно использовать несколько операторов, то применяется составной оператор.

3. По данному натуральному значению n вычислить 1 -1/2 + 1/3-1/4+…1/ n:

k:=1;

s:=1;

for i: = 2 to n do

Begin

(в переменной k имеем символ еще одного слагаемого)

k: =-k;

s: = s +k/I;

end;

4. По данному натуральному значению п и вещественному значению х вычислить х + х Оператор цикла с параметром For..do (цикл с параметром)2 + Xs + ... + хп

s := 0;

z := 1;

fori:= 1 ton do

Begin

{в переменной z - еще одно слагаемое}

z := z * x;

s := s + z

end;

5. По данному натуральному значению n вычислить 1 - 1/3 + 1/5 - 1/7 + ... 1/(2n + 1).

6. В последовательности а1, а2, ..., аn отыскать номер наибольшего числа.


operativna-programa-regionalno-razvitie-2007-2013-g.html
operativnaya-hirurgicheskaya-tehnika.html
operativnaya-obshaya-i-chastnaya-hirurgiya-s-oftalmologiej-i-ortopediej.html