Ga naar hoofdinhoud

Stellingen — toets je begrip

Leerdoel: je toetst of je het idee van meerdere accumulators in één pass snapt.

Stelling 1

"Eerst het maximum vinden en daarna het minimum is sneller dan beide tegelijk."

Antwoord

Onjuist. Twee aparte passes lezen elk element twee keer — dat is meer werk. Eén pass leest elk element één keer, met twee vergelijkingen per element. In totaal minder werk.

(Je doet wel ongeveer hetzelfde aantal vergelijkingen2n in beide gevallen. Het winstpunt zit in de leestijd — bij grote data scheelt dat.)

Stelling 2

"Voor het max-én-min-algoritme heb je twee aparte for-lussen nodig."

Antwoord

Onjuist. Dat is juist het hele punt: één for-lus, twee accumulators. Twee lussen → twee passes → terug bij aanpak A.

Stelling 3

"Beide accumulators moeten dezelfde startwaarde hebben."

Antwoord

Juist. Allebei beginnen op lijst[0]. Hierdoor weten we zeker dat beide startwaardes echt voorkomen in de lijst — geen negatieve-getal-bug.

Bij klein = lijst[0] en groot = lijst[0] zijn de eerste paar vergelijkingen meteen geldig.

Stelling 4

"Bij een lijst van één element zijn klein en groot gelijk."

Antwoord

Juist. Beide beginnen op lijst[0]. De for-lus doet één iteratie en vergelijkt lijst[0] met zichzelf — niet groter, niet kleiner → geen update. Resultaat: klein == groot == lijst[0].

Stelling 5

"Als je if … elif … gebruikt in plaats van twee aparte if's, kun je soms een waarde missen die kleiner én groter is."

Antwoord

Onjuist. Eén getal kan niet tegelijk groter zijn dan de huidige groot én kleiner dan de huidige klein. Want: groot >= klein (na initialisatie), dus als x > groot dan zeker x > klein (en dus niet x < klein). De elif is dus veilig.

Het scheelt zelfs een vergelijking per element: na een geslaagde update-groot slaan we de check-klein over.

Stelling 6

"Tuples zoals (klein, groot) kun je niet uit een functie returnen."

Antwoord

Onjuist. Python ondersteunt meerdere return-waarden als tuple:

return klein, groot # of: return (klein, groot)

Aan de andere kant uitpakken:

k, g = max_en_min(lijst)

Door naar stap 3: we bouwen het op →