Nekonečná smyčka v programování je smyčka napsaná takovým způsobem, že podmínka ukončení není nikdy splněna. O programu, který vstupuje do nekonečné smyčky, se někdy říká, že je ve smyčce [ 1] .
Koncept nekonečné smyčky hraje důležitou roli v koncepci Turingovy úplnosti programovacích jazyků: na jedné straně lze libovolnou smyčku reprezentovat jako nekonečnou smyčku, v jejímž těle se nachází test výstupní podmínky a příkaz k ukončení smyčky, na druhou stranu lze s nápovědou napsat jakýkoli program:
Nekonečná smyčka v jazyce Pascal :
//Volba 1 while true do begin {udělej něco} if {podmínka pro ukončení nekonečné smyčky} then break end ; //Možnost 2 opakovat {něco udělat} až do false ; //volba 1 pro (;;) { /* dělej něco */ } // možnost 2 while ( true ) { /* dělej něco */ }Jazyk Ada (stejně jako řada jeho potomků) má speciální konstrukci, která popisuje nekonečnou smyčku: [3]
loop -- udělat něco end loop ;Kromě toho vám Ada umožňuje opustit několik vnořených smyček najednou a má také podmíněnou formu příkazu exit, což vám umožní vyhnout se použití příkazu branch:
Out_Cycle : loop ... loop ... exit Out_Cycle when Logic_Exp ; -- ekvivalent if Logic_Exp then exit Out_Cycle ; konec if ; ... endloop ; _ ... konec smyčky Out_Cycle ; -- provádění programu bude pokračovat odtud -- po provedení instrukce exit Out_Cycle;Programy, ze kterých nelze odejít (např. operační systémy , firmware mikrokontroléru ), jsou obvykle nekonečnou smyčkou.
Při psaní programů, které řeší skutečné uživatelské problémy, jsou nekonečné smyčky zpravidla jedním ze zdrojů nestabilního provozu programu. Přitom při psaní algoritmických programů, tedy programů, které řeší určité problémy aplikované informatiky a přímo nesouvisí s praktickými (nebo spíše teoretickými) problémy, je použití nekonečných smyček velmi dobrou profesionální technikou.
Takže například při řešení problémů na olympiádách v informatice (programování) různých úrovní je hlavním úkolem účastníka napsat programy, které řeší navržené algoritmické problémy ve stanoveném čase. Takové problémy se zpravidla řeší pomocí cyklů. Je zřejmé, že účastník nemá dostatek času promyslet si podmínku pro opuštění smyčky (což by mělo být uvedeno v tzv. while-loop). Velmi užitečným trikem je proto použití upravených nekonečných smyček.
Tato technika je založena na skutečnosti, že každý moderní programovací jazyk nabízí řadu operátorů, které umožňují přerušit provádění těla smyčky nikoli po další iteraci, ale až během dalšího provádění (například Breakv Delphi , EXIT FORv BASICu atd. .). Účastník olympiády pro úsporu času zapíše nekonečnou smyčku whiles podmínkou provedení True( while True do ...), a pak podle potřeby do těla smyčky zapíše příkazy kontroly podmínky, které v případě potřeby přeruší provedení smyčky příkazem Break. - jako prohlášení.
Někdy (například ve skriptech pro ovládání postav v počítačových hrách ) je ukončení programu zastavením tlumočníka . Vývojář tedy nemusí explicitně zapisovat výstupní podmínku, což znamená, že se program promění v nekonečnou smyčku. Tento princip je převzat například v Game Makeru , v některých hrách pro programátory .