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)
En enkel if-setning bygges opp slik: Konkret eksempel: 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: Konkret eksempel: Hvis variabelen «teller» er større enn 255, vil «teller» settes til 0, hvis ikke vil telleren økes med 1. 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 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: Oppgave 1: Koden inni i loop 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. Oppgave 1: Som du ser vil nå programmet skrive ut både "Telleren er større enn 5" og "Telleren er større enn 15" når telleren er 16, 17, 18 eller 19. Dette kan vi ordne med å endre en av if-setningene fra Da kjører vi to tester i samme setning, slik at teksten skrives ut hvis telleren er større enn 5 OG telleren er mindre enn 16.if - else - else if
if (logisk test) {
//kode kjøres hvis testen er sann
} if (teller>255){
teller=0;
} if (logisk test) {
// kode kjøres hvis testen er sann
} else {
// kode kjøres hvis testen er usann
} if (teller>255){
teller=0;
} else {
teller++;
}
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++;
}
if - else if – else struktur kan ha.
switch - case
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:
Start med å skrive av dette programmet:void setup(){
Serial.begin(9600);
}
void loop(){
for (int teller=0;teller <20;teller++){
//din kode her
delay(400);
}
}Løsningsforslag:
/* Oppgave 1: */
void setup() {
Serial.begin(115200);
}
void loop() {
for (int teller=0;teller <20;teller++){
if(teller<5){ //Sjekker om telleren er mindre enn 5
Serial.println("Telleren er mindre enn 5");
}
if(teller>5){ //Sjekker om telleren er større enn 5
Serial.println("Telleren er større enn 5");
}
if(teller>15){ //Sjekker om telleren er større enn 15
Serial.println("Telleren er større enn 15");
}
if(teller==16){ //Sjekker om teller en er lik 16
Serial.println("Nå er telleren 16!");
}
delay(400);
}
}
if(teller>5) til if(teller>5 && teller<16)
- Details
- Written by: Per Sigbjørn
- Category: Valg-setninger
- Hits: 3584