Lykkja (forritun)

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
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
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.

Flokkur:Forritun

en:Control_flow#Loops