I de aller fleste C- og C++-programmer trenger i å gjøre valg og tester.

    Til det kan vi bruke if- setinger. Vi har også strukturer med switch og case , men det vil vi ikke komme så mye inn på i forhold til mikrokontrollere. (I hvert fall i første omgang)

    if - else - else if

    En enkel if-setning bygges opp slik:

         if (logisk test) {
                 //kode kjøres hvis testen er sann
        }

    Konkret eksempel:

      if (teller>255){
          teller=0;
       }

    Hvis variabelen «teller» er større enn 255, vil «teller» settes til 0.

    Vi kan også angi hva som skal skje hvis testen ikke er sann:

      if (logisk test) {
         // kode kjøres hvis testen er sann
      } else {
         //  kode kjøres hvis testen er usann
      }

    Konkret eksempel:

      if (teller>255){
          teller=0;
       } else {
          teller++;
       }

    Hvis variabelen «teller» er større enn 255, vil «teller» settes til 0, hvis ikke vil telleren økes med 1.


    En tredje mulighet er å bruke «nøstede» if-setninger. Da kan vi legge til en eller flere else if . Et eksempel:

      if (teller>100){
          teller+=10;
      } else if (teller>50){
          teller+=5;
      } else {
          teller++;
      }

    Hvis variabelen «teller» her er større enn 100, vil «teller» økes med 10.

    Neste ledd tester om teller enn 50, og øker i så fall telleren med 5. Denne testen vil ikke kjøres hvis den første testen er sann, selv om denne også selvsagt ville vært sann hvis den første var det.

    Hvis ingen av de to første testene er sanne vil koden etter else kjøres, og telleren økes med 1.

    Det er, så vidt jeg vet, ingen begrensing på hvor mange ledd en slik
    if - else if – else struktur kan ha.

     

    switch - case

    Hvis en har mange forskjellige alternativer å sjekke, kan det for bli uoversiktelig og vanskelig å vedlikeholde en struktur med if - else. Da er det et alternativ å bruke switch og case.

    Her er et enkelt eksempel:

    int verdi = random (0,5);  //Verdi settes til en tilfeldig verdi mellom 0 og 5

    switch(verdi){
       case 0:  
          Serial.println("Verdien er null");
          break;
       case 1:  
          Serial.println("Verdien er en");
          break;   
       case 2:  
          Serial.println("Verdien er to");
          break;   
       case 3:  
          Serial.println("Verdien er tre");
          break;   
       default:
          Serial.println("Kan ikke telle så langt...");
          break;
    }
     

    Oppgaver:

    Oppgave 1:
    Sett inn følgende i loop()-funksjonen din:

      for (int teller=0;teller <20;teller++){
    //din kode her
    delay(400);
    }

    Dette er en løkke som teller fra 0 til og med 19. (Mer om dette her: Løkker) Bruk valg-setninger, og skriv ut forskjellig tekst til Serial Monitor hvis teller er mindre enn 5, større enn 5 og større enn 15. Skriv også ut en egen tekst når når telleren er 16.

     

    Neste artikkel -->

    Søk på siden

    © Lilleholt.no 2020
    Free Joomla! templates by Engine Templates