En while-løkke er en repetisjonssetning bestående av logisk betingelse etterfulgt av programinstruksjonen(e) som skal repeteres. Hvis løkkebetingelsen er oppfylt (betingelsen er sann), utføres programinstruksjonene gjentatte ganger inntil løkkebetingelsen ikke lenger er oppfylt (betingelsen er sann).

Faktaboks

Også kjent som

iterasjon, while-iterasjon

Når vi trenger å gjenta de samme programinstruksjonene flere ganger i samme program, er det en fordel å legge dem inn i en løkke slik at vi kun trenger å skrive dem én gang. While-løkka er en kontrollstruktur vi kan bruke når vi ønsker å få utført én eller flere instruksjoner gjentatte ganger, uten at vi i utgangspunktet vet det eksakte antallet repetisjoner. I sin mest generelle form kan while-løkka beskrives som

while ( < betingelse > )

instruksjon;

der while er et resevert ord i programmeringsspråket, betingelse er et logisk uttrykk som enten er sant eller usant og instruksjon er en programsetning som blir utført så lenge den logiske betingelsen er oppfylt. Hvis man ønsker å få gjentatt en sekvens med flere instruksjoner, kan man erstatte den enkle instruksjonen med en sammensatt programsetning, det vil si en blokk som inneholder flere instruksjoner:

while ( < betingelse > ) {

< løkkekropp bestående av en eller flere instruksjoner >

}

Utførelse

While-løkken utføres på følgende måte: Først evalueres løkkebetingelsen. Hvis den er sann, utføres instruksjonen(e) i løkkekroppen, enten den er en enkelt instruksjon eller en blokk med flere instruksjoner. Deretter blir betingelsen evaluert på nytt, for derved å avgjøre om løkkekroppens instruksjoner skal utføres nok engang. Det er først når betingelsen blir usann at løkka terminerer og programkontrollen går videre i programmet.

Siden den logiske betingelsen er plassert før løkkekroppen, er det ikke sikkert at instruksjonene den inneholder blir utført i det hele tatt. Hvis betingelsen er usann første gang, hopper programkontrollen over løkkekroppen, og forsetter etter denne. Det betyr at en while-løkke utføres null, en eller flere ganger.

Eksempel:

Eksempel på en while-løkke som konverterer sekunder til timer, minutter og sekunder, skrevet i programmeringsspråket Java. Løkka terminerer når brukeren av programmet skriver inn et negativt tall.
/Eksempel på en while-løkke, skrevet i programmeringsspråket Java. .
Lisens: CC BY SA 3.0

Nedenfor sees en programskisse av en while-løkke (skrevet i pseudokode) som gjentatte ganger leser inn et antall sekunder, konverterer sekundene til timer, minutter og sekunder, for så å skrive resultatet ut på skjermen.

inttid;

< les inn tid fra brukeren av programmet >

while ( tid >= 0 ) {

< konverter tid til sekunder, minutter og timer >

< skriv ut resultatet på skjermen >

< les inn tid >

}

Legg merke til at brukeren av programmet må taste inn et positivt tall for å få utført konverteringen. Først når brukeren taster inn et negativt tall, terminerer løkka.

Evig løkke

Har programkontrollen først kommet inn i while-løkka, så kommer den ikke ut av den igjen før betingelsen skifter verdi til usann. Skjer ikke dette, får vi en såkalt «evig løkke» som går og går. Vi får en opplevelse av at programmet «henger seg opp» fordi programkontrollen ikke kommer videre. For at løkka skal terminere, er det viktig at evalueringsgrunnlaget for betingelsen før eller siden endres av løkkekroppens instruksjoner.

Løkker inni løkker

Det er ingen begrensninger på hva slags instruksjoner løkkekroppen kan inneholde. Den kan, i tillegg til enkeltinstruksjoner, bestå av nye løkker og/eller valgsetninger. Kort sagt kan vi kombinere ulike programsetninger som vi vil, og på den måten lage forskjellige algoritmer. Nester vi programsetninger inni hverandre, bør vi imidlertid passe på at nestingsdybden ikke blir større enn strengt tatt nødvendig, da logiske feil har en tendens til å følge i kjølevannet av økt kodekompleksitet.

Når brukes en while-løkke?

Løkker brukes når vi ønsker å få utført en eller flere programinstruksjoner gjentatte ganger. Vi har imidlertid flere løkketyper å velge mellom (while-løkke, do-while-løkke og for-løkke). While-løkka velges gjerne når vi ikke på forhånd vet hvor mange ganger løkkas instruksjoner skal utføres, eventuelt om de skal utføres i det hele tatt. I slike tilfeller vil gjerne løkkebetingelsens sannhetsverdi avhenge av hendelser som skjer under kjøringen av programmet, for eksempel avhenge av input fra brukeren.

Les mer i Store norske leksikon

Kommentarer

Kommentarer til artikkelen blir synlig for alle. Ikke skriv inn sensitive opplysninger, for eksempel helseopplysninger. Fagansvarlig eller redaktør svarer når de kan. Det kan ta tid før du får svar.

Du må være logget inn for å kommentere.

eller registrer deg