Hoppa till innehållet

Loop (programmering)

Från Wikipedia
Version från den 8 maj 2019 kl. 12.11 av Tomas e (Diskussion | Bidrag) (Infogar från dublettartikeln Programslinga, justerar även inledningen baserad på version 27 november 2007 då denna var mer "populärvetenskaplig".)

En slinga eller programslinga (engelska: loop) är en konstruktion inom programmering för att åstadkomma en iteration, det vill säga att vissa instruktioner upprepas flera gånger. Antalet upprepningar kan vara förbestämt, men kan även bestämmas dynamiskt, exempelvis genom att upprepningen sker till ett visst värde uppnåtts. Slingor används ofta då samma uppgift skall utföras för en mängd element, som att skriva ut alla namn som finns i en lista.

I mer fullständiga datavetenskapliga termer förekommer slingor inom imperativa programmeringsspråk för att åstadkomma en iteration, så att en serie satser upprepas flera gånger. Man skiljer på slingor som är pre-evaluerande och post-evaluerande:

  • En pre-evaluerande slinga kontrollerar om den ska köra en gång till innan den utför de instruktioner som ingår i slingan. Exempel:
   while (villkor) programkod
   for(villkor) programkod
  • En post-evaluerande slinga kontrollerar om den ska köra en gång till sedan den utfört instruktionerna. Exempel
   do programkod while villkor
   repeat programkod until villkor

där villkor är ett uttryck i någon form som ska evaluera till sanningsvärdet sant (eng. true)

Vilken slingkonstruktion som används är oftast en fråga om programmerarens tycke och smak, då (i princip) alla slingor kan uttryckas med valfri slingkonstruktion.

För slingor som avses att användas då antalet upprepningar är förutbestämt används ofta nyckelordet for (sv. för). För den typ som avses att användas då antalet upprepningar inte är förbestämt används ofta while (sv. medan) eller (mindre vanligt) repeat ... until.

Exemplen nedan är slingor skrivna i språket C som skriver ut de tio första heltalen.

int i = 0;
for (i = 0; i < 10; ++i) 
{
    printf ("%d\n", i);
}

int i = 0;
while (i < 10) 
{
    printf ("%d\n", ++i);
}

int i = 0;
do  
{
    printf ("%d\n", ++i);
} while (i < 11)

int i = 0;
repeat  
{
    printf ("%d\n", ++i);
} until (i == 10)

Se även

Mall:Programmeringsstub