Lussen in BASIC

Home / Programmeren / Basic / Lussen

Je hebt in de vorige tutorial kennis gemaakt met booleaanse expressies in voorwaardes. Je kunt booleaanse wiskunde echter ook voor een ander handig systeem gebruiken: de lus. Lussen herhalen zichzelf totdat een bepaalde booleaanse expressie onwaar wordt. Je zult snel genoeg merken dat lussen bijna net zo belangrijk zijn als voorwaardes.

Soorten lussen

Er zijn in BASIC 5 verschillende soorten lussen. Elk van die lussen kun je op een andere manier gebruiken. We gaan ze hieronder alle 5 bespreken.

De FOR-lus

De FOR-lus is het best te gebruiken als je iets een vast aantal keer wilt herhalen, bijvoorbeeld 20x. Kijk goed naar het onderstaande programma. Dit programma zet 20x Ik zal nooit meer spieken op het scherm.

CLS
PRINT "Dit Programma schrijft 20 strafregels"

FOR teller% = 1 TO 20
PRINT "Ik zal nooit meer spieken"
NEXT

END

  1. Als eerste maakt CLS het scherm leeg
  2. Daarna zet PRINT een regel op het scherm die uitlegt wat het programma doet
  3. Dan begint de lus. Allereerst geeft FOR aan dat het om een FOR-lus gaat. De variabele teller% is de tel-variabele. In teller% is opgeslagen hoevaak de lus zich al herhaalt heeft. 1 TO 20 geeft aan dat de teller% begint met 1, en daarna doorgaat totdat de teller% 20 is. De lus heeft zich dan 20x herhaalt.
  4. Daarna wordt met PRINT een regel op het scherm gezet. Doordat PRINT in een lus staat wordt PRINT 20x uitgevoerd.
  5. NEXT geeft het eind van de FOR-lus aan, waarna deze opnieuw kan beginnen of kan stoppen, afhankelijk van hoever hij al is.
  6. END beeindigd het programma

Als je dit programma uitvoert krijg je dit op je scherm:

Dit Programma schrijft 20 strafregels
Ik zal nooit meer spieken
Ik zal nooit meer spieken
Ik zal nooit meer spieken
Ik zal nooit meer spieken
Ik zal nooit meer spieken
Ik zal nooit meer spieken
Ik zal nooit meer spieken
Ik zal nooit meer spieken
Ik zal nooit meer spieken
Ik zal nooit meer spieken
Ik zal nooit meer spieken
Ik zal nooit meer spieken
Ik zal nooit meer spieken
Ik zal nooit meer spieken
Ik zal nooit meer spieken
Ik zal nooit meer spieken
Ik zal nooit meer spieken
Ik zal nooit meer spieken
Ik zal nooit meer spieken
Ik zal nooit meer spieken

De DO-WHILE-LOOP-lus

Deze lus heeft, in tegenstelling tot de FOR-lus, een variabel aantal herhalingen. Het aantal herhalingen hangt af van een variabele. We kunnen het bovenstaande strafregelprogramma heel eenvoudig ombouwen tot een programma waarin de gebruiker op moet geven hoeveel strafregels hij/zij wil. Bekijk het onderstaande voorbeeld:

CLS
INPUT "Hoeveel strafregels wil je hebben?", aantal%

teller%=1
DO WHILE (teller% <= aantal%)
PRINT "Ik zal nooit meer spieken"
teller% = teller% + 1
LOOP

END

  1. CLS maakt her scherm leeg
  2. teller%=1 maakt de variabele teller% aan en stopt er het getal 1 in
  3. DO WHILE start een DO-WHILE-LOOP-lus. De lus wordt alleen uitgevoerd als de voorwaarde (teller% <= aantal%) waar is.
  4. PRINT zet een regel tekst op het scherm
  5. teller% = teller% + 1 zorgt ervoor dat de teller-variabele eentje groter wordt. Vergeet dit niet, want anders loopt het programma vast doordat hij zich blijft herhalen.
  6. LOOP geeft aan dat die het einde van de lus is, en dat die afhankelijk van de voorwaarde opnieuw wordt uitgevoerd.
  7. END beeindigd het programma

Ik hoop dat het duidelijk is waarom lussen zo belangrijk zijn. Behalve strafregels schrijven kun je er namelijk ook een hoop andere interessante dingen mee doen.

De DO-LOOP-WHILE-lus

Hoewel deze lus veel lijkt op de vorige is er een belangrijk verschil. De voorwaarde wordt niet vooraf gecontroleerd, maar pas na het uitvoeren van de lus. Dat zorgt ervoor dat de lus in ieder geval 1x wordt uitgevoerd, in tegenstelling tot de DO-WHILE-LOOP-lus, die minimaal 0x wordt uitgevoerd. Voorbeeld:

CLS

DO
PRINT "Ik zal nooit meer spieken"
INPUT "Zal ik nog een strafregel laten zien? (J = Ja, N = Nee)", antwoord$
LOOP WHILE (antwoord$="J")

END

  1. CLS maakt het scherm leeg
  2. DO geeft aan dat hier een lus begint
  3. PRINT laat een strafregel zien
  4. INPUT vraagt of het programma nog een strafregel moet laten zien
  5. LOOP WHILE geeft aan dat de lus herhaalt gaat worden, maar alleen als antwoord$ gelijk is aan J
  6. END beeindigd het programma

De DO-UNTIL-LOOP-lus en de DO-LOOP-UNTIL-lus

Als volleerd programmeur vind ik deze 2 lussen zeer onhandig en, om eerlijk te zijn, vrij dom. Het verschil tussen de DO-UNTIL-LOOP-lus en zijn DO-WHILE-LOOP-tegenhanger is namelijk dat bij DO-WHILE-LOOP de lus net zolang doorgaat als de voorwaarde waar is, en de DO-UNTIL-LOOP-lus gaat net zolang door als de voorwaarde onwaar is. Voor zover ik weet bestaat er niet zo'n soortegelijke tegenstelling in de grote programmeertalen, deze hanteren allemaal maar 1 "type".

Echter, alles wat je met DO-WHILE-LOOP kunt kun je ook heel eenvoudig met DO-UNTIL-LOOP door eenvoudig weg het teken in de voorwaarde "om te draaien" of gebruik te maken van NOT. Het is echter wel belangrijk te weten dat er een verschil is tussen WHILE en UNTIL, omdat je ze tegen kunt komen in programma's van anderen.

Even voor de duidelijkheid: DO-UNTIL-LOOP is dus de tegenhanger van DO-WHILE-LOOP en DO-LOOP-UNTIL is de tegenhanger van DO-LOOP-WHILE.

Dit was de laatste BASIC beginnerstutorial

Dit was de 'lussen in BASIC' tutorial. Ik hoop dat je er iets van hebt opgestoken, dit was de laatste BASIC beginnerstutorial. Als je alles hiervoor snapt kun je jezelf eindelijk programmeur noemen: je begrijpt de basisbeginselen van het programmeren en je kunt er in ieder geval in 1 taal een programma mee maken.