Loputon sykli

Kokeneet kirjoittajat eivät ole vielä tarkistaneet sivun nykyistä versiota, ja se voi poiketa merkittävästi 14. kesäkuuta 2019 tarkistetusta versiosta . tarkastukset vaativat 2 muokkausta .

Ohjelmoinnissa ääretön silmukka on silmukka , joka  on kirjoitettu siten, että poistumisehto ei koskaan täyty. Ohjelman, joka tulee äärettömään silmukkaan, sanotaan joskus olevan silmukassa [ 1] .

Äärettömän silmukan käsitteellä on tärkeä rooli ohjelmointikielten Turing-täydellisyyden käsitteessä : toisaalta mikä tahansa silmukka voidaan esittää äärettömänä silmukana, jonka rungossa on testi poistumisehdon ja komennon silmukasta poistumiseksi, toisaalta mikä tahansa ohjelma voidaan kirjoittaa avulla:


Infinite loop Pascal -kielellä :

//Vaihtoehto 1 while true do begin {tee jotain} if {ehto äärettömästä silmukasta poistumiselle} then break end ; //Vaihtoehto 2 toista {tee jotain} , kunnes false ;

C : n kaltaiset kielet: [2]

//vaihtoehto 1 kohteelle (;;) { /* tee jotain */ } // vaihtoehto 2 while ( tosi ) { /* tee jotain */ }

Ada - kielellä (samoin kuin useilla sen jälkeläisillä) on erityinen rakenne, joka kuvaa ääretöntä silmukkaa: [3]

loop -- tee jotain lopeta silmukka ;

Lisäksi Adassa voit poistua useista sisäkkäisistä silmukoista kerralla, ja siinä on myös ehdollinen exit-lauseen muoto, jonka avulla voit välttää haarakäskyn käyttöä:

Out_Cycle : loop ... loop ... exit Out_Cycle kun Logic_Exp ; -- vastaa jos Logic_Exp sitten exit Out_Cycle ; loppu jos ; ... endloop ; _ ... loppu silmukka Out_Cycle ; -- ohjelman suoritus jatkuu tästä -- käskyn suorittamisen jälkeen poistu Out_Cycle;

Harjoittele

Ohjelmat, joista ei ole poistua (esim. käyttöjärjestelmät , mikro -ohjaimen laiteohjelmisto ) ovat yleensä loputon silmukka.

Kirjoitettaessa ohjelmia, jotka ratkaisevat todellisia käyttäjän ongelmia, äärettömät silmukat ovat pääsääntöisesti yksi ohjelman epävakaan toiminnan lähteistä. Samaan aikaan kirjoitettaessa algoritmisia ohjelmia, eli ohjelmia, jotka ratkaisevat tiettyjä soveltavan tietojenkäsittelytieteen ongelmia ja jotka eivät liity suoraan käytännön (tai pikemminkin teoreettisiin) ongelmiin, äärettömien silmukoiden käyttö on erittäin hyvä ammattitekniikka.

Joten esimerkiksi ratkottaessa tehtäviä eritasoisissa informatiikan (ohjelmointi) olympialaisissa osallistujan päätehtävänä on kirjoittaa ohjelmia, jotka ratkaisevat ehdotetut algoritmiset ongelmat varatuissa ajassa. Yleensä tällaiset ongelmat ratkaistaan ​​syklien avulla. Ilmeisesti osallistujalla ei ole tarpeeksi aikaa miettiä silmukasta poistumisen ehtoa (joka tulee ilmoittaa ns. while-silmukassa). Siksi erittäin hyödyllinen temppu on käyttää modifioituja äärettömiä silmukoita.

Tämä tekniikka perustuu siihen tosiasiaan, että jokainen moderni ohjelmointikieli tarjoaa joukon operaattoreita, joiden avulla voit keskeyttää silmukan rungon suorittamisen ei seuraavan iteraation jälkeen, vaan seuraavan suorituksen aikana ( Breakesimerkiksi Delphissä , EXIT FORBASICissa jne . .). Olympiadin osallistuja kirjoittaa ajan säästämiseksi äärettömän silmukan whilesuoritusehdolla True( while True do ...) ja sitten tarvittaessa silmukan rungossa ehtotarkistuslausekkeita, jotka tarvittaessa keskeyttävät silmukan suorittamisen Breakilla. - kuten lausunnot.

Joskus (esimerkiksi tietokonepelien hahmojen ohjaamiseen tarkoitetuissa skripteissä ) ohjelmasta poistuminen on tulkin pysähdys . Joten kehittäjän ei tarvitse erikseen kirjoittaa poistumisehtoa muistiin, mikä tarkoittaa, että ohjelma muuttuu loputtomaksi silmukaksi. Tämä periaate on otettu käyttöön esimerkiksi Game Makerissa joissakin ohjelmoijien peleissä .

Muistiinpanot

  1. Tämän verbin käyttö on mennyt paljon ohjelmointia pidemmälle, ja sitä käytetään usein aiheiden yhteydessä siinä merkityksessä, että se kuvaa virheellistä käyttäytymistä.
  2. Infinite Loop in C/C++ -   Ohjelmointi ? . Haettu: 2.4.2022.
  3. Ada (ohjelmointikieli) - Kansalliskirjasto. N. E. Bauman . en.bmstu.wiki . Haettu: 2.4.2022.