Soms wil je voor één variabele verschillende waarden afzonderlijk testen. Een groep bezoekers krijgt bijvoorbeeld korting afhankelijk van hoe groot de groep is. Hoe schrijf je dat netjes op?
De eerste aanpak is voor elke test een afzonderlijk if-statement schrijven:
Console.Write("Met hoeveel zijn jullie? ");
int aantal = Convert.ToInt32(Console.ReadLine());
if (aantal == 1 || aantal == 2)
{
Console.WriteLine("Helaas, jullie krijgen geen korting");
}
if (aantal == 3)
{
Console.WriteLine("Jullie krijgen 10% korting");
}
if (aantal == 4)
{
Console.WriteLine("Jullie krijgen 20% korting");
}
if (aantal >= 5)
{
Console.WriteLine("Jullie mogen gratis binnen");
}
Dit werkt, maar de computer test élk if-statement, ook al is er al een
match gevonden. Bij veel keuzes wordt dat onnodig veel werk.
Beter is de tests te koppelen met else if. Zodra aan een voorwaarde voldaan
is, worden de volgende voorwaarden niet meer getest. Je programma wordt
daardoor iets efficiënter, en het is meteen ook duidelijker dat er precies één
pad gekozen wordt:
Console.Write("Met hoeveel zijn jullie? ");
int aantal = Convert.ToInt32(Console.ReadLine());
if (aantal == 1 || aantal == 2)
{
Console.WriteLine("Helaas, jullie krijgen geen korting");
}
else if (aantal == 3)
{
Console.WriteLine("Jullie krijgen 10% korting");
}
else if (aantal == 4)
{
Console.WriteLine("Jullie krijgen 20% korting");
}
else
{
Console.WriteLine("Jullie mogen gratis binnen");
}
Het laatste else (zonder voorwaarde) vangt alle overige gevallen op: hier
elke groep van 5 of meer.
Een else if-keten is eigenlijk een korte schrijfwijze voor if-statements die
in elkaar genest zitten: in het else-deel van de ene keuze begint de
volgende keuze.
if (aantal == 1 || aantal == 2)
{
Console.WriteLine("Helaas, jullie krijgen geen korting");
}
else
{
if (aantal == 3)
{
Console.WriteLine("Jullie krijgen 10% korting");
}
else
{
if (aantal == 4)
{
Console.WriteLine("Jullie krijgen 20% korting");
}
else
{
Console.WriteLine("Jullie mogen gratis binnen");
}
}
}
Beide laatste versies doen exact hetzelfde. De else if-keten is korter en
makkelijker te lezen, dus die schrijfwijze gebruik je het best.
Test je dezelfde variabele tegen een hele rij vaste waarden, dan bestaat daar later nog een nettere schrijfwijze voor: het
switch-statement. Dat zie je in een volgende reeks.