Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Comment: Migrated to Confluence 5.3

...

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
languagepython
titlePython
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
languagejava
titleJava
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
languagepython
titlePython
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
languagejava
titleJava
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.

;elsif;elsif;elsif;elsif;;(*) --> "if .." "if .." -->[score > 90] "" --> (*) "if .." -->[score > 80] ""--> (*) "if .." -->[]""--> (*) "if .." -->[]""--> (*) "if .." -->[]"" -->(*) "if .." -->[else] "" --> (*)
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
languagepython
titlePython
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)
PlantUML Macro
Code Block
languagejava
titleJava
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);

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.

...