Arrayer

Arrayer

I detta kapitel ska vi se närmare på hur det med hjälp av arrayer går att organisera massvis med värden på ett effektivare sätt än med enskilda variabler. I Loopar kommer vi att gå igenom loopar. Med kombinationen av arrayer och loopar går det att åstadkomma storverk utan att behöva skriva oändligt långa sketcher. 

Skillnaden mellan variabler och arrayer

Det finns flera olika typer av variabler (t.ex. int och long), men gemensamt för dem är att de endast kan innehålla ett värde. Ibland är det praktiskt att kunna spara flera värden. Då används arrayer som är listor av variabler.

En array är som en tabell med en kolumn och flera rader. Det går till och med att ha så kallade tvådimensionella arrayer med flera kolumner och flera rader. Sådana används i många andra programmeringsspråk, men i Arduino-sammanhang används de sparsamt då de snabbt ockuperar mycket av det begränsade minnet. 

Skillnaden mellan variabler (vänster) och arrayer (höger).

Deklaration och initiering

I tidigare exempel har vi sparat hur många äpplen som Alice och Bob har plockat i enskilda variabler (t.ex. osignerade int-variabler eller long-variabler).  

long fruitsAlice = 1000;
long fruitsBob = 1100;

Med endast två äppelplockare är det inga problem, men det blir snabbt opraktiskt om äppelplockarna blir fler.

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

Genom att i stället lagra värdena i en array blir koden mer lätthanterlig. Det gör vi genom att skapa en long-array som vi kallar fruitsStatus. Vi deklarerar arrayen på samma sätt som om den vore en variabel, men vi lägger till två hakparenteser på slutet. Mellan hakparenteserna skriver vi hur många long-variabler vi ska kunna lagra i ­arrayen.

long fruitsStatus[4];

Sedan kan vi lagra hur många äpplen Alice, Bob, Charlie och Dave har plockat med följande kod. Vi anger platserna i arrayen som vi vill spara värdena i genom att skriva platsnumren inom hakparenteserna. Observera att första platsen har platsnummer 0, andra platsen platsnummer 1 och så vidare.

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

Värdena ligger på varsin plats i arrayen.

Om vi vet värdena redan vid deklarationen kan vi skriva koden ännu effektivare på följande vis.

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

Lägg märke till att vi inte ens behöver skriva hur lång arrayen ska vara. Om vi initierar arrayen med fyra värden i samband med deklarationen blir arrayen automatisk fyra värden lång. 

Sträng-array

En sträng är egentligen inget annat än en array av tecken (char). Eftersom strängar används så ofta har det skapats en egen klass för strängar (String) som gör att de beter sig som om de vore variabler. Det går till och med att skapa arrayer med strängar. 

Om vi vill lagra namnen för vem som har plockat si eller så många äppen, kan vi skapa en tillhörande String-array med följande kod.

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

Lägg märke till att namnen i names ligger på samma relativa position som den tillhörande mängden plockade äpplen i fruitsStatus.

String-arrayen med namn och long-arrayen med plockade äpplen.
Senast ändrad: 2017-01-19