Нескінченний цикл: відмінності між версіями

[перевірена версія][перевірена версія]
Вилучено вміст Додано вміст
BunykBot (обговорення | внесок)
м Категоризація за вмістом
BunykBot (обговорення | внесок)
м заміна застарілого тегу source
Рядок 18:
 
=== [[Паскаль (мова програмування)|Pascal]] ===
<sourcesyntaxhighlight lang="pascal">
while true do
begin
Рядок 28:
{ тіло циклу }
until false;
</syntaxhighlight>
</source>
 
=== Для [[С (мова програмування)|С]]-подібних мов<ref>[http://stackoverflow.com/questions/20186809/endless-loop-in-c-c Endless loop in C/C++]</ref> ===
<sourcesyntaxhighlight lang="c">
for (;;) {
/* тіло циклу */
Рядок 55:
/* тіло циклу */
} while(1)
</syntaxhighlight>
</source>
 
=== [[Python]] ===
<sourcesyntaxhighlight lang="python">
while True:
# тіло циклу
</syntaxhighlight>
</source>
 
=== [[Пакетний файл]] [[MS-DOS]] ===
<sourcesyntaxhighlight lang="dos">
:loop
rem тіло циклу
goto loop
</syntaxhighlight>
</source>
 
=== [[Bash]] ===
<sourcesyntaxhighlight lang="bash">
while true
do
# тіло циклу
done
</syntaxhighlight>
</source>
 
=== [[Ruby]] ===
Мова містить спеціальну конструкцію нескінченного циклу:
<sourcesyntaxhighlight lang="ruby">
loop {
# тіло циклу
}
</syntaxhighlight>
</source>
 
=== [[Ада (мова програмування)|Ада]] ===
Ада також містить спеціальну конструкцію, що описує нескінченний цикл<ref>[[b:Ada Programming/Control#Endless Loop|Ada Programming: Control: Endless Loop]]</ref>:
<sourcesyntaxhighlight lang="ada">
loop
-- тіло циклу
end loop;
</syntaxhighlight>
</source>
Окрім того, варто відмітити, що Ада дозволяє здійснити вихід одразу з декількох вкладених циклів, а також має умовну форму оператора виходу, що дозволяє уникнути використання оператора розгалуження.
<sourcesyntaxhighlight lang="ada">
Out_Cycle:
loop
Рядок 111:
--звідси продовжиться виконання програми
--після виконання інструкції exit Out_Cycle;
</sourcesyntaxhighlight>
 
=== [[Lua]] ===
<sourcesyntaxhighlight lang="lua">
while true do
-- тіло циклу
end
</syntaxhighlight>
</source>
 
== Практика ==
Рядок 130:
В [[C++]] цикл проходу по деякому набору елементів з використанням [[абстрактний клас|абстрактного класу]] (ітератора) виглядає так:
 
<sourcesyntaxhighlight lang="c">
Element* el;
SomeIterator it();
Рядок 137:
...
}
</syntaxhighlight>
</source>
 
В деяких діалектах [[Pascal]] цей же цикл (із зберіганням можливості використовувати оператор '''<code>continue</code>''', тобто, без '''<code>el:=it.Get;</code>''' в кінці циклу) виглядає так:
 
<sourcesyntaxhighlight lang="delphi">
it := SomeIterator.Create;
repeat
Рядок 148:
...
until false;
</syntaxhighlight>
</source>
 
Програми, з яких немає виходу (наприклад [[операційна система|операційні системи]], [[мікропрограма|прошивки]] [[мікроконтролер]]ів), також зазвичай є нескінченними циклами. Для попередження неконтрольованого нескінченого циклу використовують [[сторожовий таймер]].