Branching¶
Branching betekent dat je programma keuzes maakt: verschillende stukken code worden uitgevoerd afhankelijk van voorwaarden. Zonder branching zou een programma altijd exact dezelfde stappen uitvoeren — ongeacht wat er gebeurt. In p5.js gebruik je branching om bijvoorbeeld te reageren op muisbewegingen, toetsenbordinvoer of botsingen.
Waarom branching?¶
In interactieve programma’s zoals een p5.js sketch wil je dat het gedrag verandert als er iets gebeurt:
- Als de muis links van het scherm is, teken iets blauw; anders rood.
- Als de gebruiker een toets indrukt, beweeg een object.
- Als een bal de rand raakt, verander de richting.
Branching maakt dit soort voorwaardelijke logica mogelijk.
De if-constructie¶
De basisvorm:
Voorbeeld: basis if-constructie
Voorbeeld:
Voorbeeld: if-else met muispositie
De conditie tussen haakjes moet een boolean opleveren (true of false). Vergelijkingen (>, <, ===) en logische operatoren (&&, ||, !) worden vaak gebruikt.
if – else – else if¶
Met meerdere paden:
Voorbeeld: if – else if – else keten
Gebruik else if voor meerdere mogelijke condities en een afsluitende else voor alles wat overblijft.
Tip: Zet de meest specifieke voorwaarden eerst — anders kan een bredere conditie te vroeg waar zijn.
De switch-constructie¶
Wanneer je één waarde vergelijkt met veel vaste opties, is switch overzichtelijker dan veel if-statements.
Voorbeeld: switch met pijltoetsen
Gebruik altijd break om te voorkomen dat het programma “doorschiet” naar de volgende case.
Logische operatoren¶
Operatoren die condities combineren:
| Symbool | Betekenis | Voorbeeld | Betekenis | ||||
|---|---|---|---|---|---|---|---|
&& |
EN | x > 0 && x < 100 |
waar als beide waar zijn | ||||
| | |
OF | key === 'a' | | key === 'b' |
waar als één waar is | ||||
! |
NIET | !gameOver |
keert de waarheid om |
Voorbeeld in p5.js:
Voorbeeld: logische EN voor muis binnen canvas
Short-circuit evaluatie¶
In JavaScript worden logische operatoren kortgesloten geëvalueerd:
Voorbeeld: short-circuit om deling door nul te voorkomen
Het tweede deel van de conditie wordt alleen geëvalueerd als het nodig is. Dit voorkomt fouten zoals deling door nul.
De conditionele (ternary) operator¶
Een compacte vorm van if-else:
Voorbeeld: ternary operator voor kleurkeuze
Lees: “Als de muis rechts is, gebruik rood, anders blauw.”
Gebruik deze vorm alleen bij eenvoudige keuzes, niet bij complexe logica.
Nested branching en leesbaarheid¶
Je kunt if-statements nesten, maar te veel nesting maakt code moeilijk leesbaar:
Voorbeeld: geneste if-structuur
Beter met guard clauses (vroege exit):
Voorbeeld: guard clauses als alternatief voor nesting
Branching in animaties (p5.js)¶
In p5.js gebeurt branching vaak binnen de draw()-loop:
Voorbeeld: branching binnen p5.js draw()
Hier bepaalt de toestand van de muis welk object wordt getekend.
Veelvoorkomende fouten¶
=gebruiken in plaats van===(toewijzing i.p.v. vergelijking)- Condities vergeten tussen haakjes
elseniet uitlijnen met bijbehorendeif- Onvolledige logische expressies zonder haakjes
Voorbeeld van fout:
Voorbeeld: fout door toewijzing i.p.v. vergelijking
Correct:
Welke branching-constructie gebruik ik?¶
| Constructie | Gebruik |
|---|---|
if |
Eenvoudige condities |
else if |
Meerdere mogelijke condities |
else |
Alle andere condities |
switch |
Meerdere vaste opties |
ternary operator |
Korte, inline beslissingen. Als de branching leidt tot het toekennen van een waarde aan een variabele. |
Best practices¶
- Gebruik duidelijke, betekenisvolle condities:
if (isVisible)in plaats vanif (v). - Voeg
defaulttoe aan elkeswitch. - Gebruik
early returnom nesting te beperken. - Test randgevallen expliciet (
x === 0,x === width). - Gebruik logische operatoren om expressies te combineren in plaats van geneste
ifs.
Begrippenlijst¶
- Branching – het splitsen van de uitvoer van code op basis van condities
- Condition / conditie – logische test die true of false oplevert
- Boolean – waarde die
trueoffalsekan zijn - if-statement – basisvorm van branching
- else / else if – alternatieve paden bij branching
- switch – constructie voor meerdere vaste opties
- case – onderdeel van een switch dat een specifieke waarde behandelt
- default – vangt alle niet-overeenkomende waarden
- Ternary operator – compacte vorm van if-else:
cond ? a : b - Logical operators –
&&,||,! - Short-circuit evaluation – JavaScript evalueert alleen wat nodig is
- Guard clause – vroegtijdige return om complexiteit te verminderen
- Truthy / falsy – waarden die in condities als waar of onwaar tellen
- Nested branching – een if binnen een if
- Control flow – de volgorde waarin code wordt uitgevoerd