Programmeren in C++/Arrays
Een array is een rij met gegevens van hetzelfde type. Met een array kun je zulke gegevens makkelijk bij elkaar houden. Deze gegevens worden mooi achter elkaar opgeslagen. Eén element van een array kan worden bereikt met zijn index. Deze index is de positie waarop het element zich bevindt in de rij.
Een array aanmaken
bewerkenEen array aanmaken gebeurt met "[]". Dit is om duidelijk te maken dat we praten over een array. Je kan ze op twee manieren aanmaken. Ofwel maak je gewoon de array aan en voeg je later de gegevens toe ofwel geef je meteen de gegevens mee.
C++-code:
int getallen[10];
char tekens[20];
string teksten[30];
Hier maken we drie arrays aan zonder gegevens mee te geven. Je kunt arrays maken van primitieve datatypes zoals int, chars, etc., maar ook van objecten zoals strings. Na de naam van de array moet je de lengte opgeven tussen "[]". Als je tien getallen wilt opslaan, moet je dus "[10]" opgeven. De lengte van een array moet uiteraard groter dan nul zijn, je kan er wel één maken die slechts een element heeft.
C++-code: Array aanmaken.
int getallen[1]={1};
char tekens[2]={'a','b'};
string teksten[3]={"dit","is","tekst."};
Hier worden aan de arrays meteen gegevens meegegeven. De verschillende elementen worden gescheiden door komma's en al de elementen staan samen tussen accolades "{}". Het aantal elementen dat je meegeeft, mag niet meer zijn dan de lengte van de array, maar het mogen er wel minder zijn.
Als alle waarden van de array worden meegegeven, kan de compiler zelf de lengte van de array bepalen en hoven we die niet op te geven.
C++-code: Array aanmaken.
int getallen[]={1};
char tekens[]={'a','b'};
string teksten[]={"dit","is","tekst."};
Werken met gegevens van een array
bewerkenDit is heel simpel. Wat je enkel nodig hebt is de naam van de array waarmee je wilt werken en het volgnummer van het element dat je wil aanspreken. Eerst zullen we zien hoe je gegevens kunt opslaan.
C++-code: Gegevens opslaan in een array.
int getallen[0]= 1;
char tekens[1]= 'c';
string teksten[2]= "nog tekst.";
Net zoals toen je de array aanmaakte, maak je gebruik van "[]". Hiertussen typ je op welke plaats je iets wilt opslaan. Let op, de index van arrays is zero-based, net als in andere talen zoals C, java, php, enz. Dit wil zeggen dat wanneer je iets wilt opslaan op de eerste plaats, je niet 1 intypt maar 0. Wil je iets op plaats 2 opslaan typ je 1 enzoverder. Een array die 4 elementen lang is, heeft dus als indices 0, 1, 2 en 3.
Een array benaderen met een lus
bewerkenEen array benaderen doe je het best met een for-lus, maar je kunt dit natuurlijk met de andere ook doen.
C++-code:
int getallen[] = {1, 2, 3, 4};
for(int i = 0; i < 4; i++){
cout<<getallen[i]<<endl;
}
Uitvoer:
1 2 3 4
De variabele i zal worden gebruikt als index voor de array en begint natuurlijk met 0. De for-lus zal vervolgens al de 4 elementen tonen op het scherm. In de for-lus hebben we gezegd dat hij moet door gaan als i minder dan 4 is. 4 is de lengte van onze array. Het is echter niet dynamisch om daar een 4 te typen, want als we de array willen verlengen naar 5 elementen, moeten we dit ook hierin aanpassen. Hiervoor bestaat de functie sizeof().
C++-code:
int getallen[] = {1, 2, 3, 4};
for(int i = 0; i < sizeof(getallen)/sizeof(int); i++){
cout<<getallen[i]<<endl;
}
De functie sizeof() is bedoeld om de lengte van iets te weten in bytes. Als we dat gebruiken op de array "getallen" krijgen we 16. We hebben echter slechts 4 elementen in onze array. De reden dat we 16 krijgen is omdat we de lengte van de array berekenen in bytes. Een int is namelijk 4 bytes lang en we hebben 4 elementen. 4 maal 4 maakt dus 16. Daarom moeten we eerst nog de 16 delen door de lengte van een int.
Tweedimensionale array (matrix)
bewerkenJe kunt een array in C++ ook meer dan een dimensie geven:
int a[3] = {1,2,3}; is eendimensionaal
int a[3][3] = {{1,2,3}, {4,5,6},{7,8,9}} is tweedimensionaal
Zo'n tweedimensionale array of matrix kun je natuurlijk voor veel toepassingen gebruiken. Denk daarbij aan tabellen en matrices.
Om een goede uitvoer te krijgen op het scherm is het van belang om elke 'coördinaat' (index) aan te geven. Dit kun je bereiken door een dubbele for-loop te gebruiken.
C++-code:
int a[3][3] = {
{1,2,3},
{4,5,6},
{7,8,9}
};
for (int i=0; i<3; i++)
{
for (int j=0; j<3; j++)
{
cout << a[i][j]<< " "; // de " " is om een spatie te krijgen tussen de getallen
}
cout << endl;
}
Uitvoer:
1 2 3 4 5 6 7 8 9