De basisopbouw en een eerste opdracht
Arnout van Kempen schrijft in deze rubriek over pret maken met computers. Hij gooit het na een reeks over Pascal over een andere boeg en gaat aan de slag met C.
We hadden deze code:
#include <stdio.h>
int main() {
printf(“Hallo wereld\n”);
return 0;
}
Wat is nu het programma zelf? Ieder C programma is een functie, een beetje zoals je dat uit wiskunde kent, met wat bijzonderheden. De hoofdfunctie van je programma is de functie
main()
In je programma ga je commando's gebruiken om de computer iets te laten doen en veel van die commando’s zijn zelf ook weer functies. Sterker, als het complexer wordt gaan we zelf functies schrijven. Maar dat komt nog wel, eerst die main(). Laat ik het vergelijken met een functie zoals je dat van de middelbare school nog wel kent:
f(x)=x^2
Bij wiskunde ben je waarschijnlijk niet gewend er bij te vertellen of de parameter van je functie, x hier, tot de getallenverzameling N, Z, R of C behoort. In de praktijk ga je er op de middelbare school meestal van uit dat het R zal zijn, de verzameling van reële getallen. Maar bij computers moet je met een paar dingen rekening houden.
Ten eerste, niets spreekt vanzelf, niets wordt verondersteld, tenzij vergissen niet mogelijk is. Je zal in ons geval aan de computer moeten vertellen welk type uitkomst de functie gaat geven. Dat doe je in dit geval met
int
Int staat voor integer en dat betekent in ons geval dat de functie main() een uitkomst zal geven van het type integer. Integers zijn gehele getallen, positief of negatief. Hoe groot ze kunnen worden hangt van je computer en je compiler af, maar daar lopen we voorlopig niet tegenaan.
Een tweede zaak om rekening mee te houden is dat computers feitelijk bestaan uit een bak met heel erg veel transistors. Met die transistors is het mogelijk getallen op te slaan en te bewerken, die precies twee mogelijke waarden hebben: 0 en 1. Dat noemen we een bit. Om serieuze getallen te maken, voeg je bits samen tot bijvoorbeeld een byte, 8 bits. Daarmee kan je getallen maken van 0 tot 255 of van -128 tot 127. Wil je met geldbedragen gaan rekenen, dan is er nog weinig aan de hand, want gehele getallen en getallen met exact twee cijfers achter de komma gedragen zich precies hetzelfde. Je voegt alleen die komma in. Maar wat als je een breuk als 1/3 wil weergeven in cijfers die uit bits bestaan? Dat kan een computer feitelijk niet echt. Daarom is de zogeheten floating point bedacht, een "komma getal" dat uit een vast aantal gehele getallen bestaat en niet helemaal nauwkeurig is.
Om de computer goed te laten rekenen zal je steeds moeten bedenken welk type je gebruikt. Int is veel gebruikt, maar bij wiskundig rekenwerk zie je bijvoorbeeld de float, voor floating point.
Een volgend vreemd verschijnsel is dat in C een functie kan bestaan zonder parameter.
int main()
is voor C geen probleem. Deze functie heeft geen parameters. Het lijkt er op dat je als middelbare school-functie zoiets schrijft als
f()=x^2
Maar nee, je kan niet zonder parameter x toch x kwadrateren. Wat wordt het dan?
f()=^2
Ook niet. Wat kwadrateer je hier?
In C moet je ook wel een uitkomst hebben, want we hebben immers gezegd dat die uitkomst van het type int zou zijn. Hoe dan? In C geef je de uitkomst van de functie weer met return. De regel
return 0;
zorgt daarvoor. Je kan dus zeggen dat de functie die we hier hebben beschreven wiskundig geschreven zou kunnen worden als
f()=0
Vrij nutteloos? Ja, maar nu komt het aardige van een functie in C. Die kan heel veel meer doen dan alleen een uitkomst geven. Sterker, vaak draait het juist om dat extra. Alles wat een functie doet staat tussen { en } en dat hoeft niets te maken te hebben met de return-waarde van de functie. In ons geval draait het om de
printf(“Hallo wereld\n”);
Dit commando zet een rij letters, characters, samen ook wel een string genoemd, op het scherm. En dat is precies wat we wilden bereiken.
Probeer eens uit wat er gebeurt als je de \n weg laat. Met \ geef je aan printf() aan dat er een speciaal teken gaat volgen, naast \n zijn er meer combinaties mogelijk. Zoek ze eens uit.
En hier ga je AI bij nodig hebben, maar laat je het antwoord niet al te letterlijk voorzeggen! Kan je een programma maken dat op het scherm zet: 1+1=2? Maar let op, de 2 mag jij niet in het programma zetten, je moet het programma laten uitrekenen hoeveel 1+1 is! Hint, je gaat hier een placeholder, of officiëler een format specifier, nodig hebben.
Succes!
Gerelateerd
Wat hebben we gedaan, wat gaan we doen?
Arnout van Kempen schrijft in deze rubriek over pret maken met computers. Hij gooit het na een reeks over Pascal over een andere boeg en gaat aan de slag met C.
De computer klaar maken
Arnout van Kempen schrijft in deze rubriek over pret maken met computers. Hij gooit het na een reeks over Pascal over een andere boeg en gaat aan de slag met C.
We gaan iets echt nuttigs doen
Arnout van Kempen schrijft in deze rubriek over pret maken met computers. Hij gooit het na een reeks over Pascal nu over een andere boeg.
Weet wat je hebt
Arnout van Kempen schrijft in deze rubriek over pret maken met computers. Hij gaat aan de slag met Pascal.
Dialogen bouwen
Arnout van Kempen schrijft in deze rubriek over pret maken met computers. Hij gaat aan de slag met Pascal.
