# Iets zoeken in een lijst [Programmeergidsen](LEESMIJ.md) **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 ```pliro # 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"`? ```text 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. ## Verder leren [Lijsten](../syntaxis/lijst.md) · [Toestand](toestand.md) · [Sorteren](lijsten-sorteren.md)