Funksjon (programmering)
Utseende
Kildeløs: Denne artikkelen mangler kildehenvisninger, og opplysningene i den kan dermed være vanskelige å verifisere. Kildeløst materiale kan bli fjernet. Helt uten kilder. (10. okt. 2015) |
En funksjon, subrutine eller metode er en del av et dataprogram hvor en sekvens av instruksjoner er gruppert. De kan være navngitte, eller anonyme (lambda-funksjoner). Funksjoner endrer data enten med retur-verdier, eller ved endring av pekere. Nye verdier deklarert inne i funksjonen er oftest bare synlig (privat) i funksjonens omfang.
Hensikt
[rediger | rediger kilde]- Heve abstraksjonsnivået ved programmering.
- Gjenbruke deler av programmet, både kildekode og maskinkode.
Terminologi
[rediger | rediger kilde]- Innen objektorientert programmering brukes ordet "metode" om medlemsfunksjoner av klasser. Uformelt også synonymt med "funksjon".
- C- eller Pascal-calling convention: Om det er henholdsvis kalleren eller funksjonen som justerer stakkpekeren. Førstnevnte muliggjør variabel mengde parameterdata.
Virkemåte
[rediger | rediger kilde]Funksjonskall er mer kompliserte enn hopp. Mens hopp utføres med en enkelt jump- eller branch-prosessorinstruksjon, krever funksjonskall ekstra programvare:
- For at funksjonenes minne skal eksistere samtidig, må de plasseres på en stakk, altså en "sist inn, først ut"-kø. Stakkpekeren peker på toppen av stakken. Enten må hver funksjon ha sin egen stakkpeker, eller så må stakkpekeren justeres også ved retur.
- Hver funksjon må ha kallerens kopi av programtelleren. Funksjonen returnerer ved å kopiere denne tilbake i programtelleren, slik at neste instruksjon som hentes av styreenheten i CPU-en er den som ligger rett etter funksjonskallet. Dermed fortsetter kalleren der den slapp.
Autoritetsdata