Programmeringskurs: 1.5 Funksjoner
Funksjoner er maskiner
Tenk deg at du har hatt en stor bursdagsfeiring og skal sende ut takke-hilsener til alle gjestene. Det er en kjedelig affære å skrive nesten det samme i alle meldingene.
Tusen takk, Else, og takk for blomsten.
Tusen takk, Moa, og takk for den fine gaven.
Tusen takk, Sigrun, og takk for boka.
Tusen takk, Eirik, og takk for all hjelpen.
…
Etterpå finner du kanskje ut at du vil omformulere hilsenen litt. Da må du skrive alle takkemeldingene en gang til!
Når vi skal gjøre den nesten samme operasjonen mange ganger, vil det være tidsbesparende å lage en maskin som gjør operasjonen for oss. I en takke-maskin kunne vi sendt inn navn og gave, og så ville maskinen automatisk sendt takkemeldingen til riktig person. I programmering (og matematikk) kaller vi slike maskiner for funksjoner.
Vi definerer en funksjon i Python ved å bruke kodeordet #\texttt{def}#.
#\texttt{def }##\color{blue}{\texttt{funksjonsnavn(}}##\color{green}{\texttt{parameter1}}#, #\color{green}{\texttt{parameter2}}##\texttt{,...}##\color{blue}{\texttt{)}}\texttt{:}#
#\quad \quad\color{red}{\texttt{handling}}#
Vi velger fritt et navn på funksjonen. Funksjonen kan ha ingen eller flere parametere, som den bruker for å utføre en handling.
Lag en funksjon som skriver ut en personlig hilsen når vi oppgir et navn og en gave.
Løsning:
Vi definerer funksjonen #\color{blue}{\texttt{hilsen(}}##\color{green}{\texttt{navn}}#, #\color{green}{\texttt{gave}}##\color{blue}{\texttt{)}}# slik:
#\texttt{def }##\color{blue}{\texttt{hilsen(}}##\color{green}{\texttt{navn}}#, #\color{green}{\texttt{gave}}##\color{blue}{\texttt{)}}##\texttt{:}#
#\quad \quad \texttt{print("Tusen takk, " + }##\color{green}{\texttt{navn}}##\texttt{ + ", og takk for " + }##\color{green}{\texttt{gave}}##\texttt{)}#
Denne funksjonen kan vi nå bruke videre i koden. Programmerere sier gjerne at de ‘kaller på’ funksjonen. Vi bruker den ved å skrive #\texttt{hilsen(navn, gave)}# og erstatte #\texttt{navn}# med et navn og #\texttt{gave}# med en gave. De to parameterne må alltid være med når vi bruker funksjonen.
Nedenfor kan du prøve koden. Legg merke til resultatene du får når du kjører koden.
En funksjon i Python har mange likhetstrekk med en matematisk funksjon. Andregradsfunksjonen
#f(x) = x^2-3x-10#
fungerer som en maskin – gir vi den en #x#-verdi gir den oss en funksjonsverdi i retur.
Vi har gitt funksjonen
#f(x)=x^2-3x-10#
Bruk en funksjon i Python til å regne ut verdiene #f(0)#, #f(5)# og #f(-3)#.
Løsning:
Vi definerer funksjonen med kodeordet #\texttt{def}#. Den frie variabelen #x# er parameteren i Python-funksjonen. For å få koden til å regne ut hva funksjonsverdien blir bruker vi kodeordet #\texttt{return}#. Dermed vil funksjonen returnere utregnet verdi når vi bytter ut x med ett tall.
Programmet blir slik. Trykk på for å kjøre programmet.