Meer lussen…


Ons derde programma introduceert nog een ander soort lus, de while lus. We bekijken het verschil met de do-while lus.

Hieronder ziet u wat het programma doet.

De uitvoer van ons programma.

De uitvoer van ons programma.

En dit is de programmacode:

De code (main) van project_1.3.

De code (main) van project_1.3.

We zullen het programma even analyseren.

Beginnen we met lijn 8, waar we de variabele y van het type double aanmaken. Merk op dat we er nog geen waarde aangeven. Toch zit er in die variabele wel een waarde. Zo’n variabele is immers gewoon een plaatsje in het computergeheugen, en de waarde die er bij de creatie inzit is wat daar op dat moment toevallig in staat. Vandaar dat je een variabele best meteen ook initialiseert (een waarde geeft dus), zelfs al is dat gewoon nul. Als je dat vergeet, kan je programma foutieve zaken doen omdat de computer werkt met die willekeurige waarde die in eerste instantie in de variabele zit. De IDE van microsoft weet dit en geeft u zelfs een waarschuwing als u wil compileren.

Waarschuwing: variabele y werd niet geïnitialiseerd!

Waarschuwing: variabele y werd niet geïnitialiseerd!

U kunt hier gewoon doorgaan, we weten wat we doen, nietwaar? Op lijn 10 wordt de waarde van y afgedrukt. Dit kan eender welke waarde zijn, wat er toevallig op die plaats in het geheugen zit.

Op lijn 16 begint het do-while blok. We hebben daarvoor x de waarde 10 gegeven, maar toch gaat de computer het do-while blok uitvoeren, al is x niet kleiner dan 10. Dat komt omdat bij het do-while blok de controle pas op het einde plaatsvindt. Lijn 18 en 19 worden dus vrolijk uitgevoerd, maar slechts 1 maal. Bij controle op lijn 21 blijkt x niet kleiner te zijn dan 10, en wordt het do-while blok niet meer herhaald, er wordt overgegaan naar de volgende lijn code.

De volgende lijn drukt de waarde van x af. Die is intussen 11, als gevolg van lijn 19.

Lijn 25 bevat de start van het while blok. Hier wordt de controle eerst gedaan, en pas daarna kan het blok doorlopen worden, als aan de voorwaarden voldaan is. Hier si dat echter niet het geval, aangezien x (=11) niet kleiner is dan 10. De lijnen 27 en 28 van het while blok zullen dus niet uitgevoerd worden door de computer. Dit blijkt als men de waarde van x nogmaals afdrukt (lijn 31), die is nog steeds gelijk aan 11, ondanks het x++ statement op lijn 28.

Tips

  • Typ het programma over. Dit helpt om de commando’s te leren, en je zult ze dan ook sneller onthouden.
  • Als het programma niet wil compileren, kijk na of je alles precies hebt overgetypt, en kijk vooral na of je nergens een puntkomma vergeten bent.
  • Maak u vooral geen zorgen als u niet alles direct begrijpt, dat komt wel. Als het echt niet gaat, schrijf u in op het forum en stel uw vraag daar.

U kunt de code hier downloaden, deze is voorzien van extra commentaar.

Vragen kunnen gesteld worden op het forum – op het C++ board.

Opdracht

  • Maak een nieuw project aan, met daarin een file “main”. Noem het “project_1.3”.
  • Typ het programma over en compileer.
  • Probeer het vorige projekt (1.2) te herschrijven, maar gebruik nu while lussen in plaats van do-while lussen.
Advertisements

About justtheengineer

Ingenious engineer, slightly dotty...
This entry was posted in Cursus and tagged , , , . Bookmark the permalink.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s