Den vanligste kontrollstrukturen er setninger som utføres i sekvens, som i følgende kode:
print('Hvor gammel er du?') age = int(input()) print('Neste år blir du ' + str(age + 1) + ' år!') 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. |
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:
print('Hvor gammel er du?') ageString = input() if (ageString.isdigit()): print('Neste år blir du ' + str(int(ageString) + 1) + ' år!') 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. 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 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:
print('Hvor gammel er du?') ageString = input() if (ageString.isdigit()): print('Neste år blir du ' + str(int(ageString) + 1) + ' år!') else: print(ageString + ' er ikke 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. |
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):
if score >= 85: grade = 'A'; else: if score >= 75: grade = 'B'; else: if score >= 60: grade = 'C'; else: if score > 50: grade = 'D'; else: if score > 40: grade = 'E'; else: grade = 'F'; print(grade) |
Noen ganger blir det mange slike spørringer nøstet, og det blir fort forvirrende. En bedre løsning er da å bruke else-if-strukturen. Her kan man oppgi flere betingelser i hver sin else-if-grein, og den første som gir true/sann vil bli fulgt. 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.
if score >= 85: grade = 'A'; elsif score >= 75: grade = 'B'; elsif score >= 60: grade = 'C'; elsif score > 50: grade = 'D'; elsif score > 40: grade = 'E'; else: grade = 'F'; print(grade) |
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.