De for-loop is een begrensde herhaling.
De while-loop is een voorwaardelijke herhaling.
Deze herhalingen zijn allebei herhalingsstructuren.
We bekijken nu ook nog een keuzestructuur.
We maken gebruik van een willekeurig getal.
Als dat getal even is, moet het lampje kort pinken.
Als het getal oneven is, blijft het lampje uit.
Opdracht 1
Dit is een voorwaardelijke keuze:
Als aan een bepaalde voorwaarde voldaan is
Dan ga je verder met een actie.
Anders [is de voorwaarde niet voldaan]
Dan ga je verder met een andere actie.
Deze methode van Nederlandse zinnen herformuleren zodanig dat ze al in de vorm van een codeertaal staan, noemt men pseudocode.
In het Engels gebruikt men if... else... in de plaats van als... anders...
Het willekeurig getal
De voorwaardelijke keuze zal voor "een willekeurig getal" nagaan of het even is.
Dat "willekeurig getal" zullen we implementeren in de code via de random number generator, oftewel de toevalsgenerator.
Opdracht 2
Zoek online op wat een toevalsgenerator precies doet.
Zoek op de website van Arduino welke twee instructies je zou kunnen gebruiken als toevalsgenerator. Bestudeer ook het verschil tussen de twee.
https://www.arduino.cc/reference/en/
De instructies die je hierboven vond, geven een willekeurig getal.
We moeten voor dit getal ook nog bepalen of het even of oneven is.
Denk na hoe je wiskundig kan controleren of een geheel getal even of oneven is.
Zoek op de website van Arduino naar 1 rekenkundige operator en 1 vergelijkingsoperator die je voor de bewerkingen nodig zal hebben:
https://www.arduino.cc/reference/en/
We maken gebruik van random(). We controleren of het willekeurig getal even is door het te delen door 2 en te controleren of de rest van de deling gelijk is aan 0.
Opdracht 3
Lees op de website van Arduino welke parameters je nodig hebt om gebruik te maken van de if... else... - keuzestructuur:
https://www.arduino.cc/reference/en/
pseudocode
Als (voorwaarde){
blinkKort();
Anders {
delay(2*wachttijdKort);
}
Opdracht 4
Uitwerking 1
Vervang de while-loop door deze keuzestructuur.
Probeer de code uit.
Oplossing
int wachttijdKort = 500;
int wachttijdLang = 3*wachttijdKort;
void setup() {
pinMode(LED_BUILTIN, OUTPUT);
}
void blinkKort() {
digitalWrite(LED_BUILTIN, HIGH);
delay(wachttijdKort);
digitalWrite(LED_BUILTIN, LOW);
delay(wachttijdKort);
}
void loop() {
if(random()%2 == 0){
blinkKort();
}
else {
delay(2*wachttijdKort);
}
}
De if-else is een voorwaardelijke keuze.
Bij de voorwaarde geef je aan welke voorwaarde moet voldaan zijn om de instructie binnen de if-accolades uit te voeren.
Wordt aan de voorwaarde niet voldaan, zal de instructie binnen de else-accolades uitgevoerd worden.