Tweede programma


In ons tweede programma zien we meteen een aantal belangrijke zaken die in elke programmeertaal voorkomen. Het programma op zich is eenvoudig genoeg. Het toont u een lijstje met de vierkantswortels van de getallen 0 tot 9.

De vierkantswortels van 0 tot en met 9.

De vierkantswortels van 0 tot en met 9.

project_1.2, main.cpp

project_1.2, main.cpp

We zullen het programma even analyseren.

De lijnen 1 t.e.m. 3 bevatten includes. De instructie include laat de computer stukken code die voorgeprogrammeerd zijn inladen. In dit geval is het code die bijgeleverd is, maar het kan net zo goed uw eigen code zijn. Lijn 1 laadt de bibliotheek iostream in, nodig voor input en output. Lijn 2 zorgt er voor dat de bibliotheek cmath ingeladen wordt. Op die manier kunt u gebruik maken van bepaalde (voorgeprogrammeerde) mathematische functies, zoals de vierkantswortel, sinus, cosinus, … in uw programma. Lijn 3 laadt de standard library. Dit is enkel nodig als u linux gebruikt, onder windows hoeft u die niet expliciet te laden.

Lijn 5 maakt ons het leven wat makkelijker, we geven aan dat de functies die we gebruiken meestal uit de standard library komen. Moesten we deze lijn niet hebben (zet ze eens in commentaar (met //) om het te proberen), zouden we steeds std::cin en std::cout moeten schrijven in plaats van gewoon cin en cout. Idem voor alle andere functies die uit de standard library komen (zoals bijvoorbeeld endl). Als u “std::” typt, dan zult u ook zien dat uw IDE (ofwel Microsoft Visual C++ ofwel NetBeans) u helpt, u krijgt namelijk een lijstje te zien met alle mogelijke functies die na std:: kunnen komen. Handig!

Lijn 7 is het begin van het eigenlijke programma, de functie main. Zoals al eerder aangegeven, moet ieder C++ programma een functie main hebben. Alles wat tussen de eerste { en de laatste } staat maakt deel uit van main. Wat tussen dergelijke haakjes staat is een blok code.

Op lijn 9 definiëren we de variabele x. Deze x is van het type integer. Men kan een variabele het best vergelijken met een doos waar men iets kan instoppen. De C++ dozen zijn speciaal in die zin dat ze maar dingen van een welbepaalde soort kunnen bevatten. In dit geval kan in onze doos een geheel getal zitten. Vandaar het type integer. We initialiseren x meteen op de waarde 0 (we steken dus een nul in de doos). We konden evengoed int x; x=0; geschreven hebben, definitie en initialisatie apart dus.

Het leeuwedeel van ons programma zit in de regels 11 tot 17. We zien weer een blok code (tussen { en }), en de woorden “do” en “while”. Dit staat dan ook bekend als een do-while blok. Zo’n blok zorgt voor herhaling, en dat is één van de fundamentele zaken in iedere programmeertaal.

Op lijn 13 definiëren we een ander soort variabele, de variabele y, van het type double. Variabelen van het type double kunnen decimale getallen bevatten. We kennen er ook meteen een waarde aan toe, namelijk de vierkantswortel van het getal dat zich momenteel in x bevindt (dat was dus 0). Dat doen we met de functie sqrt (uit de library cmath). Omdat sqrt enkel met een double type getal kan werken, en x een integer type is, moeten we x eerst omvormen naar double. Dat omvormen heet casten, en we doen dat door gewoon het type voor x te zetten (dus (double)x zorgt ervoor dat de functie sqrt een decimaal getal (een double) ziet). Meer over casten later.

Ik geef even mee dat de variabele y enkel bestaat voor de computer binnen het blok waar hij gedefinieerd is. Dus zolang de computer in het do-while blok bezig is, kent hij de variabele y. Buiten dat blok wordt deze variabele weer gewist. Men spreekt over de scope van een variabele. Dit is een belangrijk begrip, dat later nog aan bod komt.

De volgende lijn zorgt voor uitvoer naar het beeldscherm.

Lijn 15 is iets speciaals. We schrijven: x++. Wat dit doet is 1 bijtellen bij de waarde die in x zit. Dat was 0, het wordt dus 1. Dit is een verkorte versie van x = x + 1. Dit laatste doet net hetzelfde, men zou het kunnen lezen als: neem wat in doos x zit, doe er 1 bij, en steek het resultaat terug in doos x. Omdat het in programmeren behoorlijk vaak voorkomt dat je ergens eentje moet bijtellen, is daar een verkorte versie voor, namelijk x++. Nu mag u even raden wat x– doet (x gevolgd door 2 mintekens dus). 🙂

Lijn 17 is waar de controle gebeurd. Er staat: while (x<10). In woorden: zolang x kleiner is dan 10. Zolang x kleiner is dan 10, moet het blok code tussen do en while uitgevoerd worden. Dus krijgen we in y nu de vierkantswortel van 1 (x is nu 1), dat wordt afgedrukt, en dan tellen we 1 bij x, waardoor x=2 wordt. Enzoverder. Tot x=10 geworden is. Bij de controle x<10 merkt de computer dat x niet kleiner is dan 10, maar gelijk aan 10. Dat wil dus zeggen dat we moeten stoppen met de do-while lus, en verder moeten gaan met de eerstvolgende instructie.

De volgende lijn is 19, die de boodschap “Druk ENTER om te sluiten…” op het scherm schrijft. Lijn 20 wacht op een invoer, zodat het scherm niet meteen verdwijnt nadat een lijstje vierkantswortels afgedrukt werd (deze twee lijnen zijn overbodig in linux).

Op lijn 22 zien we return EXIT_SUCCES. EXIT_SUCCES is een zogenaamde cosntante (en die is hier 0, dus dit is gewoon hetzelfde als zouden wel return 0 geschreven hebben). Wat die constante is wordt gedefinieerd in de standard library, vandaar dat we ze moeten includen (lijn 3) in linux. Wat het return statement precies doet wordt binnenkort wel duidelijker.

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.2”.
  • Typ het programma over en compileer.
  • Wijzig het programma zo dat het de vierkantswortels van de getallen 2, 4, 6, 8 en 10 afdrukt, zoals in de figuur hieronder.
  • Probeer of u de getallen in omgekeerde volgorde kunt laten afdrukken (dus beginnen met 10, dan 8, … ), zoals in de laatste figuur. U moet dus x laten aftellen in plaats van optellen, en stoppen als x kleiner wordt dan 0 (of doordoen zolang x groter of gelijk is aan 0, groter of gelijk kan men schrijven als >=) .
Vierkantswortels van even getallen van 0 tot 10.

Vierkantswortels van even getallen van 0 tot 10.

Vierkantswortels van even getallen van 10 tot 0.

Vierkantswortels van even getallen van 10 tot 0.

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