Види циклів, Детальна інформація
Види циклів
while умова.
Такого оператора в мові Паскаль немає, а є схожий за виглядом
repeat
послідовність операторів
until умова
Він називається repeat-оператором, або оператором циклу з пост-умовою ("пост" означає "після"), і дослівно перекладається українською мовою як
повторювати
послідовність операторів
доти, поки не умова.
"Поки не" перетворює умову в умову завершення. Справа в тім, що спочатку виконується послідовність операторів (тіло), потім обчислюється умова, і якщо вона хибна, то знову виконується тіло тощо. Виконання оператора завершується після того, як при обчисленні умови одержано значення true. Таким чином, істинність умови означає завершення, а не продовження виконання всього оператора. Ми б назвали цей оператором циклу з умовою завершення, але такий термін у літературі не зустрічався.
Перепишемо алгоритм із прикладу 4.4 з використанням repeat-оператора. Цикл повинен починатися оператором X:=Y, тому перед циклом треба задати ініціалізацію Y. Умовою завершення повинно стати
not abs(X-Y)>d, або abs(X-Y)<=d,
тобто заперечення умови продовження:
Y:=(a+1)/2;
repeat
X:=Y;
Y:=0.5*(X+a/X);
until abs(X-Y)<=d;
{abs(X-Y)<=d; значення Y – шукане}
Оператору циклу з пост-умовою відповідає блок-схема, зображена на рис.5.1.
2. "Для"
Розглянемо алгоритм обчислення n!=1\xF0D7 2\xF0D7 …\xF0D7 n при n>0, 0!=1, припускаючи, що всі змінні в ньому цілі й значення змінної n є невід'ємним:
f:=1;
{! }
k:=1;
while k<=n do
begin f:=f*k; k:=k+1 end
{k=n+1, останнім співмножником у значенні f було n}
Очевидно, що кількість виконань тіла циклу збігається зі значенням змінної n і, якщо n>0, то оператор f:=f*k виконується при k=1, 2, … , n (за n=0 не виконується жодного разу). "Забудемо на хвилинку" про останнє виконання оператора k:=k+1. Тоді дії, задані операторами після коментарю {!}, можна описати словами "для k=1, 2, … , n виконати f:=f*k" або англійською мовою "for k=1, 2, … , n do f:=f*k". А це вже майже оператор мови Паскаль:
for k := 1 to n do f:=f*k
Такого оператора в мові Паскаль немає, а є схожий за виглядом
repeat
послідовність операторів
until умова
Він називається repeat-оператором, або оператором циклу з пост-умовою ("пост" означає "після"), і дослівно перекладається українською мовою як
повторювати
послідовність операторів
доти, поки не умова.
"Поки не" перетворює умову в умову завершення. Справа в тім, що спочатку виконується послідовність операторів (тіло), потім обчислюється умова, і якщо вона хибна, то знову виконується тіло тощо. Виконання оператора завершується після того, як при обчисленні умови одержано значення true. Таким чином, істинність умови означає завершення, а не продовження виконання всього оператора. Ми б назвали цей оператором циклу з умовою завершення, але такий термін у літературі не зустрічався.
Перепишемо алгоритм із прикладу 4.4 з використанням repeat-оператора. Цикл повинен починатися оператором X:=Y, тому перед циклом треба задати ініціалізацію Y. Умовою завершення повинно стати
not abs(X-Y)>d, або abs(X-Y)<=d,
тобто заперечення умови продовження:
Y:=(a+1)/2;
repeat
X:=Y;
Y:=0.5*(X+a/X);
until abs(X-Y)<=d;
{abs(X-Y)<=d; значення Y – шукане}
Оператору циклу з пост-умовою відповідає блок-схема, зображена на рис.5.1.
2. "Для"
Розглянемо алгоритм обчислення n!=1\xF0D7 2\xF0D7 …\xF0D7 n при n>0, 0!=1, припускаючи, що всі змінні в ньому цілі й значення змінної n є невід'ємним:
f:=1;
{! }
k:=1;
while k<=n do
begin f:=f*k; k:=k+1 end
{k=n+1, останнім співмножником у значенні f було n}
Очевидно, що кількість виконань тіла циклу збігається зі значенням змінної n і, якщо n>0, то оператор f:=f*k виконується при k=1, 2, … , n (за n=0 не виконується жодного разу). "Забудемо на хвилинку" про останнє виконання оператора k:=k+1. Тоді дії, задані операторами після коментарю {!}, можна описати словами "для k=1, 2, … , n виконати f:=f*k" або англійською мовою "for k=1, 2, … , n do f:=f*k". А це вже майже оператор мови Паскаль:
for k := 1 to n do f:=f*k
The online video editor trusted by teams to make professional video in
minutes
© Referats, Inc · All rights reserved 2021