...
Eksempel på sekvens: 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.
|
Illustrasjon av koden med et flytskjema. Kontrollflyten går nedover fra boks til boks. |
Betingelser med if-then-else
En kommer imidlertid fort bort i situasjoner hvor kode bare skal utføres i bestemte tilfelle, f.eks. vil koden over kræsje hvis input-en ikke er et gyldig tall. Det vil være lurt å bare utføre den siste linja hvis input-en faktisk er et tall:
Her brukes if-nøkkelordet for å angi at print-setningen kun skal utføres hvis betingelsen ageInput.isdigit() er sann. |
Kontrollflyten har en forgreining, hvor verdien av betingelsen (true eller false) avgjør hvilken grein som tas. |
if-en angir en kontrollstruktur som kalles betinget utførelse og finnes i flere varianter. Betingelsen kan være hvilket som helst uttrykk som gir en logisk verdi, altså true/sant eller false/usant. Det finnes flere varianter av if-kontrollstrukturen. I eksemplet over skal dere det gjøres noe bare dersom betingelsen er true/sann. Dersom det skal gjøre noe annet i tilfellet hvor betingelsen er usann, så får en følgende variant:
Her brukes if-nøkkelordet for å angi at print-setningen kun skal utføres hvis betingelsen ageInput.isdigit() er sann. |
Kontrollflyten har en forgreining, hvor verdien av betingelsen (true eller false) avgjør hvilken grein som tas. |
Betingelser er også kjent som if-setninger. Alle betingelser stiller et spørsmål som svares med enten "ja" eller "nei". I programmeringssjargong sier vi at uttrykket må kunne evalueres til sant eller usant, og omfatter derfor et boolsk uttrykk.
Den enkleste form for betingelse er en if-else spørring. Denne evaluerer et uttrykk til sant eller usant, og velger en programflyt avhengig av dette. I figuren under ser du et eksempel på en slik spørring, som er et forenklet sekvensdiagram for kjøring av Java-programmer. Det er prosessen "Run java program" som er if-delen av betingelsen, og "Give error message" som er else-delen av betingelsen.
PlantUML Macro |
---|
start
if (If...) then (Java is installed)
:Run java \nprogram;
else (Java is <b>not</b> installed)
:Give error \nmessage;
endif
stop |
...
Noen ganger ønsker man å velge mellom flere enn to greiner. Dette kan gjøres ved å ha en ny if inni else-delen. Man tar altså først et valg mellom to greiner og i den ene greina gjør en et nytt valg. Eksemplet under, hvor en karakter (grade) settes basert på en poengsum (score):
|
|
...
|
...
|
Noen ganger blir det mange slike spørringer nøstet, og det blir fort forvirrende. En bedre løsning er da å bruke elseif-strukturen. Her kan man evaluere flere uttrykk, og man vil kjøre den første kodeblokken som passer spørringen. I diagrammet nedenfor kan man tenke seg at man går fra venstre mot høyre, og følger den første pilen som passer.
PlantUML Macro |
---|
(*) --> "If.." "If.." -->[score > 90] "grade = A" --> (*) "If.." -->[score > 80] "grade = B" --> (*) "If.." -->[score > 60] "grade = C" --> (*) "If.." -->[score > 50] "grade = D" --> (*) "If.." -->[score > 40] "grade = E" -->(*) "If.." -->[else] "grade = F" --> (*) |
Gruppering av setninger
En kan godt ha flere setninger i then- og/eller else-delen, og de fleste programmeringsspråk har en måte å gruppere setninger på. I Java grupperes setninger ved at en har { og } rundt, mens en i python bruker innrykket for å angi hvilke setninger som hører til de ulike greinene.
Løkker
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 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 slik ut:
...