ПРОГРАМУВАННЯ ЦИКЛІВ
Важно.
То
Если
То
Если
н_з £ к_з
к_з – н_з + 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.
Таким чином, умовою завершення циклу буде виконання певної кількості ітерацій.
Відстежити істинність такої умови дозволяє спеціальний різновид параметру циклу – лічильник ітерацій.