057 slingor loop

Snart kommer samma slingor med funktionen loop() som med while- och for-slingor.

Men först ett annat exempel som visar på hur funktionen loop() fungerar.

Flödesdiagram

Exempel på evighetsprogram

// global variabel 
// finns i setup och loop
int i = 1;

void setup() {
  Serial.begin(9600);
}

// funktionen loop anropas om och om igen av Arduinon void loop() { Serial.println(i); i = i + 1; }

Utskriften blir:

1
2
3
...
32 766
32 767 (största möjliga int)
-32 768 (hoppar till minsta)
-32 767
-32 766
...
-1
0
1
2
...

Anledningen till att -32 768 kommer efter 32 767 är att de som gjort programmeringsspråket C har bestämt att det ska vara så.

För att få stopp på utskriften kan man använda sig av en if-sats och bara skriva ut i som är mindre än 4.

Skriv ut 1, 2, 3

Observera att flödesschemat ser nästa lika dant ut som för while-slingan eller for-slingan. Nu leder dock pilen med nej tillbaka till frågan.

// global variabel 
// finns i setup och loop
int i = 1;

void setup() {
  Serial.begin(9600);
}

// skriv ut 1, 2, 3
// funktionen loop anropas om och om igen av Arduinon
void loop() {
  if (i < 4)
  {
    Serial.println(i);
    i = i + 1;
  }
}

Jämför med koden för while.

Skriv ut 3, 5, 7

// global variabel 
// finns i setup och loop
int i = 3;

void setup() {
  Serial.begin(9600);
}

// skriv ut 3, 5, 7
// funktionen loop anropas om och om igen av Arduinon
void loop() {
  if (i < 8)
  {
    Serial.println(i);
    // öka med två
    i = i + 2;
  }
}

Skriv ut 10, 7, 4, 1

// global variabel 
// finns i setup och loop
int i = 10;

void setup() {
  Serial.begin(9600);
}

// skriv ut 10, 7, 4, 1
// funktionen loop anropas om och om igen av Arduinon
void loop() {
  if (i > 0)
  {
    Serial.println(i);
    // minska med 3
    i = i - 3;
  }
}