Excerpt |
---|
En kontrollstruktur styrer hva hvilken slags kode som kjører når. Denne siden oppsummerer de viktigste kontrollstrukturene og peker videre til sider som tar for seg hver type. |
Sekvens
Et prosedyreorientert program består av setninger som utføres i sekvens, så uten noen spesielle konstrollstrukturer vil all koden bli utført én og bare én gang. Koden under illustrerer poenget:
Illustrasjon av koden med et flytskjema. Kontrollflyten går nedover fra boks til boks.
|
Først skrives spørsmålet ut, så venter programmet på input (som bør være et tall) fra brukeren og til slutt skrives en ny melding ut.
PlantUML Macro | |
| '
| :
| int(input
| )
| :print('
| '
| str
| '
| '
|
stop
Betingelser med if-then-else
En kommer imidlertid fort bort i situasjoner hvor kode bare skal utføres i bestemte tilfelle, f. F.eks. vil koden over kræsje hvis input-en ikke er et gyldig tall. Derfor kan det vært lurt å sjekke gyldigheten og utføre ulike setninger avhengig av om input-en er et tall eller ikke:
Kontrollflyten har en forgreining, hvor verdien av betingelsen (true eller false) avgjør hvilken grein som tas.
|
Her brukes if-nøkkelordet for å angi at print-setningen kun skal utføres hvis betingelsen ageInput.isdigit() er sann. PlantUML Macro |
|
| isdigit()) then (true)
:print('Neste år ...');
else (false)
:print
| '
| '
|
endif
stopHer brukes if-nøkkelordet for å angi at print-setningen kun skal utføres hvis betingelsen ageInput.isdigit() er sann. Her ser vi også at en må gruppere setninger med { og }.
|
Dette kalles gjerne betinget utførelse, siden setningene i de to greinene utføres bare hvis en bestemt betingelse er true/sann eller false/usann. Det finnes flere varianter, f.eks. kan en utelate else-delen er eller ha en ny if i else-delen for å håndtere flere tilfeller.
Les mer om dette her: if-kontrollstrukturen
Løkker med while
Løkker er kode som utføres flere ganger. Det er vanlig å skille mellom while-løkker og for-løkker. En while-løkke sjekker en betingelse, og gjennomfører koden i løkkekroppen inni løkka så lenge denne betingelsen er sann. Man må være forsiktig når man skriver while-løkker; dersom ikke betingelsen er formulert riktig kan man ende opp med det som kalles en "uendelig løkke". Når man leser inn data fra en tekstfil, kan det se omtrent Hvis man vil stille spørsmålet om alder helt til man får et ordentlig svar, så vil det se slik slik ut:
|
...
|
|
|
En for-løkke er et spesialtilfelle av en while-løkke, og brukes dersom man vet hvor mange ganger løkkekroppen skal utføres. Man har en tellevariabel som endres hver gang løkken har kjørt, og til slutt er tellevariabelen så stor eller liten at løkken er ferdig. Det er også mulig å få for-løkker til å kjøre uendelig, så vær forsiktig med bruken av denne også. For å implementere en for-løkke trenger man (1) en startverdi for tellevariabelen, (2) en sluttverdi for tellevariabelen, og (3) hvor mye man ønsker å endre tellevariabelen etter hver løkke. En standard bruk av slike løkker er å bla gjennom en liste, og gjøre noe med hvert element i listen.
...