# Programmeren in Java/Conditionele blokken

Een belangrijk onderdeel van élk programmeertaal is het al dan niet uitvoeren van blokken code afhankelijk of er aan een bepaalde voorwaarde wordt voldaan. Je wilt bijvoorbeeld een stuk code uitvoeren enkel als een gebruiker van een programma meerderjarig is en misschien andere code als dat niet zo is. Door het gebruik van de statements if, else en if else kun je bepalen aan de hand van een booleaanse uitdrukking welke code wanneer moet worden uitgevoerd.

## If

De eenvoudigste vorm van een conditionele blok is het if-statement dat een booleaanse uitdrukking bevat gevolgd door een codeblok dat moet worden uitgevoerd als de booleaanse expressie waar is.
Stel we willen een bericht op het scherm laten zien dat zegt dat de persoon meerderjarig is als die ouder is dan 18. Dan kunnen we bijvoorbeeld het volgende doen met if.
De leeftijd is 25 wat groter of gelijk is aan 18, dus krijg je als uitvoer:
Als je de leeftijd zou veranderen naar bijvoorbeeld 14 dan krijg je niets te zien op het scherm.

## Else

Nu je een if hebt gebruikt om code uit te voeren als er aan een voorwaarde is voldaan, wil je misschien ook code uitvoeren als het tegenovergestelde waar is.
Dit zal dus zeggen dat een persoon meerderjarig is als die ouder is dan 18 of minderjarig als die jonger is dan 18. Dit is echter inefficiënt, want nu hebben we twee booleaanse uitdrukkingen gebruikt die moet worden berekend door Java op twee aparte if statements terwijl we al bij de eerste if statement wisten dat een persoon meerderjarig was of niet.
Hier komt de else van pas en ziet er als volgt uit.
We kunnen dan ons vorig voorbeeld als volgt herwerken.
Je kunt dan ook met die if en else een klein programma maken dat kijkt of een getal even of oneven is.

## Else if

En dan is er ook nog de else if. De else if is een soort van if statement die je net zoals de else kunt laten uitvoeren als de booleaanse uitdrukking van je if false geeft als resultaat. Het verschil met else is dat je bij een else if ook een booleaanse uitdrukking moet meegeven.
We kunnen daardoor het vorige voorbeeld waarbij we op het scherm tonen of een persoon meerderjarig of minderjarig is uitbreiden met op het scherm te tonen of een persoon een vijftigplusser is.
Dit geeft echter als resultaat:
We hadden nochtans de variabele age 65 als waarde gegeven, dus verwachten we dat op het scherm "De persoon is een vijftigplusser." wordt getoond. Het resultaat is echter correct. Net zoals else wordt de else if enkel uitgevoerd als de booleaanse uitdrukking van de eerste if false geeft als resultaat. Want 65 is effectief groter of gelijk aan 18. Je moet dus de "strengste" (of sterkste) booleaanse uitdrukking altijd bovenaan plaatsen.
Met dus als resultaat.
Als je nu 25 zou geven als waarde aan age, krijg je "De persoon is meerderjarig." te zien. Geef je een waarde onder 18, wordt de else-clausule uitgevoerd en krijg je "De persoon is minderjarig." te zien.
Je kun zoveel else if gebruiken als je wilt, je zou dit ook nog kunnen uitbreiden met zestigplusser. Onthoud wel dat de strengste booleaanse uitdrukking bovenaan moet staan.

## Zonder codeblokken

Het is ook mogelijk om de if, else, else if te gebruiken zonder codeblokken(dus geen accolades), bijvoorbeeld zoals volgt:
Als je geen codeblok (met accolades) gebruikt, wordt enkel de regel die rechtstreeks na de if al dan niet uitgevoerd afhankelijk of booleaanse uitdrukking waar is of niet. Als je een regel toevoegt
Dit geeft als resultaat:
Als je age naar bijvoorbeeld 12 zou veranderen, krijg je als resultaat:
Het is echter af te raden om dit effectief zo te doen, het vermindert de leesbaarheid en kan leiden tot fouten als je bijvoorbeeld een regel wilt toevoegen die afhankelijk is aan de if, maar vergeet de accolades toe te voegen om het codeblok aan te geven.

## Switch

Dan is er ook nog de switch, een switch kan een alternatief zijn voor als je een reeks else if-en gebruikt om bijvoorbeeld dezelfde variabele te vergelijken met een bepaalde waarde. Bijvoorbeeld je heb een variabele die de dag van de week bevat en afhankelijk van de waarde wil je maandag, dinsdag, woensdag, etc... tonen op het scherm.
Het probleem hiermee is dat je iedere keer dezelfde variabele gebruikt. Een switch kan dan goed alternatief zijn en ziet er als volgt uit.
Dit voorbeeld zal volgend resultaat geven:
De expressie die je bij een switch invult moet een scalair zijn, een String, of een enum.

### break

Zoals je in vorig voorbeeld kunt zien, wordt er gebruik gemaakt van het sleutelwoord break. In tegenstelling tot if wordt standaard niet alleen de code uitgevoerd die bij de case hoort, maar ook al de code die er achter komt. Volgend voorbeeld maakt dit duidelijk.
Geeft als resultaat:
Dit zorgt er dus voor dat sinds number de waarde drie heeft de case met waarde drie wordt uitgevoerd en alle cases daarachter. break zorgt er dan voor dat je programma uit de switch gaat. Je bent niet verplicht om break te gebruiken of als je het gebruikt bij iedere case te gebruiken. De cases zijn in feite punten waarnaar gesprongen kan worden.

### default

Default is een soort van case maar dan zonder waarde. De code na de default wordt uitgevoerd als de waarde die meegegeven wordt aan de switch niet voorkomt tussen de cases. Neem nu het vorige voorbeeld van het tonen van de dagen aan de hand van een int. Er zijn maar zeven dagen in de week, dus als je een getal geeft die niet tussen één en zeven, zou je een soort foutmelding moeten krijgen. Dit kun je dan doen met default.
Dit geeft dus als resultaat:
In dit voorbeeld hebben we default op het einde van de switch geplaatst, maar je kunt die ook vooraan of tussen de cases plaatsen. Het is echter gangbaar om het op het einde te zetten.