Programmeren in Python/Lussen: verschil tussen versies

Verwijderde inhoud Toegevoegde inhoud
Geen bewerkingssamenvatting
Label: Ongedaan gemaakt
DimiC88 (overleg | bijdragen)
k Versie 348518 van 62.131.82.79 (overleg) ongedaan gemaakt. Teveel incorrecte informatie toegevoegd(zoals "geïndentificeerde setje statements").
Label: Ongedaan maken
Regel 1:
== While lus==
 
De eerste lus controle structuur is het <code>while</code> statement. Normaal gezien begint de Phyton interpreter bij het eerste statement en neemt dan het volgende. Controlestructuren veranderen de volgorde waarin statements uitgevoerd worden of beslissen überhaupt of het al dan niet uitgevoerd moet worden. Het volgende programma maakt gebruikt van het <code>while</code> statement:
{{Code|
| Taal=Python
Regel 15:
}}
 
De uitvoer bestaat uit de getallen van 1 tot en met 10, gevolgd door de ''Lus beëindigd.''. Dit programma werkt als volgt: de interpreter initialiseert de waarde <code>a</code> op nul en ziet vervolgens <code>while a < 10:</code>; de interpreter interpreteert deze Booleaanse uitdrukking en komt tot de conclusie dat deze equivalent is aan <code>True</code>. Als gevolg hiervan zal de interpreter het geïndentificeerdegeïndenteerde setje statementsblok uitvoeren waarin de variabele <code>a</code> aangepast (opgehoogd) wordt en afgedrukt wordt. Na het uitvoeren van dezedit blok code springt de interpreter terug naar het while-statement en deze sequentie zal zich herhalen zolang de Booleaanse expressie geldig is. Wanneer deze expressie een logische <code>False</code> oplevert, zal de interpreter verder gaan met de code '''na''' het geïndentificeerde setjegeïndenteerde statementsblok, in dit geval de print van de string ''Lus beëindigd.''.
Hieruit volgt dus dat het van belang is om ervoor te zorgen dat de lusvoorwaarde in de lus zelf aangepast wordt, anders wordt een oneindige lus gemaakt, wat normaliter niet de bedoeling is. Een oneindige lus kan er bijvoorbeeld als volgt uitzien:
 
Regel 47:
}}
 
De uitvoer is volkomen identiek aan het while-voorbeeld: de getallen van 1 t/mtem 10 word3n geprint, gevolgd door de string ''Lus beëindigd.''. De code ziet er echter verschillend uit. De eerste regel maakt gebruik van de <code>range(start,einde)</code> functie. Dit genereert een array van getallen:
<syntaxhighlight lang="Python">
>>> print(*range(1,11))
1 2 3 4 5 6 7 8 9 10
</syntaxhighlight>
De startwaarde is inclusief, de eindwaarde exclusief. Maar nu terug naar de lus, de eerste regel maakt gebruik van het <code>for</code> statement. Dit ziet er in het gebruik als volgt uit <code>for variabele in lijst:</code>. In dit geval zal het geïndentificeerdegeïndenteerde setje statementsblok opgeroepen worden voor elk element in de lijst, maar zal <code>variabele</code> gelijk gemaaktgelijkgesteld worden aan het huidige element in de lijst (dus de eerste keer zal variabele het eerste element uit de lijst bevatten, de tweede keer het tweede element en zo verder). Dit is een extra voorbeeld van hetzelfde principe, alleen wordt de lijst hier expliciet aangemaakt:
{{Code|
| Taal=Python
Regel 75:
</pre>
 
Het spreekt voor zich dat het net als bij <code>if</code> statements mogelijk is om <code>while</code> en <code>for</code> lussen te nesten, zowel onderling als met elkaar. In principe kan alles wat met een <code>for</code> lus gebeurt, ook met een <code>while</code> lus geschreven worden. In de praktijk is het verschil echter een nuance. Merk opBemerk dat bij de <code>while</code> lus de lusvoorwaarde binnen de lus aangepast werd. Bij de <code>for</code> lus daarentegen werd vooraf, zelfs buiten de lus, bepaald over welke waarden men in de lus ging itereren. Dus indien men vooraf weet over welke waarden men gaat itereren, gebruikt men typisch een <code>for</code> lus (bijvoorbeeld '' voor elk element in lijst ''). Wanneer men binnen de lus dient te bepalen of de lus nog eenmaal uitgevoerd dient te worden, gebruikt men een <code>while</code> lus (bijvoorbeeld, ''zolang de gebruiker niet -1 ingeeft'').
 
==Break==
Soms is het nodig om een lus eerder dan voorzien te onderbreken. Dit kan om verschillende redenen. Misschien is het doel van de lus al bereikt, bijvoorbeeld je zoekt specifieke informatie in een lijst, vindt dezehet en dan is rest van lus niet meer nodig. Of misschien wordt er een lus gebruikt, maar is er op een gegeven moment een fout opgetreden en is het daardoor beter om de lus vroegtijdig te beëindigenstoppen. Bijvoorbeeld, een lus gaat over een lijst van getallen om berekeningen mee uit te voeren en het komt dan in de lijst een string tegen. Met een string kun je geen berekeningen doen, dus wil je de lus laten stoppen (en eventueel een foutmelding geven). Om de lus te stoppen kun je <code>break</code> gebruiken.
 
==Continue==
<code>continue</code> is ook een manier om de werking van een lus te beïnvloeden. In tegenstelling tot <code>break</code> stopt het de lus niet, maar slaat hij code over en stuurt hij de lus naar de volgende stap. Handig om als er een fout is opgetreden toch de lus af te maken.
 
<!-- ----------- Hieronder onderhoudsmeldingen -------------- -->
Informatie afkomstig van https://nl.wikibooks.org Wikibooks NL.
Wikibooks NL is onderdeel van de wikimediafoundation.