:: главная ::
 
:: учебник ::
 
:: download ::

Циклические алгоритмические конструкции

В языке Паскаль имеется три различных оператора цикла, с помощью которых можно запрограммировать повторяющиеся фрагменты программы.

 

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

Шаг равен +1

for i := n to m do <оператор>;

где:
for - для
i - параметр цикла
n - начальное значение параметра цикла
to - до
m - конечное значение параметра цикла
do - делать
<оператор> - тело цикла

При этом должно выполняться условие:
n < m

Если тело цикла состоит из нескольких операторов, то они заключаются в операторные скобки begin ... end:

for i:=n to m do begin
<onepamop1>;
<onepamop2>;
<onepamopN>
end;

Переменная i (счетчик) увеличивается на единицу от начального значения n до конечного значения m при каждом новом значении i исполняется оператор внутри цикла. Параметр цикла, начальное и конечное его значения должны быть описаны как integer.

Если n = m, то цикл выполняется один раз.
Если n > m, то цикл не выполняется ни разу.

Шаг равен -1

for i:=n downto m do <оператор>;

где:
for - для
i - параметр цикла
n - начальное значение параметра цикла
downto - до
m - конечное значение параметра цикла
do - делать
<оператор> - тело цикла

При этом должно выполняться условие:
n > m

 

Примеры вычисления сумм, количеств и произведений

Алгоритмы подсчета:

сумм
Первоначальное значение S:=0
Подсчет в цикле:
S:=S+{текущее значение}

Вычислить: S=1+2+3+4+..+N.

program zadacha (input,output);
{вычисление суммы натуральных чисел}
var
n,s,i:integer;
begin
writеln('введите натуральное число N=');
readln(n);
s:=0;
for i:=1 to n do s:=s+i;
writein ( 'сумма=',s);
end.

Вычислить:

program zadacha (input,output);
{вычисление суммы}
var
n,i:integer; s:rea1;
begin
writeln('введите натуральное число N=');
readln(n);
s:=0;
for i:=1 to n do s:=sqrt(2+s);
writeln('сумма=',s)
end.

количества
Первоначальное значение k:= 0
Подсчет в цикле:
k:= k+1

Среди чисел 1 < N < 100 найти все пары чисел, для которых их сумма равнялась бы их произведению.

program zadacha (input,output);
{нахождение пар чисел}
var
k,a,b:integer;
begin
r:=0;
for a:=1 to 100 do
for b:=1 to 100 do begin
if a+b=a*b then begin
k:=k+1;
writeln( 'числа',a,b)
end
end;
if k=0 then writeln ( 'таких чисел нет') else ('k=', k)
end.

Определить, сколько из N заданных точек принадлежат графику у = |х|

program zadacha (input,output);
{количество точек, принадлежащих графику}
var
k,i,n:integer; x,y:real;
begin
writeln('введите количество точек N=');
readln (n);
k:=0;
for i:=1 to n do
begin
writeln ( 'введите координаты',i,'-ой точки x и y');
readln (x,y);
if y=abs(x) then k:=k+1
end;
if k=0 then writeln ('таких точек нет') else writeln ('k=',k)
end.

произведений
Первоначальное значение p:=1
Подсчет в цикле:
p:=p *{множитель}

Вычислить N!

program zadacha (input,output);
{нахождение факториала числа N}
var
n,p,i:integer;
begin
writeln('введите число N=');
readln (n) ;
p:=1;
for i:=1 to n do
p:=p*i;
writeln ( 'факториал числа',n,' = ',p)
end.

 

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

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

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

repeat
<оператор1>;
<оператор2>;
...
<oпepaтopN>
until <условие>;

где
repeat - повторять;
<оператор1>;
<оператор2>;
...
<oпepaтopN>
- последовательность операторов внутри цикла (тело цикла);
until - до;
<условие>; - логическое выражение.

Этот процесс завершается, тогда когда после выполнения заданной последовательности операторов логическое выражение <условие> станет TRUE (истинно).

Оператор for v:=E1 to E2 do S;
Эквивалентен
if E2>=E1 then begin
v:=E1;
repeat
S;
v:=succ(v)
until v>E2;

Примеры
Распечатать числа Фибоначчи от 1 до N. (Каждое число в последовательности, начиная с третьего, получается сложением двух предыдущих чисел. Например: 1, 1, 2, 3, 5, 8,13,21...).

program zadacha (input,output);
{числа Фибоначчи}
var
a,b,c,n,i:integer;
begin
writеln('введите число N=');
readln (n) ;
а: =1 ;
b:=1;
writeln (a,b) ;
i:=3;
repeat
с:=a+b;
writeln (с);
а:=b;
b:=с;
i:=i+1
until i>n
end.

Вычислить значение переменной y, при заданном значении n.
y=1/1+1/2+1/3+1/4+.....+1/n

program zadacha (input,output);
var
i,n:integer; y:real;
begin
y:=0;
i:=1;
repeat
y:=y+1/i;
i:=i+1
until i>n;
writeln ('y=', y)
end.

 

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

Формат оператора:

while <условие> do <оператор>;

где:
while - пока
<условие> - логическое выражение
do - делать
<оператор> - оператор внутри цикла (тело цикла)

Оператор выполняется до тех пор, пока <условие> -имеет значение истина, прекращает выполняться, если <условие> принимает значение ложь.

Пример:
Оператор for v: =E1 to E2 do S ;
Эквивалентен
v:=E1;
while v<=E2 do begin
S;
v:=succ(v)
end.

Пример:
Подсчитать сумму всех нечетных чисел от 101 до 301.

program zadacha (input,output);
{сумма нечетных чисел}
var
s, i :integer;
begin
s:=0;
i :=101 ;
while i<=301 do
begin
s:=s+i;
i:=i+2
end;
writeln('сумма кубов нечетных чисел от 101 до 301 = ',s)
end.



<-->
 
Hosted by uCoz