058 array

Vektor (eng. array) är en variabel med flera platser.

  int tal [] = {2, 3, 5};

Vektorn tal har tre platser. I dessa ligger talen 2, 3, 5. Platserna är numrerade: 0, 1, 2. Dessa nummer kallas index.

  {2, 3, 5} (vektorn som heter tal)
   0, 1, 2 (index)

För att komma åt 2 som har index 0 skriver man:

  tal[0]; // 2

För att komma åt nästa tal som har index 1 skriver man:

  tal[1]; // 3

Talet 5 kommer man åt som:

  tal[2]; // 5

Ett annat sätt att göra samma vektor på är:

  int tal [3];
  tal[0] = 2;
  tal[1] = 3;
  tal[2] = 5; 

Det senare sättet kan man alltid använda. Ibland är det dock smidigt att använda sig av det första.

För att arbeta med långa vektorer (eng. array) använder man ofta slingor: while- eller for-slingor.

Koden nedan visar hur man kan skriva ut talen i vektorn tal med hjälp av en while-slinga.

  int index = 0;
  while (index < 3)
  {
      // index får värdena 0, 1, 2 i tur och ordning
      Serial.println(tal[index]);
      index = index + 1;
  }

Studera exemplet på GitHub.

Kod på GitHub

Utmaning

1

Lägg talen 4, 8, 12, 16 20 i en vektor.

Skriv ut så att utskriften blir:

  4, 8, 12, 16 20

2

Lägg till frågorna

  2 + 3 =
  4 + 8 = 
  13 - 2 = 

i en vektor.

Lägg till svaren i en annan vektor.

Använd en slinga för att

  skriv ut en fråga
  vänta 3 sekunder
  skriv ut svaret
  vänta 3 sekunder så att användaren hinner rätta sig själv

Med slingan så kan ovanstående göras en gång för varje fråga.

3

Lägg bokstäverna E, T, Q, S i en vektor.

Använd en slinga för att upprepa nedanstående fyra gånger

  skriv ut en bokstav 
  vänta 500 ms

Koden kommer att skriva ut bokstäverna E, T, Q, S med en halv sekunds fördröjning.

Kan byggas ut till minnesspel.

2 Morse

Spara bokstaven S som en vektor (eng. array). Låt till exempel kort vara 0 och lång vara 1. Kan också välja kort som false och lång som true. Det senare göra att det går åt mindre minne. Men att minnet ska ta slut är inget man behöver oroa sig för när man skriver kortare program. Enklast är kanske att låta kort representeras av tecknet . och låta lång representeras av bokstaven -.

Spara även O som en vektor.

Skriv ut SOS som Morsekod med hjälp av for- eller while-slingor.

Om morsealfabetet på Wikipedia

Svårare utmaningar

Gör klart Rövarspråksprogrammet

Förlag på arbetsordning.

  • Översätt mening till Rövarspråk.
  • Visa på LCD
  • Inmatning av mening via knappar.

Översätt till Morse

Översätt ett helt meddelande till Morsekod.

Översätt från Morsekod till vanlig text.

Arbeta vidare på Yatzy.

Förslag på arbetsordning.

  • summera alla ettor
  • summera alla tvåor
  • på samma sätt för treor, ..., sexor
  • leta efter par
  • leta efter triss
  • leta efter fyrtal
  • leta efter kåk
  • leta efter liten stege
  • leta efter stor stege
  • leta efter yatzy

Användaren kan välja vilka tärningar som ska sparas. Använd fysiska knappar. Kanske LCD eller Serial.print().

Kasta om övriga tärningar.

Användaren får välja vad det ska sparas som. Välj med knappar.

Kasta igen. Kanske skaka Arduino.

Summera när det är klart. Bonus på 50 poäng om summan av ettor, ..., sexor är minst 63 poäng.

Två kan spela mot varandra.