Forberedelse
- Repeter, hvad begrebene events og især funktioner dækker over. Se evt. kapitel 10: https://bliv-klogere.ibc.dk/index.php/laerebog-til-emne-2-kapitel-5-til-13/#Kapitel_10_Kodebegreber
- Læs hele kapitel 16 om funktioner
Formål
- Forstå hvad en funktion er, og hvorfor de er så vigtige for os
- Se, hvordan vi bruger funktioner
Fælles gennemgang
Fra sidst
- Hvad er arrays, og hvad er forskellen mellem variable og arrays
- Hvad kan vi bruge arrays til
- Hvad er loops
- Hvad er forskellen mellem et FOR-loop og et WHILE-loop
- Gå evt til eksemplet: https://www.w3schools.com/php/php_arrays_sort.asp
Lektien til denne gang
- Hvad er en event, en funktion og hvad er en indbygget funktion
- Hvordan opfylder koden nedenfor kravene til en funktion
kop kaffe = stik-i-rend-dreng(tom kop);
- Forklar ud fra koden her

- Hvad kan funktioner gøre for os, og hvad er forskellen på sekventielt og indeks-sekventielt. Forklar ud fra billedet nedenfor

Øvelser
27.1 Din første PHP funktion
- Indsæt koden her i et PHP dokument og besvar spørgsmålene
<!DOCTYPE html>
<html>
<body>
<h1>Funktioner i php</h1>
<?php
function familyName($fname) {
echo "$fname Refsnes.<br>";
}
familyName("Jani");
familyName("Hege");
familyName("Stale");
familyName("Kai Jim");
familyName("Borge");
?>
</body>
</html>
- Forklar, hvordan koden virker
- Hvad kan fordelen være ved at lave en funktion frem for “bare” at kode løs
- Familien Refsnes kommer tydeligvis fra Norge. De får nu et nyt efternavn. Om deres nye efternavn er “Fjellabe”, “Geitost” (= “gedeost”, udtales “jet-ost”) eller “Hytta-på-hytta” (norsk udtryk for et højhus), må du selv bestemme :-). Bare du ændrer funktionen, så de får en udskrift med deres nye efternavn
- Jani gifter med Håkon, og Håkon han tager familiens efternavn. Skriv noget kode, så også Håkon blive udskrevet plus hans efternavn
27.2 Indbyggede funktioner
- Forklar, hvad en indbygget funktion er
- Kod 3 eksempler på en indbygget funktion. Du må gerne stjæle fra W3schools, men du skal kunne redegøre for, hvad koden gør
27.3 Lidt teori
- Hvor almindelige tror du, at funktioner er i dynamiske sprog
- Er der funktioner i HTML, CSS og javaScript
- Forklar, hvad forskellen på sekventielt og indeks-sekventielt er
- Hvorfor er det relevant i forhold til funktioner
- Hvordan kan funktioner understøtte separation of concerns
- I opgave 27.1 brugte vi en funktion. Havde den en returværdi
- I hvilke situationer har vi typisk brug for en funktion uden hhv. med returværdi
- Sekventielt eller indeks-sekventielt?
- Du ser en romantisk film i biografen. Efter mere end 1 time kysser heltinden og helten endelig hinanden for 1. gang
- På stadion ser du AGF scorer til 3 – 0 mod Bundby undskyld Brøndby. Kampen afvikles et sted uden storskærm
- Vil dit svar være anderledes, hvis stadion havde storskærm, der kan vise målet
- Du ser en fed musikvideo på YouTube
- Du er SÅ glad. Du skal nemlig op til eksamen i informatik. Med stor appeltit kaster du dig over lærebogen og udvælger de steder, som du gerne vil repetere
27.4 Funktioner med returværdi
- Indsæt koden nedenfor i et selvstændigt PHP dokument og besvar spørgsmålene
<!DOCTYPE html>
<html>
<body>
<h1>Funktioner med returværdi</h1>
<?php
function sum(int $x, int $y) {
$z = $x + $y;
return $z;
}
echo "5 + 10 = " . sum(5, 10) . "<br>";
echo "7 + 13 = " . sum(7, 13) . "<br>";
echo "2 + 4 = " . sum(2, 4);
?>
</body>
</html>
- Hvordan fungerer koden, og sender funktionen en værdi retur
- Skriv en ny funktion, der kan trække 2 tal fra hinanden. Kald funktionen for “subtract”. Lav nu 3 nye echo med de samme tal som før, men hvor der står således i den første af de nye linjer: echo “5 – 10 = ” . subtract(5, 10) . “<br>”;
- Herefter linjer med .subtract(7,13) og den sidste linje med .subtract(2, 4)
27.5 Flere små tabeller
Lad os for en stund vende tilbage til opgave 26.5 Små tabeller.
- Du brugte koden til at lave tabeller med
- Du gjorde det uden kendskab til funktioner, så du lavede en sekventiel kode
- Her er et eksempel, hvor jeg har samlet selve tabel-generering og udskrivning i en funktion, som jeg kalder lavTabel();
<!DOCTYPE html>
<h<!DOCTYPE html>
<html>
<body>
<h1>Her er 1-tabellen men som en funktion</h1>
<?php
lavTabel(1);
function lavTabel(int $talTabel){
$tal = $talTabel;
for($x = 0; $x < 10; $x++) {
echo $tal;
echo "<br>";
$tal = $tal + 1;
}
echo "<br><br>";
}
?>
</body>
</html>
- Sæt ovestående ind i en php fil og få det til at virke
- Undersøg koden. Hvad gør den? Sæt kommentarer ind forskellige steder i koden, så du viser, at du forstår koden
- Lav tabellerne fra 2 – 5
- Sammenlign med opgave 26. 5. Hvad laver mest kode: Sekventiel eller indeks-sekventiel kode. Hvad er mest smidigt og nemmeste at vedligeholde
- Tag en kopi af dit arbejde. I den nye fil skal du nu lave tabellerne også fra 5 til og med 10. Ændrer det dit svar i forhold til, om sekventiel eller indeks-sekventiel kode er nemmest?
- Skriv en overskrift på tabellerne, f.eks. <h1>1-tabellen</h1>, <h1>2-tabellen</h1> osv. Prøv, om du kan inkludere overskriften i funktionen, ellers bliver du nødt til at skrive det separat.
- Ekstra: Lav noget pæn styling på din php side