Skip to main content

6.1 Functies

In deze les gaan we  keer uitleggen wat functies zijn. Dit onderwerp is behandeld bij Java Script en andere programmeer vakken en in PHP werken functies eigenlijk niet anders. We kijken nog een keer naar wat een functie doet:

"Je stopt er wat in en er komt wat uit".

Aan de hand van filmpjes kijken we nog een keer naar de theorie en daarna is er een aantal opgaven om te oefenen.

Uitleg

Functies zijn stukjes code die een bepaalde functie hebben; je stop er wat in er gebeurt wat en er komt wat uit.

Functies worden gebruikt om stukjes code op te delen, te groeperen. Je deelt een groot probleem op in kleinere problemen en elk klein probleempje maak je een functie van. Soms zijn de kleinere problemen nog steeds te groot en deel je die ook weer op in nog kleinere stapjes. Door functies moduleer je je code, je geeft er structuur aan. In dit filmpje wordt dit  verder teogelicht.

Op deze site staat ook nog een goede uitleg in het Nederlands over functies. Lees tot aan recursieve functies. Recursieve functies hoef je dus (nog) niet te weten.

Voorbeeld

Stel je koopt iets in via internet in China. Je moet dan invoerrechten betalen als het bedrag hoger is dan 22 euro. De invoerrechten bestaan uit 21% btw en inklaringskosten. PostNL rekent 13 euro. Als het bedrag hoger is dan 150 euro dan komt er nog eens 6% bij aan douanerecht.

We kunnen een functie maken om te berekenen wat de totale kosten van het ingevoerde product zouden worden.

<?php

function importKosten($prijs) {
  $extra=0; // extra kosten initialiseren

  if ( $prijs > 22 ){
    $extra = $prijs * 0.21; // btw 21%
    $extra = $extra + 13  ; // inklaringskosten PostNL 13 euro
  }
  if ( $prijs > 150 ) {
    $extra = $prijs * 0.06; // Douanekosten 6%
  }

  return($prijs+$extra);
}

$itemPrijs=130;
echo "De prijs na invoeren uit China is ".importKosten($itemPrijs);

?>

Opgave 1

Pas de functie aan, zodat de prijs die de functie returned op twee decimalen wordt afgerond. De prijs dient altijd twee decimalen te bevatten (dus 12 euro wordt 12.00). Om dit op te lossen moet je zelf op zoek gaan naar een oplossing (dit is niet behandeld in de les).

Schrijf de regel(s) code die je hebt, verandert op je antwoordenblad.

Opgave 2

De bestellingen die je doen lopen niet meer via PostNL, maar via EMS. EMS rekent 17.50 aan inklaringskosten. Pas de code aan, zodat het nieuwe tarief van EMS wordt verwerkt.

Schrijf de regel(s) code die je hebt verandert op je antwoordenblad.

Opgave 3

(zet de inklaringskosten weer terug naar 13 euro)

Je hebt een array met prijzen:

$prijzen=[12,45,23,121,302,14,21];

Gebruik een loop en gebruik de functie die om van al deze prijzen de prijzen na invoer te berekenen. De output moet er als volgt uit zien:

De prijs van 12 na invoeren uit China is 12,00
De prijs van 45 na invoeren uit China is 67,45
De prijs van 23 na invoeren uit China is 40,83
De prijs van 121 na invoeren uit China is 159,41
De prijs van 302 na invoeren uit China is 320,12
De prijs van 14 na invoeren uit China is 14,00
De prijs van 21 na invoeren uit China is 21,00

Wat voor een loop heb je gebruikt? Zoek op hoe een foreach loop werkt en gebruik deze om het array te doorlopen.

Schrijf de loop inclusief de code die in de loop wordt gebruikt op je antwoordenblad.

Opgave 4

Je importeert spullen uit China en kan met de functie importKosten uitrekenen wat de producten jou kosten. Jij besluit de ingevoerde producten te verkopen via Martplaats en je wilt 20% winst maken.

Maak nu een tweede functie die de als input een prijs heeft en als output de prijs inclusief jouw winst. Dat is dus de prijs maal 1.2

Gebruik nu weer het array uit opgave 3 en druk de prijs na invoer en na inclusief (met) jouw winst. Je moet hierbij dus beide functies gebruiken!

De output gaat er dus als volgt uitzien:

De prijs van 12 na invoeren uit China is 14.40
De prijs van 45 na invoeren uit China is 80.94
De prijs van 23 na invoeren uit China is 49.00
De prijs van 121 na invoeren uit China is 191.29
De prijs van 302 na invoeren uit China is 384.14
De prijs van 14 na invoeren uit China is 16.80
De prijs van 21 na invoeren uit China is 25.20

Schrijf de complete code op je antwoordenblad.

Opgave 5

Kijk naar dit filmpje en beantwoord daarna de vragen.

Een variable $bedrag wordt meegegeven aan een functie.

function myFunctie($bedrag) {
	$bedrag=0;
    return($bedrag);
}

$bedrag=100;
$resultaat=myFunctie($bedrag);

echo $bedrag;

a) Wat wordt er in regel 9 afgedrukt?

b) Je verandert regel 6 in $bedrag=200, wat wordt er dan in regel 9 afgedrukt?

c) Je verandert regel 2 in $bedrag=12, wat wordt er dan in regel 9 afgedrukt?

d) Zie je een patroon in de vragen a,b, en c? Zo ja wat is het patroon, of wat kun je zeggen over de variabelen op regel 2 en op regel 6? Zijn die hetzelfde?

Schrijf de antwoorden op je antwoordenblad.

Opgave 6

Pas nu de functie aan, zodat je als input een array met prijzen meegeeft. De output moet ook een array met nieuwe prijzen zijn.

Dus de aanroep wordt:

$prijzenNaImport = importKosten($prijzen);

Druk dan vervolgens de prijzen af en gebruik daarvoor het array $prijzenNaImport. Maak weer gebruik van de foreach loop. De output moet er hetzelfde uitzien als bij opgave 3.

Dus:

De input van de functie importKosten is:

$prijzen=[12,45,23,121,302,14,21];

en de output is:

$prijzenNaImport['14.4','80.94','49','191.29','384.14','16.8','25.2',]

Dus je roept de functie aan als volgt $prijzenNaImport=importKosten($prijzen);

Schrijf de complete code op je antwoordenblad.

Het volgende filmpje kan ook helpen bij deze opgave: https://www.youtube.com/watch?v=INHM0S_8GHA

-