Lykkja (forritun)

Úr Wikipediu, frjálsa alfræðiritinu
Stökkva á: flakk, leita

Lykkja eða slaufa í forritun er forritsbútur sem er skrifaður einu sinni, en svo framkvæmdur oft í röð. Fjöldi endurtekninga getur ráðist af talningu eða skilyrði. Lykkjur sem byggja á talningu nefnast FOR lykkjur, en þær sem byggjast á skilyrði nefnast WHILE lykkjur og DO lykkjur.

FOR lykkjur[breyta]

Dæmigerð FOR lykkja hefur teljara sem byrjar í 0 eða 1 og hækkar um einn í hvert skipti sem lykkjan er endurtekin, alveg þangað til settu hámarki er náð. Forritarinn ákveður sjálfur hvað teljarinn heitir, algengast er að nota bókstafinn i.

   FOR i = 1 TO N
       PRINT (i)
   NEXT i

Kóðinn hér að ofan myndi prenta allar tölur frá 1 upp í N. Í þessu dæmi er bara ein skipun inni í lykkjunni, en þær mega vera margar.

Flóknari FOR lykkjur
C/C++

Hér að neðan sést hvernig hægt er að skilgreina fleiri en eina staðværa breytu í FOR-lykkju í C/C++ og að ekki þarf endilega að færa lykkju upp þótt að það sé hefðin. Þessi lykkja er hinsvegar farin að verða hættulega flókin og ætti því að forðast í flestum tilfellum.

   const int MAX = 500;
   for (int i = 1000, int n = 0; i < MAX; i--) 
   {
       n = (1+MAX % i);
   }

Java 5.0

Hér að neðan sést hvernig hægt er að þræða í gegnum einhvern lista af hlutum með for-lykkju í Java 5.0.

    Vector aListi<wikiHlutur> = faLista();
    for (wikiHlutur aHlutur: aListi)
    {
        aHlutur.toString();
    }

WHILE og DO lykkjur[breyta]

WHILE lykkja skoðar tiltekið skilyrði og endurtekur lykkjuna svo lengi sem skilyrðið er satt. DO lykkja er alveg eins og WHILE lykkja, nema að hún athugar skilyrðið í lok lykkjunnar og því er öruggt að DO lykkja framkvæmist að minnsta kosti einu sinni.

While lykkja í VB/ASP:

   while (rsGogn.eof == false)
        Response.write rsGogn.nafn
        rsGogn.moveNext
   wend

While lykkjan getur skrifað út nafnið 0 til n sinnum, þar sem n er fjöldi færslna sem rsGogn geyma. Algeng mistök við notkun while-lykkja er að tryggja að lykkjuskilyrðið verði einhverntíman ósatt. Þegar þessi mistök verða fyrir hendi festist keyrsla ferlisins í óendalegri lykkju. Að geta séð fyrir að þetta komi til með að gerast nefnist stöðvunarvandamál.