Lektion 27. Funktioner

Forberedelse

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

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
Valuta omregner
  • 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