Het combineren van verschillende if-statements is een krachtige tool. Echter is het combineren aan de hand van OF of EN niet voldoende. Stel je voor dat we een begroeting willen programmeren. Zo lang de tijd onder 10 is, is het ochtend, daarna is het dag en vanaf 20 is het avond. Door verschillende afzonderlijke if-statements en gebruik van logical operators zouden we dit kunnen oplossen, maar dat wordt een complexe structuur. Dit kan efficiënter.
Er bestaat zoiets als een beslissingsboom. Deze bestaat uit verschillende if, else if en else statements. Een boom begint altijd met een if–statement. bv:
if (time < 10) { greeting = "Good morning"; }
Dit is prima voor het eerste stuk van ons vraagstuk. Als de tijd NIET kleiner is dan 10 maar WEL kleiner dan 20 willen we begroeten met “good day”. Wanneer we dit vertalen naar pseudo code zouden we kunnen zeggen:
ALS tijd kleiner is dan 10: "good morning" ANDERS ALS tijd kleiner is dan 20: "good day"
Wanneer we dit veratalen naar echte code krijgen we:
if (time < 10) { greeting = "Good morning"; } else if (time < 20) { greeting = "Good day"; }
Als laatste willen we nog een “good evening” groet wanneer de tijd niet kleiner is dan 10 en ook niet kleiner dan 20. In onze boom kunnen we zeggen:
ALS tijd kleiner is dan 10: "good morning" ANDERS ALS tijd kleiner is dan 20: "good day" ANDERS : "good evening"
vertaald naar code maakt dit:
if (time < 10) { greeting = "Good morning"; } else if (time < 20) { greeting = "Good day"; } else { greeting = "Good evening"; }
Een schematisch overzicht
Oefeningen
Welke kleur zal de achtergrond krijgen als x 10 is? en als x 20 is? Waarom ? Hoe pas je dit aan?