Принцип работы цикла for_to (for_downto)

На первом шаге цикла счетчику присаивается значение выражения нач_знач. Затем производится проверка выражения параметр <= кон_знач (параметр >= кон_знач) и, если оно истинно выполняется тело цикла, в противном случае происходит выход из цикла. После выполнения тела цикла происходит изменение параметра на следующее большее (меньшее) значение в зависимости от формы оператора for, т.е. неявно происходит выполнение одного из двух операторов:

параметр:= Succ(параметр);

параметр:= Pred(параметр);

Затем снова идет проверка выражения параметр <= кон_знач (параметр >= кон_знач) и опять, если оно истинно выполняется тело цикла. Цикл выполняется до тех пор, пока счетчик не станет большим (меньшим) выражения кон_знач.

Примеры

For i:=1 to 10 do writeln('a');

For month:=12 downto 1 do S:=S+1;

For k:=1 downto 5 do p:=p*2;

В первом случае тело цикла выполнится 10 раз и будет выведено на экран 10 букв "а".

В втором случае тело цикла выполнится 12 раз.

В третьем случае тело цикла не выполнится ни разу, т.к. сразу 1>5.

Типовые задачи

1. Даны 10 вещественных чисел. Подсчитать среди них количество положительных.

Слово "даны" означает, что программа должна получить их от пользователя. Идея: мы должны иметь переменную счетчик, которую должны наращивать, когда введенное число окажется положительным. Нам не нужно заводить 10 переменных, достаточно одной. Алгоритм получается примерно такой:

Ввод очередного числа

Проверка

Ввод очередного числа

Проверка

И так еще 8 раз.

Очевидно, что это все можно представить в виде оператора цикла.

Повторять 10 раз

Ввод очередного числа

Проверка

Конец цикла

На языке Паскаль это будет выглядеть так:

for i:=1 to 10 do

Begin

write ('Введите ',i,'-ое число: ');

readln (x);

if x>0 then kol:=kol+1 {увеличиваем количество на 1}

end;

Полный текст программы:

program chisla;

uses crt;

var i, kol:byte;

x:real;

Begin

clrscr;

kol:=0;

for i:=1 to 10 do

Begin

write ('Введите ',i,'-ое число: ');

readln (x);

if x>0 then kol:=kol+1 {увеличиваем количество на 1}

end;

writeln ('Вы ввели ',kol,' положительных чисел.');

Readln

end.

2. Напечатать буквы латинского алфавита в обратном порядке от 'Z' до 'A'.

program alphabet;

var c:char;

Begin

for c:='Z' downto 'A' do write (c);

Readln

End

3: Вычислить N-е число Фиббоначчи. Числа Фиббоначчи строятся следующим образом: F(0)=F(1)=1; F(i+1)=F(i)+F(i-1); для i>=1. Это пример вычислений по рекуррентным формулам.

program Fib;

var a,b,c:word; i,n:byte;

Begin

write ('введите номер числа Фиббоначчи ');

readln (N);

a:=1; {a=F(0), a соответствует F(i-2)}

b:=1; {b=F(1), b соответствует F(i-1)}

for i:=2 to N do

Begin

c:=a+b; {c соответствует F(i)}

a:=b; b:=c; {в качестве a и b берется следующая пара чисел}

end;

writeln (N,'-е число Фиббоначчи =',b); {для N>=2 b=c}

Readln

end.


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: