...
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 forskjellige ting avhengig av om betingelsen er true/sann eller false/usann, slik at det blir to greiner, mens det noen ganger bare er behov for én grein. Da utelater en bare else-delen.
Code Block |
---|
language | python |
---|
title | Python |
---|
|
score = 67
grade = ''
if score >= 85:
grade = 'A'
elif score >= 75:
grade = 'B'
elif score >= 60:
grade = 'C'
elif score > 50:
grade = 'D'
elif score > 40:
grade = 'E'
else:
grade = 'F'
print(grade) |
Code Block |
---|
|
int score = 67;
char grade;
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';
System.out.println(grade); |
...
...
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 andre greina gjør en et nytt valg. Eksemplet under, hvor en karakter (grade) settes basert på en poengsum (score):
PlantUML Macro |
---|
start
if (score >= 85) then (true)
:grade = 'A';
elseif (score > 75) then (true)
:grade = 'B';
elseif (score > 60) then (true)
:grade = 'C';
elseif (score > 50) then (true)
:grade = 'D';
elseif (score > 40) then (true)
:grade = 'E';
else (false)
:grade = 'F';
endif
:print(grade);
stop |
, illustrerer dette:
PlantUML Macro |
---|
start
if (score >= 85) then (true)
:grade = 'A';
else (false)
if (score > 75) then (true)
:grade = 'B';
else (false)
if (score > 60) then (true)
:grade = 'C';
else (false)
if (score > 50) then (true)
:grade = 'D';
else (false)
if (score > 40) then (true)
:grade = 'E';
else (false)
:grade = 'F';
endif
endif
endif
endif
endif
:print(grade);
stop | |
Code Block |
---|
language | python |
---|
title | Python |
---|
| score = 67
grade = ''
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) |
Code Block |
---|
| int score = 67;
char grade;
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';
}
}
}
}
System.out.println(grade); |
|
Noen ganger blir det mange slike spørringer nøstet, og det blir Slike nøstede if-else-setninger 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.
PlantUML Macro |
---|
start
if (score >= 85) then (true)
:grade = 'A';
elseif (score > 75) then (true)
:grade = 'B';
elseif (score > 60) then (true)
:grade = 'C';
elseif (score > 50) then (true)
:grade = 'D';
elseif (score > 40) then (true)
:grade = 'E';
else (false)
:grade = 'F';
endif
:print(grade);
stop |
| Code Block |
---|
language | python |
---|
title | Python |
---|
| score = 67
grade = ''
if score >= 85:
grade = 'A' |
| ; | elsifelif score >= 75:
grade = 'B' |
| ; | elsifelif score >= 60:
grade = 'C' |
| ; | elsifelif score > 50:
grade = 'D' |
| ; | elsifelif score > 40:
grade = 'E' |
| ; | ; | PlantUML Macro |
(*) --> "if .."
"if .." -->[score > 90] " Code Block |
---|
| int score = 67;
char grade;
if (score >= 85)
grade = 'A' |
| "
--> (*)
"if .." -->[score > 80] ";
else if (score >= 75)
grade = 'B' |
| " | --> (*)
"if .." -->[ | ] | " | " | --> (*)
"if .." -->[ | ] | " | " | --> (*)
"if .." -->[ | ] | " | "
-->(*)
"if .." -->[else] " | "
--> (*);
System.out.println(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.
...