Iets zoeken in een lijst
Zoeken betekent dat je een onderdeel probeert te vinden dat bij je vraag past. Je kunt in een spelerslijst naar een naam zoeken of in een rugzaklijst naar een sleutel. Een eenvoudige aanpak controleert elk onderdeel één voor één.
Deze aanpak heet lineair zoeken. De lijst hoeft daarvoor niet gesorteerd te zijn.
Kijk langs een boekenplank
Stel dat de boeken op een plank in willekeurige volgorde staan. Je kunt een titel zoeken door van links naar rechts elk etiket te lezen. Past geen enkele titel? Dan bereik je het einde zonder het boek te vinden.
Een programma moet beide mogelijkheden onthouden: ‘gevonden’ en ‘niet gevonden’. Anders zou het per ongeluk het eerste onderdeel als resultaat kunnen gebruiken terwijl het gezochte onderdeel ontbreekt.
Zoek tussen verzonnen spelersnamen
# taal: nl
laat spelers = ["Pip", "Nova", "Milo"]
laat gezocht = "Nova"
laat gevonden = onwaar
voor speler in spelers:
als speler == gezocht:
zet gevonden = waar
als gevonden:
zeg "Speler gevonden."
anders:
zeg "Speler niet gevonden."
gevonden begint onwaar. Een passende naam verandert de waarde in waar. Het resultaatbericht staat na de lus. Deze versie bekijkt na een treffer ook de overige onderdelen. Dat is eenvoudig en voldoende voor een kleine lijst.
Voorspel en probeer
Welk bericht verschijnt voor "Nova"?
Speler gevonden.
Voorspel nu wat er gebeurt voor "Luna", die niet in de lijst staat. Denk ook aan een lege lijst. Er wordt dan niets vergeleken, dus gevonden houdt zijn beginwaarde onwaar.
Jouw uitdaging
Doorzoek een lijst met rugzakspullen naar "sleutel". Voeg daarna de sleutel twee keer toe. Verandert het resultaat? Ons programma beantwoordt de vraag ‘Is er minstens één?’ Het telt geen treffers en meldt niet op welke plaats ze staan.
Een veelgemaakte fout
Met zet gevonden = onwaar in een anders binnen de lus kun je een eerdere treffer uitwissen wanneer het volgende onderdeel niet past. In dit voorbeeld mag alleen een treffer het vlaggetje veranderen. Tekstvergelijking maakt ook verschil tussen "Nova" en "nova". Dit programma negeert hoofdletters dus niet.
