Kategori: Funksjoner
Treff: 4505

Funksjoner

Et veldig viktig konsept i programmering er funksjoner. De kan gå under flere navn, funksjoner, metoder, subrutiner osv. , men konseptet er stort sett det samme:

En samling med kode-linjer som utfører en jobb, og gjerne en jobb som skal utføres flere ganger. Funksjonen kan, men må ikke, returnere et svar til programmet eller funksjonen som kalte den opp.

Strukturen er slik:

retur_type funksjonens_navn( parameter-liste ) { 
    //  “Kroppen” av funksjonen (koden som utføres)
}


retur-type: Hvis funksjonen skal returnere en verdi, må data-typen angis. F.eks int, float, char
funksjonens_navn: Navnet velger du helt selv, men det må ikke inneholde mellomrom eller norske tegn
parameter-liste: Parameterlisten angir hvilke verdier som sendes inn i funksjonen, og hvilken data-type de skal ha.  Flere parametere skilles med komma.
"kroppen": Koden som funksjonen skal utføre, «omringet» av klammeparenteser { }. Hvis funksjonen skal returnere en verdi, avsluttes den med en «return»-setning.

Enkelt eksempel

Enkelt eksempel

Et eksempel:

void minFunksjon(){
    int teller;  //Lokal variabel
    for (teller=0;teller<10;teller++){ //for-loop med 10 "runder"
       digitalWrite( 9, HIGH );  // Setter pinne 9 høy
       delay(200);  //Pause på 200 millisekund
       digitalWrite( 9, LOW );  // Setter pinne 9 lav
       delay(200);  //Pause på 200 millisekund
   }
}

Denne funksjonen skal ikke returnere noe, derfor bruker vi «void» (tomrom). Funksjonen har heller ingen parametre, men parantesene må uansett være med.
Navnet på funksjonen velger du helt selv, men det bør være beskrivende for hva funksjonen gjør. Siden dette er bare et eksempel, kaller vi den her "minFunksjon". Funksjonskallet (når vi skal bruke funksjonen) vil da bare være:

minFunksjon();

 

Eksempel med returverdi og to parametere

Eksempel med returverdi og to parametere

Et mer avansert eksempel:

int minAndreFunksjon(int antall, float desimalTall){
    int teller;  //Lokal variabel
    for (teller=0;teller<antall;teller++){
       digitalWrite( 9, HIGH );  // Setter pinne 9 høy
       delay(200);  //Pause på 200 millisekund
       digitalWrite( 9, LOW );  // Setter pinne 9 lav
       delay(200);  //Pause på 200 millisekund
    }
    return teller;
}

void setup(){
pinMode(9, OUTPUT);
}

void loop(){
int minVariabel;
  minVariabel=minAndreFunksjon(123, 9.7);
}

 

Eksempel 2

Oppgaver

Oppgaver:

1: Start på et nytt prosjekt. Lag en funksjon som tar 2 parametere: en startverdi og en sluttverdi. Disse bruker du i en for-loop som teller fra startverdi til sluttverdi og skriver tellerverdien til serieporten (Serial Monitor)

Bruk funksjonen du lagde til å skrive ut verdiene fra 10 til 15 og verdiene 110 til 115.

Løsningsforslag

Løsningsforslag:

Oppgave 1:  

/* Start på et nytt prosjekt. Lag en funksjon som tar 2 parametere: en startverdi 
* og en sluttverdi. Disse bruker du i en for-loop som teller fra startverdi til
* sluttverdi og skriver tellerverdien til serieporten (Serial Monitor)
*/

void telleFunksjon(int start, int slutt){ // Funksjons-definisjon
int teller; // Lokal tellevariabel (Bare tilgjengelig inne i denne funksjonen)
for (teller=start;teller<=slutt;teller++){ // Løkke som teller fra "start" til og med "slutt"
Serial.println(teller); //Skriver tellevariabelen til serieporten
delay(400); //Pause på 400 millisekunder
}
} //Slutten av funksjonen

void setup() {
// put your setup code here, to run once:
Serial.begin(9600); //Setter opp serieporten til å kommunisere på 9600 baud
}

void loop() {
telleFunksjon(10,15); // Kaller funksjonen med parameterene 10 og 15
delay(1000); //Pause 1 sekund
telleFunksjon(110,115); // Kaller funksjonen med parameterene 110 og 115
delay(1000); //Pause 1 sekund
}