Funksjon (programmering)

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

  • Heve abstraksjonsnivået ved programmering.
  • Gjenbruke deler av programmet, både kildekode og maskinkode.

Terminologi rediger

  • 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

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.