En do- while-løkke er en kontrollstruktur bestående av én eller flere programinstruksjoner som eventuelt skal repeteres, etterfulgt av logisk betingelse. Etter at instruksjonene er utført, evalueres løkkebetingelsen, og hvis denne er oppfylt (betingelsen er sann), gjentas løkkas programinstruksjoner, inntil løkkas betingelse ikke lenger er oppfylt (betingelsen er usann).

Faktaboks

Også kjent som

iterasjon, do-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. Do-while-løkka er en repetisjonssetning som egner seg i situasjoner der vi ønsker å få utført samme kodesekvens én eller flere ganger, uten at vi i utgangspunktet vet det eksakte antallet repetisjoner. Løkka har følgende form:

do {

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

} while ( < løkkebetingelse > );

Do-while-setningen starter med det reserverte ordet do, for så å etterfølges av løkke-kroppen, dvs. en sammensatt setning (blokk) som inneholder én eller flere instruksjoner. Løkka avsluttes med det reserverte ordet while etterfulgt av den løkkebetingelsen.

Utførelse

Do-while-løkken utføres på følgende måte: Når programkontrollen kommer til do-while-løkka, blir løkkekroppens instruksjoner utført én gang. Deretter evalueres løkkebetingelsen, og hvis denne er sann, utføres løkkekroppens instruksjoner nok en gang. Slik fortsetter det inntil løkkebetingelsen blir usann. Først da går programkontrollen ut av løkka, og forsetter videre i programmet. Siden den logiske betingelsen er plassert etter løkkekroppen, vil løkkekroppens instruksjoner bli utført minst én gang. Det betyr at en do- while-løkke utføres én eller flere ganger.

Eksempel

Eksempel på en do-while løkke, skrevet i programmerinsspråket Java.
Bildet viser et programavsnitt der en do-while-løkke brukes til innlesning av en epostadresse fra brukeren av programmet. Hvis epostadressen ikke er gyldig, blir det foretatt ny innlesning inntil gyldig epostadresse er lest inn.
Eksempel på en do-while løkke, skrevet i programmerinsspråket Java.
Lisens: CC BY SA 3.0

Nedenfor sees en programskisse av en do-while-løkke (skrevet i pseudokode) som skal lese inn en epostadresse fra brukeren av programmet. Hvis epostadressen er ugyldig, blir løkkebetingelsen sann, og instruksjonene som foretar innlesning gjentas. Innlesingen fortsetter helt til brukeren av programmet taster inn en epostadresse som er gyldig. Først da går programkontrollen videre for å registrere epostadressen, vel vitende om at denne er gyldig.

String epost;

do {

< les inn epostadresse fra brukeren av programmet >

} while ( < ugyldig epostadresse > );

Fordi løkketesten står etter løkkekroppen er vi sikret at innlesning skjer minst én gang.

Evig løkke

Hvis løkkebetingelsen er sann, med det resultat at løkkekroppens instruksjoner blir utført på nytt, vil programkontrollen forbli i løkka inntil betingelsen skifter verdi til usann. Hvis ikke det skjer, får vi en såkalt «evig løkke» som går og går. Vi vil oppleve at programmet «henger seg opp» fordi programkontrollen ikke kommer videre. Det er derfor viktig at evalueringsgrunnlaget for betingelsen før eller siden endres av løkkekroppens instruksjoner, slik at løkka kan terminere og programkontrollen kan gå videre i programmet.

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 å i følge i kjølevannet av økt kodekompleksitet.

Når brukes en do-while-løkke?

Løkker brukes når vi ønsker å få mulighet til å repetere én eller flere programinstruksjoner. Vi har imidlertid flere løkketyper å velge mellom (while-løkke, do-while-løkke og for-løkke). Do-while-løkka velges gjerne når vi ønsker at løkkekroppens instruksjoner skal utføres minst én gang, og eventuelle repetisjoner avhenger av hendelser som skjer under kjøringen av programmet, for eksempel avhenger 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