De While...End While-lus in Visual Basic bestaat sinds de vroege versies van de taal en is bedoeld voor het uitvoeren van herhalende acties zolang de opgegeven logische voorwaarde waar is. Deze constructie werd vaak gebruikt voor het itereren over een onbekend aantal elementen, of tot een bepaald evenement zich voordoet.
De eerste implementaties van While-lussen verschenen al in de basisversies van BASIC, om ontwikkelaars flexibiliteit te geven voor iteratie met een onbekend aantal herhalingen, wat niet altijd mogelijk is met For-constructies.
Het belangrijkste probleem is het maken van fouten bij het formuleren van de uitgangsvoorwaarde van de lus, waardoor de lus te lang of zelfs oneindig kan draaien, of voortijdig kan eindigen. Ook is het belangrijk om variabelen correct te initialiseren en hun veranderingen te controleren.
De While-lus wordt gebruikt wanneer van tevoren niet bekend is hoe vaak een codeblok moet worden uitgevoerd en de uitgangsvoorwaarde kan veranderen tijdens de uitvoering. Correct gebruik omvat het verplicht veranderen van de voorwaarde-variabele binnen het lichaam van de lus, om eindeloze lussen te voorkomen.
Voorbeeldcode:
Dim counter As Integer = 1 While counter <= 5 Console.WriteLine($"Iteratie: {counter}") counter += 1 End While
Belangrijke kenmerken:
Wat gebeurt er als de While-voorwaarde altijd onwaar is bij het ingaan van de lus? Wordt het lichaam van de lus minstens één keer uitgevoerd?
Antwoord: Nee, het lichaam van de lus wordt niet uitgevoerd, als de voorwaarde bij binnenkomst onwaar is. Voor minstens één uitvoering van het blok wordt een andere lus gebruikt — Do...Loop met een postvoorwaarde.
Kan men de voorwaarde-variabelen binnen het lichaam van de While-lus wijzigen, en wat gebeurt er als dit niet gebeurt?
Antwoord: Het is absoluut noodzakelijk om de voorwaarde-variabelen te wijzigen, anders ontstaat er een oneindige lus, wat de werking van de applicatie vertraagt.
Voorbeeld van een oneindige lus:
Dim i As Integer = 1 While i < 5 Console.WriteLine(i) ' Hier verandert i niet! End While ' Oneindige lus
Hoe verschilt de While...End While-lus van Do While...Loop?
Antwoord: Beide constructies zijn vergelijkbaar, maar in While...End While staat de voorwaarde alleen aan het begin, terwijl Do...Loop het zowel aan het begin als aan het einde toestaat (Do While/Do Until, Loop While/Loop Until), wat de flexibiliteit vergroot.
Een ontwikkelaar leest getallen uit een array met behulp van While...End While, maar verhoogt de iteratie-teller niet binnen het lichaam. De applicatie bevriest.
Voordelen:
Nadelen:
Een ontwikkelaar gebruikt While...End While voor veilige gegevenslezing uit een bestand tot het einde, terwijl de regel teller correct wordt verhoogd.
Voordelen:
Nadelen: