If/else
If statement
Het if statement is een van de meest gebruikte statements in de programmeertaal C++. Het laat je toe om een bepaald stuk code uit te voeren als een bepaalde voorwaarde waar is. Als de voorwaarde niet waar (false) is, wordt de code overgeslagen.
if (voorwaarde) {
// Code die wordt uitgevoerd als de voorwaarde waar is
}Bijvoorbeeld:
int leeftijd = 14;
if (leeftijd < 18) {
Serial.println("Je bent minderjarig.");
}In dit voorbeeld wordt de tekst "Je bent meerderjarig." geprint naar de seriële monitor als de variabele leeftijd groter is dan 17.
De vergelijkingsoperatoren die je kan gebruiken zijn:
==: gelijk aan!=: verschillend van; niet gelijk aan<: kleiner dan<=: kleiner dan of gelijk aan>: groter dan>=: groter dan of gelijk aan
Opgelet
Let op het verschil tussen == en =. == wordt gebruikt om te controleren of twee waarden gelijk zijn aan elkaar. = wordt gebruikt om een waarde toe te kennen aan een variabele.
int getal = 5;
if (getal == 5) {
Serial.println("Het getal is 5.");
}Als je if(getal = 5) zou schrijven, genereer je een vervelende bug. Je krijgt geen foutmelding, maar dat maakt het probleem net erger. De waarde 5 wordt toegekend aan de variabele getal. Arduino heeft hier geen enkel probleem mee, en de voorwaarde wordt daarom altijd waar! De tekst "Het getal is 5." wordt dus altijd geprint, ongeacht de waarde van getal. Dit heeft al veel collega-programmeurs kopzorgen gebaard, dus let hier goed op!
Else statement
Het else statement wordt gebruikt in combinatie met het if statement. Als de voorwaarde van het if statement niet waar is (false), wordt de code in het else statement uitgevoerd.
if (voorwaarde) {
// Code die wordt uitgevoerd als de voorwaarde waar is
} else {
// Code die wordt uitgevoerd als de voorwaarde niet waar is
}Bijvoorbeeld:
int leeftijd = 21;
if (leeftijd >= 18) {
Serial.println("Je bent meerderjarig.");
} else {
Serial.println("Je bent minderjarig.");
}In dit voorbeeld wordt de tekst "Je bent meerderjarig." geprint naar de seriële monitor als de variabele leeftijd groter is dan of gelijk is aan 18. Anders wordt de tekst "Je bent minderjarig." geprint.
Else if statement
Het else if statement wordt gebruikt om meerdere voorwaarden te controleren. Het wordt gebruikt na een if statement en voor een else statement. Als de voorwaarde van het if statement niet waar is, wordt de voorwaarde van het else if statement gecontroleerd.
if (voorwaarde1) {
// Code die wordt uitgevoerd als voorwaarde1 waar is
} else if (voorwaarde2) {
// Code die wordt uitgevoerd als voorwaarde1 niet waar is en voorwaarde2 waar is
} else {
// Code die wordt uitgevoerd als geen van de voorwaarden waar is
}Let op het grote verschil tussen onderstaande code:
int getal = 8;
if (getal < 10) {
Serial.println("Getal is kleiner dan 10.");
} else if (getal < 20) {
Serial.println("Getal is kleiner dan 20 maar groter dan 10.");
}int getal = 8;
if (getal < 10) {
Serial.println("Getal is kleiner dan 10.");
}
if (getal < 20) {
Serial.println("Getal is kleiner dan 20 maar groter dan 10.");
}In het eerste voorbeeld wordt enkel de eerste Serial.println() uitgevoerd, omdat de voorwaarde van de eerste if statement waar is. In het tweede voorbeeld worden alle Serial.println() statements uitgevoerd, omdat elke if statement afzonderlijk wordt gecontroleerd. Het tweede voorbeeld zal dus foutief zeggen dat het getal groter is dan 10.
Opgelet
Verschillende leerlingen maken in het begin te veel onnodig gebruik van else if statements. Bekijk onderstaand foutief voorbeeld:
int getal = 8;
if (getal < 10) {
Serial.println("Getal is kleiner dan 10.");
} else if (getal >= 10) {
Serial.println("Getal is groter of gelijk aan 10.");
}Merk op dat het controleren of een getal groter of gelijk is aan 10 overbodig is. Als het getal niet kleiner is dan 10, dan is het automatisch groter of gelijk aan 10. Het tweede if statement kan dus vervangen worden door een else statement, zoals in onderstaan correct voorbeeld:
int getal = 8;
if (getal < 10) {
Serial.println("Getal is kleiner dan 10.");
} else {
Serial.println("Getal is groter of gelijk aan 10.");
}