Arrayer

Arrayer

I dette kapittelet skal vi se nærmere på hvordan du ved hjelp av arrayer kan organisere massevis av verdier på en mer effektiv måte enn med enkeltstående variabler. I Løkker går vi gjennom løkker (loops). Med kombinasjonen av arrayer og løkker kan du lage omfattende skisser uten å skrive veldig mye kode.

Forskjellen på variabler og arrayer

Det finnes forskjellige typer variabler (f.eks. int og long), men felles for dem er at de bare kan inneholde én verdi. I blant er det praktisk å kunne lagre flere verdier. Da brukes arrayer, som er lister med variabler.

Et array er som en tabell med en kolonne og flere rader. Man kan også ha såkalte todimensjonale arrayer med flere kolonner og flere rader. Slike brukes i mange andre programmeringsspråk, men i Arduino-sammenheng brukes de sparsomt fordi de raskt okkuperer mye av det begrensede minnet.

Forskjellen på variabler (venstre) og arrayer (høyre).

Deklarasjon og initiering

I tidligere eksempler har vi lagret hvor mange epler som Alice og Bob har plukket, i enkeltstående variabler (f.eks. usignerte int-variabler eller long-variabler). 

long fruitsAlice = 1000;
long fruitsBob = 1100;

Med bare to epleplukkere er det ikke noe problem, men det blir raskt upraktisk hvis epleplukkerne blir flere.

long fruitsAlice = 1000;
long fruitsBob = 1100;
long frutsCharlie = 1200;
long fruitsDave = 1300;

Ved å i stedet lagre verdiene i et array blir koden enklere å håndtere. Det gjør vi ved å lage et long-array som vi kaller fruitsStatus. Vi deklarerer arrayet på samme måte som en variabel, men vi legger til to hakeparenteser på slutten. Mellom hakeparentesene skriver vi hvor mange long-variabler vi skal kunne lagre i arrayet.

long fruitsStatus[4];

Deretter kan vi med følgende kode lagre hvor mange epler Alice, Bob, Charlie og Dave har plukket. Vi angir plassene i arrayet som vi vil lagre verdiene i, ved å skrive plassnummeret i hakeparentes. Merk at den første plassen har plassnummer 0, den andre har plassnummer 1 osv.

fruitsStatus[0] = 1000;
fruitsStatus[1] = 1100;
fruitsStatus[2] = 1200;
fruitsStatus[3] = 1300;

Verdiene ligger på hver sin plass i arrayet.

Hvis vi allerede vet verdiene når vi deklarerer, kan vi skrive koden enda mer effektivt slik:

long fruitsStatus[] = {1000, 1100, 1200, 1300};

Legg merke til at vi ikke trenger skrive hvor langt arrayet skal være. Hvis vi initierer arrayet med fire verdier i deklarasjonen, blir arrayet automatisk fire verdier langt.

Streng-array

En streng er egentlig ikke noe mer enn et array av tegn (char). Siden strenger brukes så ofte, har det blitt utviklet en egen klasse for strenger (String) som gjør at de får samme virkemåte som variabler. Du kan til og med lage arrayer med strenger.

Hvis vi vil lagre navnene på hvem som har plukket så og så mange epler, kan vi lage et tilhørende string-array med følgende kode:

String names[] = {"Alice", "Bob", "Charlie", "Dave"};

Legg merke til at navnene i names ligger på samme relative posisjon som det tilhørende antall plukkede epler i fruitsStatus.

String-arrayet med navn og long-arrayet med plukkede epler.
Sist endret: 2017-09-08