Arrays
Een Array is een veelgebruikte datastructuur waarin een reeks van variabelen opgeslagen kan worden. Deze waarden kunnen dan aan de hand van hun index in de Array worden opgeroepen. Een index is een genummerde positie.
Array aanmaken
De syntax voor het aanmaken van een Array is als volgt:
type Naam[lengte] = {waarde1, waarde2, waarde3, ...};Afspraak: Je laat de naam van de Array beginnen met een hoofdletter om het te onderscheiden van gewone variabelen.
Het type bepaalt het soort waarden dat in de Array kan worden opgeslagen (bv. int, float, char, etc.). De lengte geeft aan hoeveel waarden de Array kan bevatten. De waarden zelf worden tussen accolades {} geplaatst, gescheiden door komma's.
De vierkante haakjes wijzen er op dat het om een Array gaat. Daar waar int a één integer kan opslaan kan int A[10] er 10 bijhouden.
int Nummers[5] = {10, 20, 30, 40, 50}; Wanneer je geen grootte opgeeft wordt er een Array aangemaakt die net groot genoeg is om de opgegeven waarden te bevatten. Bovenstaande Array kon dus ook aangemaakt worden als volgt:
int Nummers[] = {10, 20, 30, 40, 50}; Waarde uit Array opvragen
Om een waarde uit een Array op te vragen, gebruik je de naam van de Array gevolgd door de index van de gewenste waarde tussen vierkante haakjes []. Een index is een getal dat de positie van een waarde in de Array aangeeft, beginnend bij 0 voor de eerste waarde.
int eersteNummer = Nummers[0]; // eersteNummer krijgt de waarde 10
int derdeNummer = Nummers[2]; // derdeNummer krijgt de waarde 30Belangrijk: In C, net als in de meeste andere programmeertalen, begint deze nummering met het cijfer 0. In de Array [‘A’, ‘B’, ‘C’] is de index van ‘A’ dus gelijk aan 0 en de index van ‘C’ gelijk aan 2.
Bereik van een Array
Belangrijk: In C++ heeft de compiler geen idee van de lengte van een Array. Een waarde opvragen die buiten het bereik van een Array ligt, geeft geen fout bij het compileren, maar kan het programma doen crashen tijdens gebruik of erg moeilijk te ontdekken bugs opleveren!
Bv. Vraag nooit A[10] of A[6] wanneer de Array A[] maar 6 plaatsen bevat. Let hier extra goed op wanneer je een for-lus schrijft. De lus laten lopen zolang i <= 6 is, crasht mogelijks het programma voor een Array met maar 6 elementen.
Voorbeeld
String Regenboog[] = { "Rood", "Oranje", "Geel", "Groen", "Blauw", "Indigo", "Violet" };
void setup() {
Serial.begin(9600);
Serial.println("Alle kleuren van de regenboog:");
for (int i = 0; i < 7; i++) {
Serial.println(Regenboog[i]);
}
}
void nummerNaarKleur(int nr) {
if (nr >= 1 && nr <= 7) {
Serial.print("Kleur nummer ");
Serial.print(nr);
Serial.print(" is ");
Serial.println(Regenboog[nr - 1]);
} else {
Serial.println("Ongeldig nummer! Kies een nummer tussen 1 en 7.");
}
}
void loop() {
while(!Serial.available()) {} // wacht tot er data is
int kleurNr = Serial.parseInt(); // nummer zoeken in tekst van seriële monitor
nummerNaarKleur(kleurNr);
}