Funksjoner

En funksjon er et sett av instruksjoner (flere kodelinjer) som til sammen utfører en oppgave. I noen programmeringsspråk kalles dette funksjon, i andre kalles det metode. Å lage funksjoner er lurt dersom man skal gjøre oppgaven flere ganger underveis i programmet.

I denne videoen får du en kort introduksjon til hvordan man lager en enkel funksjon, og lenger ned på siden får du se hvordan man gjør funksjonskall.

 

En funksjon kan du tenke som en oppskrift. En matoppskrift inneholder mange oppgaver som skal utføres for å nå resultatet. Oppskriften kan vi ta fram mange ganger og da ser vi alle trinnene som skal være med. Det er ikke slik at vi hver gang må hente inn de ulike deloppgavene og sette sammen oppskriften, f.eks. å piske egg og sukker til eggedosis eller piske eggehviter stive - de ligger som deler av hele oppskriften. 

Et annet eksempel er å strikke en genser. Da må man også utføre mange operasjoner underveis. Man kan tenke seg at man lagde funksjoner av noen av disse handlingene, f.eks. at vi lagde funksjonen "vrangbord" som da ville føre til at vi skulle strikke en rett og en vrang maske. Det vil jo være mye mer effektivt enn at vi skulle skrive strikk en rett og en vrang, strikk en rett og en vrang mange ganger etter hverandre. Da ville det også være vanskelig å finne feilen hvis vi midt inni hadde glemt en vrang! I et slikt eksempel kunne man også tenkt seg at vi la inn to typer variabler; om det skal være to rette og to vrange eller en rett og en vrang, og vi kunne angitt hvor bred vrangborden skulle være. 

Tenk for eksempel at du skal tegne flere trekanter. En måte å gjøre dette på er å skrive inn kodelinjene som må til for å tegne en trekant flere ganger, og hver gang må vi passe på å angi riktig størrelse. Det blir en tung og vanskelig kode å lese og feilsøke. Da er det bedre å lage en funksjon, funksjonen Trekant.

Code org trekant med funksjonskall

Til venstre er programkoden, mens til høyre ser man de kodelinjene som inngår i funksjonen "tegn en trekant". I programmet har vi satt inn funksjonen, og da henter den opplysningene fra funksjonen som vi har laget tidligere. Dette kalles et funksjonskall (metodekall). Funksjonen kan vi hente inn flere ganger - hvis vi har behov for å lage flere trekanter. Den store fordelen er at koden blir enklere å lese og å feilsøke, og vi trenger kun å rette opp eventuelle feil på ett sted; i funksjonen.

Koden over lager trekanter av bare en størrelse, så en enda bedre kode er hvis vi kan velge hva slags størrelse trekantene skal ha ved hvert funksjonskall. I eksempelet under ser man funksjonen firkant som har fått et parameter/en variabel som heter "lengde". Når vi skal tegne firkantene brukes verdien vi har satt. I dette tilfellet en firkant med sider som er 50 piksler lange og en firkant med sider som er 100 piksler lange. Til venstre er programkoden, til høyre funksjonen. Programkoden gjør to funksjonskall og henter opp informasjon fra funksjonen om hvilke steg som skal til for å tegne en firkant - først for den minste firkanten (50 piksler) og så for den største firkanten (100 piksler).

Code org firkant parameter

I videoen under gjennomgås det å lage funksjoner og utføre funksjonskall.

Oppsummert om funksjoner:

Funksjoner er en gruppe kodelinjer osm utfører en spesifikk oppgave.

De deler større program opp i mindre deler, noe som gir en bedre struktur og oversikt - det gjør koden enklere å forstå. Funksjoner gir også enklere testing, man kan teste en og en funksjon.

Funksjoner handler i stor grad om gjenbruk av kode. Hvis noe skal gjentas flere ganger i ett program er det enkelt å kalle opp funksjonen framfor å skrive inn kodelinjene hver gang noe bestemt skal skje. Programmet blir kortere, og det er raskere å skrive. Det er også mulig å legge funksjonen globalt, da kan den hentes opp i mange programmer.

Forskjellen på funksjoner og variabler er at 

  • variabel: huske verdier (data) til senere bruk
  • funksjon: huske kodelinjer (operasjoner) til senere bruk

I neste modul skal du lære om løkker, men allerede nå kan du merke deg forskjellen på løkker og funksjoner:

  • En løkke handler om å gjenta samme eller flere kodelinjer en bestemt plass (eks strikke en vrangbord nederst på en genser) - den handler om å repetere noe
  • En funksjon handler om å gjøre de samme kodelinjene flere ulike steder i et program, eller i flere ulike program (eks. funksjon strikke vrangbord kan brukes nederst og på ermene på en genser og nederst på en strikkelue - og funksjonen kan inneholde løkker) - den handler om å gjenbruke kode