In dit deel zullen we bekijken hoe we ons programma dynamischer kunnen maken met behulp van het if-statement.
De if
is een van de elementairste constructies in een programmeertaal. De syntax is als volgt:
Enkel indien de booleaanse expressie waar is, en dus true
als resultaat heeft, zal de code binnen de accolades van het if-blok uitgevoerd worden. Indien de expressie niet waar is (false
) dan wordt het blok overgeslagen en gaat het programma verder met de code eronder.
Een voorbeeld:
De uitvoer van dit programma zal zijn:
Indien number
groter of gelijk aan 5 was dan zou er enkel B
op het scherm zijn verschenen. De lijn Console.WriteLine("B")
zal sowieso uitgevoerd worden zoals je ook kan zien aan de volgende flowchart:
Het is aangeraden om steeds na de if-expressie met accolades te werken. Dit zorgt ervoor dat alle code tussen het block (de accolades) zal uitgevoerd worden indien de booleanse expressie waar was. Gebruik je geen accolades dan zal enkel de eerste lijn na de if
uitgevoerd worden bij true
.
Een voorbeeld:
De booleaanse expressie die je tussen de if
haakjes plaats moet een stuk code zijn dat altijd een bool
als resultaat teruggeeft.
We verwachten dat je if
altijd met een block gebruikt, omdat dat leesbaarder is. De versie zonder block zien we als een stijlfout!
Er zijn enkele veelgemaakte fouten waar je op moet letten:
De types in je booleanse expressie moeten steeds vergelijkbaar zijn. Volgende code is dus fout: if( "4" > 3)
daar we hier een string
met een int
vergelijken.
Accolades vergeten plaatsen om een codeblock aan te duiden, maar je code toch zodanig outlinen (met tabs) dat het lijkt of je een heel codeblock hebt. Het gevolg zal zijn dat enkel de eerste lijn na de if
zal uitgevoerd worden indien true
. Gebruiken we de if
met block van daarnet maar zonder accolades dan zal de laatste lijn altijd uitgevoerd worden ongeacht de if
:
Merk ook op dat je code anders uitlijnen géén invloed heeft op de uitvoer (wat bijvoorbeeld wel zo is bij de programmeertaal Python).
Dit zal ervoor zorgen dat er eigenlijk geen codeblock bij de if
hoort en je dus een nietszeggende if
hebt geschreven. De code na het puntkomma zal uitgevoerd worden ongeacht de if
:
Met de relationele operatoren (==
, !=
, <
, >
, <=
en >=
) kunnen we complexere expressies schrijven die als uitkomst waar (true
) of niet waar (false
) geven.
Een voorbeeld:
Uitvoer van bovenstaande code zal zijn:
We kunnen ook meerdere expressies combineren zodat we complexere uitdrukkingen kunnen maken. Hierbij kan je gebruik maken van de logische operatoren (&&
, ||
, !
) .
Een voorbeeld:
Uitvoer van dit programma zal zijn:
Met if
/else
kunnen we niet enkel zeggen welke code moet uitgevoerd worden als de conditie waar is maar ook welke specifieke code indien de conditie niet waar (false
) is. Volgend voorbeeld geeft een typisch gebruik van een if
/else
structuur om 2 waarden met elkaar te vergelijken:
Kan je zelf een flowchart van bovenstaande code tekenen? Try it!
Met een if
/else if
constructie kunnen we meerdere criteria opgeven die waar/niet waar moeten zijn voor een bepaald stukje code kan uitgevoerd worden. Sowieso begint men steeds met een if
. Als men vervolgens een else if
plaats dan zal de code van deze else if
uitgevoerd worden enkel en alleen als de eerste expressie (van de if
) niet waar was en de expressie van deze else if
wel waar is.
Een voorbeeld:
Merk op dat else if
niet meer is dan een verkorte schrijfwijze voor nesting van een if
in een else
-block.
We kunnen met behulp van nesting ook complexere programma flows maken. Hierbij gebruiken we de accolades om het blok code aan te duiden dat bij een if
/else if
/else
hoort. Binnen dit blok kunnen nu echter opnieuw if
/else if
/else
structuren worden aangemaakt.
Volgende voorbeeld toont dit aan (bekijk wat er gebeurt als je emergencyValve aan closed
gelijkstelt):