C Programmeren Handleiding Deel 3 – Variabelen basisprincipes

Tot nu toe hebben we de grondbeginselen besproken van wat een C programma is, hoe het te compileren en uit te voeren, en wat preprocessors zijn. Als je deze handleidingen hebt doorgenomen, is het tijd dat we het volgende onderwerp bespreken, namelijk variabelen.

Variabelen zijn een van de kernelementen van C programmeren, omdat ze waarden opslaan die de programmeur naar eigen behoefte kan gebruiken. Laten we hun basis begrijpen aan de hand van een voorbeeld. Hieronder volgt een basis C programma:

#include <stdio.h>

int main (void)
{
int a = 10;
char b = 'z';
float c = 1.5;
printf("\n a=%d, b=%c, c=%f \n", a,b,c);
return 0;
}

In eerdere C programmeer-tutorials hebben we al dingen uitgelegd als wat is ‘stdio.h,’ wat betekent ‘#include’, en wat is een functie (vooral ‘main’). We springen dus direct op het variabelengedeelte.

De regel ‘int a =10’ betekent dat er een variabele met de naam ‘a’ is, die waarden van het type geheel getal (‘int’) kan bevatten, en de huidige waarde die hij bevat is ’10’. Evenzo kan ‘b’ tekens bevatten en ‘c’ drijvende komma getallen, waarvan de huidige waarden respectievelijk ‘z’ en ‘1.5’ zijn.

Het hierboven getoonde voorbeeldprogramma drukt deze waarden af in de uitvoer via de ‘Printf’ functie. Merk op dat %d, %c, en %f gebruikt worden om de ‘printf’ functie te vertellen dat de variabelen ‘a’, ‘b’, ‘c’ behandeld moeten worden als respectievelijk geheel getal, teken, en float.

Bewerkingen op variabelen

Natuurlijk kun je veel meer doen dan alleen deze waarden in uitvoer afdrukken. Bijvoorbeeld, het volgende programma berekent de factorie van het getal 5.

#include <stdio.h>

int main (void)
{
int num = 5;
int result = 1;
while (num > 0)
{
result = result * num;
num = num -1;
}

printf("\n Factorial of 5 is %d\n", result);

return 0;
}

Voor wie het niet weet, de factorial van een getal, zeg ‘n’, is het resultaat van de volgende vermenigvuldiging:

nx(n-1)x(n-2)x.....1

Dus, als het getal 5 is, dan zou factorie van 5 (of, 5!) zijn 5x4x3x2x1, wat gelijk is aan 120.

Terugkomend op het programma, hebben we twee integer variabelen gedefinieerd met de namen ‘num’ en ‘resultaat’. Terwijl num het getal bevat waarvan de factorie berekend moet worden (5 in dit geval), houdt ‘resultaat’ om te beginnen gewoon een dummy waarde van ‘1’ vast. Dan volgt een ‘while’ lus.

Zoals de naam al zegt, worden lussen in C functies gebruikt om een reeks instructies herhaaldelijk uit te voeren. In het geval van ‘while’ begint de lus met het controleren van een voorwaarde (‘num moet groter zijn dan nul’ in dit geval) en dan worden instructies binnen de lus herhaaldelijk uitgevoerd tot de ‘while’ voorwaarde onwaar wordt.

In ons geval is de waarde van ‘num’ aanvankelijk 5. Dus gaat de uitvoering binnen de lus en de eerste waarde van resultaat ‘zou’ ‘5’ zijn (1×5). Daarna wordt ‘num’ ‘num -1’, wat betekent dat de nieuwe waarde van ‘num’ nu 4 is.

De lus voert dan opnieuw uit omdat 4 nog steeds groter is dan nul. Deze keer wordt ‘resultaat’ 5×4, wat 20 is. En ‘num’ wordt dan (4-1), wat 3 is. Op deze manier blijft de lus uitvoeren tot ‘num’ 0 wordt, en tegen die tijd is resultaat ‘120’, wat de factorie van 5 is.

Hier is dus de uitvoer die dit programma produceert:

Factorial of 5 is 120

Wat nu als je, in plaats van een specifieke waarde (zoals ‘5’ in dit geval), de gebruiker van het programma het getal wilt laten specificeren waarvan de factorie berekend moet worden? Wel, dat kan op de volgende manier:

#include <stdio.h>

int main (void)
{
int num = 0, temp=0;
printf("\n Enter a positive integer: ");
scanf("%d", &num);
temp = num;
int result = 1;
while (temp > 0)
{
result = result * temp;
temp = temp -1;
}

printf("\n Factorial of %d is %d\n", num, result);

return 0;
}

Hier hebben we dus een nieuwe functie gebruikt die ‘scanf’ heet, en die precies het tegenovergestelde doet van ‘printf’ – hij aanvaardt invoer van de gebruiker.

Nu is aan elke variabele een bepaalde hoeveelheid geheugen verbonden in termen van bytes. De scanf functie vereist dat je het startadres van het geheugen van een variabele doorgeeft, dat je kunt benaderen door ‘&’ voor de naam van de variabele te plaatsen.

We hebben hier een nieuwe variabele ’temp’ ingevoerd omdat we het eigenlijke getal dat de gebruiker doorgaf (hier opgeslagen in ‘num’) nodig hebben in de laatste ‘printf’ opdracht.

Conclusie

In deze zelfstudie hebben we de grondbeginselen van variabelen aangestipt. Deze handleiding zou je een basisidee moeten gegeven hebben over wat variabelen zijn, en hoe ze gebruikt kunnen worden in de programmeertaal C. Er zijn nog verschillende andere aspecten met betrekking tot variabelen die besproken moeten worden – dat doen we in de volgende leerprogramma’s.