6.5 Functies oefeningen.
Uitleg
Functies zijn stukjes code die een bepaalde functie hebben; je stop er wat in er gebeurt wat en er komt wat uit.
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
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 2 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 relel 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?
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 2.
Schrijf de complete code op je antwoordenblad.
-