ПРОГРАМУВАННЯ ЦИКЛІВ

Важно.

То

Если

То

Если

н_з £ к_з

к_з – н_з + 1 раз,

для второго варианта

н_з ³ к_з

н_з – к_з +1 раз,

.

Детерминированность цикла обеспечивается тем, что в теле цикла нельзя изменять значение счетчика.

Если это сделать, компилятор сообщит об ошибке.

Значения переменных, которые входят в выражение н_з и к_з, изменять можно, но это не будет влиять на количество итераций, поскольку эти выражения вычисляются лишь один раз – при входе в цикл.

 

Тело цикла может быть простым оператором, вложенным или пустым. В таком случае за словом do сразу ставится точка.


 

Пример:

For i:=1 to 3 do c:=2*i;

{используется простой оператор.}

 

For i:=3 downto 1 do

begin c:=2/i; b:=3+i end;

{используется составной оператор}

 

For i:=1 to 3 do ;

{используется пустой оператор}

 

Следующие циклы будут проигнорированы:

For i:=5 to 4 do ...;

For i:=4 downto 5 do ...; ,

а цикл

For i:=5 to 5 do ...;

выполнится лишь один раз.

Сколько раз будет выполняться тело следующего цикла?

k:=0;

For i:=1 to k+3 do k:=k+1;


Цикл будет выполняться три раза, так как выражение k+3 вычисляется один раз до начала цикла, и изменеие значения k в цикле на количество итераций не повлияет.

 


Оператор for имеет следующие ограничения:

1.Шаг изменения счетчика циклов может быть лишь +1 (если используется ключевое слово to), или –1 (если используется ключевое слово downto).

2.Переменная-счетчик цикла может быть лишь порядкового типа и должна быть локальной для блока, в котором находится оператор for.

3.Циклы For .. to/downto .. doдопускают вложенность при условии, что никакой из вложенных циклов не модифицирует переменные – параметры внешних циклов.

4.Для Object Pascal Delphi 6, после выхода из цикла переменная счетчик будет иметь значение на единицу больше чем конечное значение своего диапазона. Но не следует использовать это в программах. Лучше присвоить новое значение счетчику после окончания цикла – так будет конкретнее.

В некоторых версиях языка Pascal (Lazarus) после выхода из цикла параметр имеет значение равное конечному значению своего диапазона.

 

Решим задачу. Нужно написать программу для перевода значения температуры, заданной по шкале Цельсия, в значение, которое отвечает шкале Кельвина

Обозначим начальное значение температуры (first temperature) в Цельсиях - C_F, а конечное значение (last temperature) - C_L. Температуру в Кельвинах - K. Параметр цикла обозначим переменной T.

 
 

В цикле выполняются два оператора. Их следует превратить в один составной оператор с помощью операторных скобок begin...end.


 

program Ex_8;

var C_f, C_L, t : integer;

K:real;

begin

writeln('Enter first temperature in Celcius ');

readln(C_f);

writeln('Enter last temperature in Celcius ');

readln(C_L);

writeln('Celcius','Kelvin':8);

For T:=C_f to C_L do

begin

K:=T+273.15;

writeln(T:4,K:11:2);

end;

readln

end.


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

Числитель будет равеннулю когда k=2 и k=3. Знаменатель раве нулю когда k=–4.

 
 

Эти точки нужно исключить из вычисления.


 

program Project1;

var z:real;

k,k1,k2:integer;

begin

write('Enter k1=');

readln(k1);

write('Enter k2=');

readln(k2);

z:=0;

for k:=k1 to k2 do

if (k<>2)and (k<>3)and (k<>–4)

then z:=z+(k-2)*(k-3)/(k+4);

writeln('z=',z:6:2);

readln

end.

 

 

Алгоритм, в якому є послідовність операцій, яку треба повторювати багато разів, називається циклічним, а сама послідовність операцій, яка повторюється, називається циклом.

 

В мові Pascal можливо організувати три види циклів:

1. З параметром (оператор For .. to/downto .. do).

2. З передумовою (оператор While .. do).

3. З постумовою (Repeat .. until).

Цикл складається із заголовку циклу та тіла.

 

Кожне виконання тіла циклу називається його ітерацією.

Змінні значення яких модифікуються в тілі циклу і впливають на умову завершення циклу називаються параметрами циклу.


Оператор циклу з лічильником (For .. to/downto .. do)

Розглянемо задачу обчислення факторіалу додатного цілого числа N.

Легко побачити, що , тому обчислення можна звести до багато разового виконання оператору

factorial:=factorial*i;

де i = 2, 3, ..., n,

а початкове значення змінної factorial дорівнює 1.

 

Тіло циклу складатиметься з однієї вищезгаданої операції присвоєння, а кількість повторень становитиме n.

Таким чином, умовою завершення циклу буде виконання певної кількості ітерацій.

Відстежити істинність такої умови дозволяє спеціальний різновид параметру циклу – лічильник ітерацій.