"Daar ben ik weer. Ik was nog vergeten iets uit te leggen. Ik wil je wat vertellen over variabelen en geheugenadressering. We gaan er niet heel erg diep op in, maar het is goed als je probeert er tenminste iets van te onthouden."

"Ik vind dat jullie de lessen heel fijn benaderen! Als ik iets begrijp, is dat geweldig. En als ik er niks van snap, is dat ook okee."

"Liefde voor het vak kun je niet afdwingen. Dat is toch logisch? Is dat niet zo op jullie planeet?"

"Nee. Hier doen we het anders. Als je wilt, dan studeer je. Als je niet wilt, dan studeer je ook, maar dan met tegenzin."

"Wat een ouderwetse aanpak van onderwijs! Zo verspil je een hoop tijd en energie en het resultaat is ook al niet best."

"We verspillen inderdaad heel veel tijd. Maar laten we het niet over dat soort pijnlijke dingen hebben."

"OK. Denk eens aan Excel. Iedereen kent Excel. Een spreadsheet in Excel bestaat uit cellen. Elke cel heeft zijn eigen plaatsaanduiding: (A1, A2, …, B1, B2). Die plaatsaanduidingen zou je ook 'adressen' kunnen noemen. Als je het adres van een cel kent, kun je een bepaalde waarde naar die cel schrijven of opvragen welke waarde er in die cel is opgeslagen. Computergeheugen is eigenlijk op dezelfde manier georganiseerd."

Geheugenadressering en variabelen - 1

"Ik volg je nog."

"Wanneer een programma wordt uitgevoerd, staan het programma en de programmadata in het geheugen van de computer. Het hele computergeheugen is onderverdeeld in kleine cellen, die we bytes noemen. Elke cel heeft zijn eigen nummer: 0,1,2,3,… (ook hier beginnen we bij 0 te tellen). Als je het nummer van een geheugencel weet, kun je er data in opslaan. Of opvragen welke waarde er nu in zit. Sommige geheugencellen bevatten de code van het programma, dus de instructies die door de computerprocessor moeten worden uitgevoerd. Andere geheugencellen bevatten de data die door het programma worden gebruikt. Het nummer van een geheugencel noemen we het adres."

"Professor Uilemans heeft me al iets verteld over de processor en over machinecode, maar niet in detail."

"De processor weet wat hij moet doen met de instructies die in het geheugen zijn geladen. Bijna alle processorinstructies gaan erover dat data uit bepaalde cellen worden gebruikt om er een berekening of een andere bewerking op uit te voeren, waarna het resultaat wordt geschreven naar andere cellen. We gebruiken combinaties van honderden van die simpele instructies om complexe en zinvolle routines te maken."

"Maar waar heb ik dit allemaal voor nodig?"

"Wanneer je een variabele declareert, wordt voor die variabele een stukje geheugen gereserveerd dat nog vrij is. Meestal gaat het dan om een paar bytes. Bij het declareren van een variabele moet je aangeven wat voor soort data je in die variabele wilt opslaan: getallen, tekst of iets anders. Je moet dus het datatype van de variabele specificeren. Voor het gemak wijs je bovendien aan elke variabele een unieke naam toe."

"Betekent dit nou dat een variabele een naam is, en een type, een stukje geheugen, en ook nog een waarde?"

"Precies. Een variabele is al die dingen tegelijk. Ik zal je wat voorbeelden geven:

Code Uitleg
1
String s;
Deze regel maakt een variabele met de naam s. We declareren het type van de variabele als String. Dit betekent dat we tekst in de variabele kunnen opslaan.
We mogen geen andere variabele met precies dezelfde naam declareren in dezelfde functie of dezelfde klasse.
2
String s2 = "I'm Diego";
Deze regel declareert een String-variabele genaamd s2 en wijst er meteen de waarde "I'm Diego" aan toe.
3
int a;
Hier declareren we een variabele die a heet. Het datatype geeft aan wat voor soort informatie we in de variabele kunnen opslaan. Het datatype int is een afkorting voor integer.
4
int b = 4;
Dit declareert een variabele met de naam b. Het datatype (int) is weer bedoeld voor het opslaan van integers (gehele getallen). We wijzen meteen de waarde 4 aan deze variabele toe.

Hier zijn nog wat taken van Diego. Werk ze maar in je eigen tempo door."