Funktioner
Funktioner er “selvstændige” moduler af kode, der udfører en bestemt opgave. Funktioner plejer at “indlæse” data, behandle det og “returnere” et resultat. Når en funktion er skrevet, kan den bruges igen og igen og igen. Funktioner kan kaldes fra indersiden af andre funktioner.
Funktioner “indkapsler” en opgave (de kombinerer mange instruktioner i en enkelt kodeklump). De fleste programmeringssprog giver mange indbyggede funktioner, der ellers ville kræve mange trin at opnå, for eksempel at beregne kvadratroden af et tal. Generelt er vi ligeglade med, hvordan en funktion gør hvad den gør, kun at den “gør det”!
Hvordan virker funktioner?
Når en funktion er “kaldet”, forlader programmet “den nuværende sektion af kode og begynder at udføre den første linje inde i funktionen. Således er funktionen “flow of control”:
- Programmet kommer til en kode med et “funktionsopkald”.
- Programmet går ind i funktionen (starter ved første linje i funktionskoden).
- Alle instruktioner inde i funktionen udføres fra top til bund.
- Programmet forlader funktionen og går tilbage til, hvor den startede fra.
- Alle data, der beregnes og returneres af funktionen, anvendes i stedet for funktionen i den oprindelige kode.
Hvorfor skriver vi funktioner?
1. De giver os mulighed for at opfatte vores program som en flok del-trin. (Hvert undertrin kan være sin egen funktion. Når et program virker for svært, skal du kun bryde det overordnede program i undertrin!)
2. De tillader os at genbruge kode i stedet for at gentage den.
3. Funktioner gør det muligt for os at holde vores variable navneområde rent (lokale variable er kun i “live” så længe funktionen er). Med andre ord, funktion_1 kan bruge en variabel kaldet “jeg”, og funktion_2 kan også bruge en variabel kaldet jeg og der er ingen forvirring. Hver variabel eksisterer kun, når computeren udfører den givne funktion.
4. Funktioner gør det muligt for os at teste små dele af vores program isoleret fra resten.
Hvordan skriver man funktioner?
- Forstå formålet med funktionen.
- Definer de data, der kommer ind i funktionen fra den, der ringer op (i form af parametre)!
- Definer, hvilke datavariabler der skal bruges i funktionen for at nå sit mål.
- Bestem det sæt af trin, som programmet vil bruge til at nå dette mål. (Algoritmen)
function functionName() { code to be executed; }
Bemærk: Et funktionsnavn kan starte med et bogstav eller understregning (ikke et tal).
Tip: Giv funktionen et navn, der afspejler, hvad funktionen gør!
Rekursion
Rekursion i datalogi er en metode til at løse et problem, hvor løsningen afhænger af løsninger til mindre forekomster af det samme problem (i modsætning til iteration). Ved hjælp af funktioner kan man “neste” funktioner inde i hinanden for derved at gentage funktionen indtil et givent parameter stopper den – ofte en if-sætning.
The power of recursion evidently lies in the possibility of defining an infinite set of objects by a finite statement. In the same manner, an infinite number of computations can be described by a finite recursive program, even if this program contains no explicit repetitions.
— Niklaus Wirth, Algorithms + Data Structures = Programs, 1976
function functionName(x) { if(x = 5 ) { functionName(x); // repeat the function } }
Fortsæt til næste side.