Oändlig cykel

Den aktuella versionen av sidan har ännu inte granskats av erfarna bidragsgivare och kan skilja sig väsentligt från versionen som granskades den 14 juni 2019; kontroller kräver 2 redigeringar .

En oändlig loop i programmering  är en loop skriven på ett sådant sätt att utgångsvillkoret aldrig uppfylls. Ett program som går in i en oändlig loop sägs ibland vara i en loop [ 1] .

Konceptet med en oändlig slinga spelar en viktig roll i begreppet Turing-fullständighet av programmeringsspråk: å ena sidan kan vilken slinga som helst representeras som en oändlig slinga, i vars kropp det finns ett test för utgångsvillkoret och ett kommando för att lämna loopen, å andra sidan kan vilket program som helst skrivas med hjälp:


Oändlig loop på Pascal- språk :

//Alternativ 1 medan sant börjar { göra något} om {villkor för att lämna den oändliga slingan} , bryt slut ; //Alternativ 2 upprepa {gör något} tills falskt ;

För C -liknande språk: [2]

//alternativ 1 för (;;) { /* göra någonting */ } // alternativ 2 while ( true ) { /* göra någonting */ }

Ada - språket (liksom ett antal av dess ättlingar) har en speciell konstruktion som beskriver en oändlig slinga: [3]

loop -- gör något slut loop ;

Dessutom tillåter Ada dig att lämna flera kapslade loopar samtidigt, och har också en villkorlig form av exit-satsen, vilket gör att du kan undvika att använda branch-satsen:

Out_Cycle : loop ... loop ... avsluta Out_Cycle när Logic_Exp ; -- motsvarande om Logic_Exp avsluta sedan Out_Cycle ; sluta om ; ... ändslinga ; _ ... slut loop Out_Cycle ; -- programexekveringen kommer att fortsätta härifrån -- efter exekvering av instruktionen avsluta Out_Cycle;

Öva

Program som det inte finns någon utgång från (t.ex. operativsystem , firmware för mikrokontroller ) är vanligtvis en oändlig loop.

När man skriver program som löser verkliga användarproblem är oändliga loopar som regel en av källorna till instabil programdrift. Samtidigt, när man skriver algoritmiska program, det vill säga program som löser vissa problem inom tillämpad datavetenskap och inte är direkt relaterade till praktiska (eller snarare teoretiska) problem, är användningen av oändliga loopar en mycket bra professionell teknik.

Så, till exempel, när man löser problem vid olympiader i informatik (programmering) på olika nivåer, är deltagarens huvuduppgift att skriva program som löser de föreslagna algoritmproblemen inom den tilldelade tiden. Som regel löses sådana problem med hjälp av cykler. Uppenbarligen har deltagaren inte tillräckligt med tid att tänka på villkoret för att lämna loopen (vilket bör anges i den så kallade while-loopen). Därför är ett mycket användbart knep att använda modifierade oändliga loopar.

Denna teknik är baserad på det faktum att varje modernt programmeringsspråk erbjuder ett antal operatörer som låter dig avbryta exekveringen av loopkroppen inte efter nästa iteration, utan under nästa exekvering (till exempel Breaki Delphi , EXIT FORi BASIC , etc. .). För att spara tid skriver deltagaren i olympiaden en oändlig loop whilemed ett exekveringsvillkor True( while True do ...), och sedan, vid behov, i slingans kropp skriver tillståndskontrollsatser, som vid behov avbryter exekveringen av slingan med Break -liknande uttalanden.

Ibland (till exempel i skript för att kontrollera karaktärer i datorspel ) är det att avsluta programmet ett stopp för tolken . Så utvecklaren behöver inte uttryckligen skriva ner utgångsvillkoret, vilket innebär att programmet förvandlas till en oändlig loop. Denna princip används till exempel i Game Maker , i vissa spel för programmerare .

Anteckningar

  1. Användningen av detta verb har gått långt utöver programmering, och det används ofta i relation till ämnen i betydelsen att karakterisera felaktigt beteende.
  2. Oändlig loop i C/C++ -   Programmering ? . Hämtad: 2 april 2022.
  3. Ada (programmeringsspråk) - Nationalbiblioteket. N. E. Bauman . en.bmstu.wiki . Hämtad: 2 april 2022.