A programozásban végtelen hurok egy olyan ciklus , amely úgy van megírva, hogy a kilépési feltétel soha nem teljesül. Egy végtelen ciklusba belépő programról néha azt mondják, hogy ciklusban van [ 1] .
A programozási nyelvek Turing-teljességének felfogásában fontos szerepet játszik a végtelen ciklus fogalma : egyrészt bármely ciklus végtelen ciklusként ábrázolható, amelynek törzsében van egy teszt a kilépési feltételre, ill. egy parancs a ciklusból való kilépéshez, másrészt bármilyen program írható segítséggel:
Végtelen ciklus Pascal nyelven :
//Option 1 while true do begin {csinál valamit} if {feltétel a végtelen ciklusból való kilépéshez} then break end ; //2. lehetőség ismételje meg a { csináljon valamit} hamisig ; //1. lehetőség ( ;;) { /* csinálj valamit */ } // 2. lehetőség while ( igaz ) { /* csinálj valamit */ }Az Ada nyelvnek (valamint számos leszármazottjának) van egy speciális konstrukciója, amely egy végtelen hurkot ír le: [3]
loop -- csinálj valamit vége ciklus ;Ezenkívül az Ada lehetővé teszi, hogy egyszerre több beágyazott ciklusból is kilépjen, és van egy feltételes formája az exit utasításnak is, amely lehetővé teszi az elágazás használatának elkerülését:
Out_Cycle : ciklus ... ciklus ... kilépés Out_Cycle amikor Logic_Exp ; -- megegyezik azzal , hogy ha Logic_Exp then exit Out_Cycle ; vége if ; ... endloop ; _ ... end loop Out_Cycle ; -- a program végrehajtása innen folytatódik -- az utasítás végrehajtása után lépjen ki az Out_Cycle-ből;Azok a programok, amelyekből nincs kilépés (pl. operációs rendszerek , mikrokontroller firmware ), általában végtelen hurok.
Valódi felhasználói problémákat megoldó programok írásakor a végtelen ciklusok általában az instabil programműködés egyik forrása. Mindeközben algoritmikus, vagyis az alkalmazott számítástechnika bizonyos problémáit megoldó, gyakorlati (vagy inkább elméleti) problémákhoz közvetlenül nem kapcsolódó programok írásakor a végtelen hurkok alkalmazása nagyon jó szakmai technika.
Így például a különböző szintű informatikai (programozási) olimpiákon a feladatok megoldása során a résztvevő fő feladata olyan programokat írni, amelyek a megadott időn belül megoldják a javasolt algoritmikus problémákat. Az ilyen problémákat általában ciklusok segítségével oldják meg. Nyilvánvalóan a résztvevőnek nincs elég ideje átgondolni a ciklusból való kilépés feltételét (amit az ún. while-hurokban kell feltüntetni). Ezért egy nagyon hasznos trükk a módosított végtelen hurkok használata.
Ez a technika azon a tényen alapul, hogy minden modern programozási nyelv számos olyan operátort kínál, amelyek lehetővé teszik a ciklustörzs végrehajtásának megszakítását nem a következő iteráció után, hanem a következő végrehajtás során (például Delphiben , BASIC - Breakben stb . .). Az olimpián résztvevő az időmegtakarítás érdekében végtelen ciklust ír végrehajtási feltétellel ( ), majd szükség szerint a ciklus törzsébe feltétel-ellenőrző utasításokat ír, amelyek szükség esetén megszakítják a ciklus végrehajtását a Break által. -szerű kijelentések. EXIT FORwhileTruewhile True do ...
Néha (például a számítógépes játékok karaktereinek vezérlésére szolgáló szkriptekben ) a programból való kilépés az értelmező leállását jelenti . Így a fejlesztőnek nem kell kifejezetten leírnia a kilépési feltételt, ami azt jelenti, hogy a program egy végtelen ciklusba fordul. Ezt az elvet alkalmazzák például a Game Makerben , néhány programozói játékban .