Meer dan twee keuzes: else if

Tot nu toe konden we kiezen tussen twee opties: wel of niet (met if en else). Maar wat als je meer keuzes hebt? Denk aan een stoplicht: dat kan rood, oranje of groen zijn. Of schoolcijfers: A, B, C, D of F.

Hiervoor gebruiken we de else if structuur.

De Stoplicht Analogie

Stel je voor dat je bij een stoplicht staat.

  1. Als (if) het licht rood is: Stop.
  2. Anders, als (else if) het licht oranje is: Rem af.
  3. Anders (else) (het moet dan wel groen zijn): Rij door.

In C# code ziet dat er zo uit:

string stoplicht = "oranje";

if (stoplicht == "rood")
{
    Console.WriteLine("Stop!");
}
else if (stoplicht == "oranje")
{
    Console.WriteLine("Rem af!");
}
else
{
    Console.WriteLine("Rij door!");
}

Hoe werkt het?

De computer gaat het rijtje van boven naar beneden af:

  1. Hij checkt de eerste if. Is die waar?
    • Ja: Voer het blok uit en sla de rest over.
    • Nee: Ga naar de volgende else if.
  2. Hij checkt de else if. Is die waar?
    • Ja: Voer het blok uit en sla de rest over.
    • Nee: Ga naar de volgende (of naar else).
  3. Als geen enkele voorwaarde waar was, voert hij het else blok uit (als dat er is).

{.callout.callout-info}

Belangrijk:

Er wordt maximaal één blok code uitgevoerd. Zodra de computer een “match” vindt, stopt hij met zoeken in die specifieke if-else if-else keten.

Voorbeeld: Punten en Cijfers

Laten we kijken naar een schoolsysteem.

int score = 85;

if (score >= 90)
{
    Console.WriteLine("Je hebt een A!");
}
else if (score >= 80)
{
    Console.WriteLine("Je hebt een B!");
}
else if (score >= 70)
{
    Console.WriteLine("Je hebt een C!");
}
else
{
    Console.WriteLine("Helaas, een F.");
}

Wat gebeurt er hier met score 85?

  1. score >= 90 (85 >= 90)? Nee.
  2. score >= 80 (85 >= 80)? Ja!
    • De computer schrijft “Je hebt een B!”.
    • Hij springt nu helemaal naar het einde en slaat de rest over.

Veelgemaakte Fouten

1. De Volgorde is Belangrijk!

Als je de volgorde omdraait, gaat het mis.

// FOUTE VOLGORDE
if (score >= 70) 
{
    Console.WriteLine("C");
}
else if (score >= 90)
{
    Console.WriteLine("A");
}

Als je hier een score van 95 hebt:

  1. score >= 70 (95 >= 70)? Ja!
  2. Hij schrijft “C” en stopt. Je krijgt dus nooit een A, omdat de eerste check al “waar” was. Regel: Begin altijd met de meest specifieke of strengste voorwaarde.

2. Vergeet de else niet (optioneel)

De else aan het einde is niet verplicht, maar wel handig om alle “overige” gevallen op te vangen. Als je geen else hebt en geen enkele if of else if is waar, gebeurt er gewoon niets.