Végtelen ciklus

Az oldal jelenlegi verzióját még nem ellenőrizték tapasztalt közreműködők, és jelentősen eltérhet a 2019. június 14-én felülvizsgált verziótól ; az ellenőrzések 2 szerkesztést igényelnek .

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 ;

C -szerű nyelvek esetén : [2]

//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;

Gyakorlat

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 .

Jegyzetek

  1. Ennek az igének a használata messze túlmutat a programozáson, és gyakran használják alanyokkal kapcsolatban a helytelen viselkedés jellemzésére.
  2. Végtelen ciklus C/C++-ban -   Programozás ? . Letöltve: 2022. április 2.
  3. Ada (programozási nyelv) - Nemzeti Könyvtár. N. E. Bauman . en.bmstu.wiki . Letöltve: 2022. április 2.