# Quizzes

# Quiz 1a

### Opgave 1

(10 minuten)

De functie *verschil* bepaald het verschil tussen twee getallen. De functie krijgt twee getallen mee en returned het verschil. Dus verschil(12,10) en verschil(10,12) returnen beide 2.

(a) Er zitten **twee** fouten in de code. Kun jij die er uit halen en ervoor zorgen dat de echo in regel 14 netjes een 2 afdrukt?

(b) Dan ziet er nog iets vreemds in de code, het is niet fout maar het kan beter. Kun je de code nog verder verbeteren?

Corrigeer de code en lever de gehele gecorrigeerde code in, in je PHP-bestand.

```
function verschil() {
    
    if ( $getal1 > $getal2 ) {
    	return $getal1 - $getal2 ;
    else {
    	return $getal2 - $getal1 ;
    }
    
    return 0;
 }
     
$getal1 = 10;
$getal2 = 12;
echo verschil($getal1, $getal2); // hier verwacht je een uitkomst van 2 ($getal2-$getal1), maar het werkt niet, help!
```

### Opgave 2

(10 minuten)

Maak een functie, grootste($getal1, $getal2, $getal3) die drie parameters mee krijgt. De return value van de functie moet het grootste getal zijn.

Bijvoorbeeld:

```
echo grootste(1,2,3)    // dit drukt 3 af
echo grootste(6,12,3)   // dit drukt 12 af
echo grootste(-1,-2,-3) // dit drukt -1 af
echo grootste(0,-2,3)   // dit drukt 3 af
```

Zet de functie grootste($getal1, $getal2, $getal3) in je PHP-bestand.

### Opgave 3

(20 minuten)

Maak een functie die die de gemiddelde snelheid uitrekent.

Stel:

```
Je fietst 3 uur en je hebt 60 km afgelegd, dan is de gemiddelde snelheid 60/3 = 20 km/uur.
Je zit 2 uur in de auto en je hebt 160 km afgelegd, dan is de gemiddelde snelheid 160/2 = 80 km/uur.
```

Om de gemiddelde snelheid te berekenen deel je dus de afstand (in kilometers) door de tijd (in uren).

#### Deel 1, functie maken

Maak nu een functie gemSnelheid($tijd, $afstand), die twee parameters mee krijgt: $tijd in uren en $afstand in kilometers. De functie returned de gemiddelde afstand.

Gebruik onderstaande template.

```
function gemSnelheid.....
...
...
...

//Je fietst 3 uur en je hebt 60 km afgelegd, dan is de gemiddelde snelheid 60/3 = 20 km/uur.
echo gemSnelheid(3, 60); // dit drukt 20 af

//Je zit 2 uur in de auto en je hebt 160 km afgelegd, dan is de gemiddelde snelheid 160/2 = 80 km/uur.
echo gemSnelheid(2, 160); //dit drukt 80 af
```

Op de plaats van de puntjes in de bovenstaande code maak je de functie en zorg je dat het werkt. Controleer of er inderdaad 20 en 80 wordt afgedrukt.

##### Deel 2, output netjes maken

Pas de code aan, zodat de output netjes wordt geformatteerd. De output moet er als volgt uit zien:

```
Je doet 3 uur over 60 kilometer, dat betekent dat je gemiddelde snelheid 20 km/uur was.
Je doet 2 uur over 160 kilometer, dat betekent dat je gemiddelde snelheid 80 km/uur was.
```

Denk er wel aan dat je de functie generiek houd en dat je alle taalelementen buiten de functie houd. De functie returned dus alleen een getal.

\--

# Quiz 1b

### Opgave 1

(10 min)

De functie *verschil* bepaald het verschil tussen twee getallen. De functie krijgt twee getallen mee en returned het verschil. Dus verschil(12,10) en verschil10,12) returnen beide 2.

(a) Er zitten **twee** fouten in de code. Kun jij die er uit halen en ervoor zorgen dat de echo in regel 14 netjes een 2 afdrukt?

(b) Dan ziet er nog iets vreemds in de code, het is niet fout maar het kan beter. Kun je de code nog verder verbeteren?

Corrigeer de code en lever de gehele gecorrigeerde code in, in je PHP-bestand.

```
function verschil($getal1, $getal2) {
    
    if ( $getal1 > $getal2 ) {
    	return $getal1 - $getal2 ;
    else {
    	return $getal2 - $getal1 ;
    }
    
    return 0;
 }
     
$getal1 = 10;
$getal2 = 12;
echo verschil(); // hier verwacht je een uitkomst van 2 ($getal2-$getal1), maar het werkt niet, help!
```

### Opgave 2

(20 minuten)

Maak een functie, kleinste($getal1, $getal2, $getal3) die drie parameters mee krijgt. De return value van de functie moet het kleinste getal zijn.

Bijvoorbeeld:

```
echo kleinste(1,2,3)    // dit drukt 1 af
echo kleinste(6,12,3)   // dit drukt 3 af
echo kleinste(-1,-2,-3) // dit drukt -3 af
echo kleinste(0,2,3)    // dit drukt 0 af
```

Zet de functie kleinste($getal1, $getal2, $getal3) in je PHP-bestand.

### Opgave 3

(20 minuten)

Maak een functie die die de gemiddelde snelheid uitrekent.

Stel:

```
Je fietst 3 uur en je hebt 60 km afgelegd, dan is de gemiddelde snelheid 60/3 = 20 km/uur.
Je zit 2 uur in de auto en je hebt 160 km afgelegd, dan is de gemiddelde snelheid 160/2 = 80 km/uur.
```

Om de gemiddelde snelheid te berekenen deel je dus de afstand (in kilometers) door de tijd (in uren).

#### Deel 1, functie maken

Maak nu een functie gemiddeldeSnelheid($tijd, $afstand), die twee parameters mee krijgt: $tijd in uren en $afstand in kilometers. De functie returned de gemiddelde afstand.

Gebruik onderstaande template.

```
function gemiddeldeSnelheid.....
...
...
...

//Je fietst 3 uur en je hebt 60 km afgelegd, dan is de gemiddelde snelheid 60/3 = 20 km/uur.
echo gemSnelheid(3, 60); // dit drukt 20 af

//Je zit 2 uur in de auto en je hebt 160 km afgelegd, dan is de gemiddelde snelheid 160/2 = 80 km/uur.
echo gemSnelheid(2, 160); //dit drukt 80 af
```

Op de plaats van de puntjes in de bovenstaande code maak je de functie en zorg je dat het werkt. Controleer of er inderdaad 20 en 80 wordt afgedrukt.

##### Deel 2, output netjes maken

Pas de code aan, zodat de output netjes wordt geformatteerd. De output moet er als volgt uit zien:

```
Je doet 3 uur over 60 kilometer; dit betekent dat je gemiidelde snelheid 20 km/uur was.
Je doet 2 uur over 160 kilometer; dit betekent dat je gemiidelde snelheid 80 km/uur was.
```

Denk er wel aan dat je de functie generiek houd en dat je alle taalelementen buiten de functie houd. De functie returned dus alleen een getal.

\--

# Quiz 1c

### Opgave 1

(10 min)

De functie *verschil* bepaald het verschil tussen twee getallen. De functie krijgt twee getallen mee en returned het verschil. Dus verschil(12,10) en verschil10,12) returnen beide 2.

(a) Er zitten **twee** fouten in de code. Kun jij die er uit halen en ervoor zorgen dat de echo in regel 14 netjes een 2 afdrukt?

(b) Dan ziet er nog iets vreemds in de code, het is niet fout maar het kan beter. Kun je de code nog verder verbeteren?

Corrigeer de code en lever de gehele gecorrigeerde code in, in je PHP-bestand.

```
function verschil($nummer1, $nummer2) {
    
    if ( $nummer1 > $nummer2 ) {
    	return $nummer1 - $nummer2 ;
    else {
    	return $nummer2 - $nummer1 ;
    }
    
    return 0;
 }
     
$nummer1 = 10;
$nummer2 = 12;
echo verschil(); // hier verwacht je een uitkomst van 2 ($getal2-$getal1), maar het werkt niet, help!
```

### Opgave 2

(20 minuten)

Maak een functie, kleinste($nummer, $nummer, $nummer) die drie parameters mee krijgt. De return value van de functie moet het kleinste getal zijn.

Bijvoorbeeld:

```
echo kleinste(1,2,3)    // dit drukt 1 af
echo kleinste(6,12,3)   // dit drukt 3 af
echo kleinste(-1,-2,-3) // dit drukt -3 af
echo kleinste(0,2,3)    // dit drukt 0 af
```

Zet de functie kleinste($getal1, $getal2, $getal3) in je PHP-bestand.

### Opgave 3

(20 minuten)

Maak een functie die die de gemiddelde snelheid uitrekent.

Stel:

```
Je fietst 3 uur en je hebt 60 km afgelegd, dan is de gemiddelde snelheid 60/3 = 20 km/uur.
Je zit 2 uur in de auto en je hebt 160 km afgelegd, dan is de gemiddelde snelheid 160/2 = 80 km/uur.
```

Om de gemiddelde snelheid te berekenen deel je dus de afstand (in kilometers) door de tijd (in uren).

#### Deel 1, functie maken

Maak nu een functie gemiddeldeSnelheid($tijd, $afstand), die twee parameters mee krijgt: $tijd in uren en $afstand in kilometers. De functie returned de gemiddelde afstand.

Gebruik onderstaande template.

```
function gemiddeldeSnelheid.....
...
...
...

//Je fietst 3 uur en je hebt 60 km afgelegd, dan is de gemiddelde snelheid 60/3 = 20 km/uur.
echo gemSnelheid(3, 60); // dit drukt 20 af

//Je zit 2 uur in de auto en je hebt 160 km afgelegd, dan is de gemiddelde snelheid 160/2 = 80 km/uur.
echo gemSnelheid(2, 160); //dit drukt 80 af
```

Op de plaats van de puntjes in de bovenstaande code maak je de functie en zorg je dat het werkt. Controleer of er inderdaad 20 en 80 wordt afgedrukt.

##### Deel 2, output netjes maken

Pas de code aan, zodat de output netjes wordt geformatteerd. De output moet er als volgt uit zien:

```
Je doet 3 uur over 60 kilometer; je gemiddelde snelheid was 20 km/uur.
Je doet 2 uur over 160 kilometer; je gemiddelde snelheid was 80 km/uur.
```

Denk er wel aan dat je de functie generiek houd en dat je alle taalelementen buiten de functie houd. De functie returned dus alleen een getal.

\--

# Quiz 1.2

(Totale tijd 50 minuten)

### Opgave 1

(10 min)

De functie *verschil* bepaald het verschil tussen twee getallen. De functie krijgt drie getallen mee en returned een verschil. Kijk naar de code en beschrijf precies wat de code doet. De code krijgt 3 argumenten mee, hoe wordt het verschil precies berekend?

(a) Beschrijf zo nauwkeurig mogelijk wat de functie doet. Zet dit als commentaar in je PHP-bestand.

(b) Er zit een (klein) foutje in de code, los dit op.

(c) Dan ziet er nog iets vreemds in de code, het is niet fout maar het kan beter. Kun je de code nog verder verbeteren?

Zet de juiste, verbeterde code in je PHP-bestand.

```
function verschil($a, $b, $c) {
    
	return (max($a, $b, $c) - min($a, $b, $c)
    
    return 0;
 }
     
$nummer1 = 10;
$nummer2 = 12;
$nummer3 = 6
echo verschil($nummer1, $nummer2, $nummer3); 
```

### Opgave 2

(20 minuten)

Maak een functie, middelste($nummer, $nummer, $nummer) die drie parameters mee krijgt. De return value van de functie moet het middelste getal zijn.

Bijvoorbeeld:

```
echo middelste(1,2,3)    // dit drukt 2 af
echo middelste(6,12,3)   // dit drukt 6af
echo middelste(-1,-2,-3) // dit drukt -2 af
echo middelste(0,2,3)    // dit drukt 2 af
```

Zet de functie middelste($getal1, $getal2, $getal3) in je PHP-bestand.

### Opgave 3

(20 minuten)

Maak nu een functie herhaaldAfdrukken($string, $aantal). De $string wordt $aantal keer afgedrukt. De functie bevat dus een echo en de functie returned niets.

Denk aan de fout afvang en aan juist inspringen!

Gebruik onderstaande template.

```
function herhaaldAfdrukken( $string, $aantal) {
	...
	...
	...
}

herhaaldAfdrukken('*',12);          // dit drukt ************ af
herhaaldAfdrukken('hello<br>',4);   // dit drukt hello<br>hello<br>hello<br>hello<br> af, dus in de browser is dat 4 maal een volgende regel
herhaaldAfdrukken('--.-- ',2);      // dit drukt --.-- --.-- af
```

Zet de functie in je PHP-bestand.

\--

# Quiz 1.3 - PHP1 - 1 juli

### Beoordeling

Je wordt in de eerste plaats beoordeeld of de code doet wat het moet doen. Daarnaast wordt je ook beoordeeld op netheid van de code. Er wordt daarbij vooral gelet op juist inspringen en op onnodige code of onnodige variabele.

Zet alle antwoorden in één PHP file (mag in commentaar) en schrijf telkens duidelijk de opgave erbij.

##### Puntentelling

<table border="1" id="bkmrk-opgave-punten-1-1.5-" style="border-collapse: collapse; width: 44.4444%;"><tbody><tr><td style="width: 27.1514%; background-color: #f0f0f0;">**Opgave**</td><td style="width: 17.293%; background-color: #f0f0f0;">**Punten**</td></tr><tr><td style="width: 27.1514%;">1</td><td style="width: 17.293%;">1.5</td></tr><tr><td style="width: 27.1514%;">2</td><td style="width: 17.293%;">1</td></tr><tr><td style="width: 27.1514%;">3</td><td style="width: 17.293%;">1</td></tr><tr><td style="width: 27.1514%;">4</td><td style="width: 17.293%;">1</td></tr><tr><td style="width: 27.1514%;">5</td><td style="width: 17.293%;">1</td></tr><tr><td style="width: 27.1514%;">6</td><td style="width: 17.293%;">1.5</td></tr><tr><td style="width: 27.1514%;">7</td><td style="width: 17.293%;">1.5</td></tr><tr><td style="width: 27.1514%;">8</td><td style="width: 17.293%;">1.5</td></tr><tr><td style="width: 27.1514%; background-color: #f0f0f0;">**TOTAAL**</td><td style="width: 17.293%; background-color: #f0f0f0;">**10**</td></tr></tbody></table>

##### Tijd

Tijd totaal 2 uur.

Tijd gaat lopen nadat alle opgaven zijn doorgelezen en zijn doorgenomen - tijdens doorlezen nog niets opzoeken.

#### Template

[Antwoorden-template is beschikbaar op deze pagina.](http://roc.ovh/attachments/41)

### Opgave 1

(10 minuten)

#### 1a

Je hebt het volgende array

```
$age =  array( array("Peter"=>"35", "Ben"=>"37", "Joe"=>"43"),
        array("Anna"=>"25", "Julia"=>"36", "Miranda"=>"13")  ) ;
```

Gebruik dit array en druk de leeftijd van Anna af. Je moet de leeftijd dus opzoeken en gebruik maken van het array ('echo 25' is dus geen goed antwoord).

*Schrijf de regel(s) code waarmee je dat doet op je antwoordenblad.*

#### 1b

Je hebt het volgende formulier

```
<form action="verwerk.php" method="get">
  Gebruikersnaam <input type="text" name="userName"> <br>
  <input type="submit" value="Submit">
</form>
```

In de PHP file verwerk.php wil je de Gebruikersnaam afdrukken. Hoe doe je dat.

*Schrijf de regel(s) code waarmee je dat doet op je antwoordenblad; je mag het antwoord in PHP-commentaar schrijven.*

#### 1c

Maak de volgende code netjes en zorgt dat die goed inspringt.

```
<?php
 for($i=0; $i<=100; $i++) {
$j=10;
while ($j) {
echo "*";
$j--;
}
 }
```

Zet de nette code (met inspringen) op je antwoordenblad.

#### 1d

Hoeveel sterretjes worden er in de code van opgave 1c afgedrukt?

*Schrijf op je antwoorden blad in PHP-commentaar (vul het aantal in op de plaats van de puntjes).*

```
// er worden ... sterretjes afgedrukt.
```

### Opgave 2

De volgende functie bepaald de middelste waarde van drie waarden. Dus als je `middelste2(3,6,2)` aanroept, dan zou je je 3 moeten terug krijgen, omdat 4 de waarde is die tussen 2 en 6 ligt.

Nu zit er een klein tik foutje in de code. Haal het foutje er uit en zorg dat de code goed werkt.

```PHP
<?php

function middelste($getal1, $getal2, $getal3) {
  $myArray=array($getal1, $getal2, $getal3);
  sort($myArray); // let op gebruik van de juiste sort
  if ( $myArray[0] == $myArray[1] || $myArray[1] == $myArray[2]) {
    return ("Er is geen middelste getal"); // of return false als foutmelding
  }
  return $myArray[0];
}
```

### Opgave 3

( 10 minuten)

Maak een stukje code dat alle getallen van 1 /tm 1000 afdrukt die deelbaar zijn door 3.

De code drukt dus af: 3, 6, 9, 12 ,15 ,1 8, 21, 24, 27,......., 993, 996, 999

Tip: je hoeft geen functie te maken, maar je moet wel gebruik maken van een loop

### Opgave 4

(15 minuten)

Op een website wordt een afgedrukt of het warm is in het lokaal of niet. Als de temperatuur meer dan 22 graden is dan is het warm. Beneden de 18 is het koud en vanaf 18 tot 22 is het normaal.

Maar een functie die als parameter de temperatuur mee krijgt en die 'koud', 'normaal', of 'warm' terug geeft.

<table border="1" id="bkmrk-functienaam-antwoord" style="border-collapse: collapse; width: 55.3086%;"><tbody><tr><td style="width: 216.35px;">**Functienaam**</td><td style="width: 230.717px;">lokaalStatus</td></tr><tr><td style="width: 216.35px;">**Input**</td><td style="width: 230.717px;">temperatuur, bijvoorbeeld 21</td></tr><tr><td style="width: 216.35px;">**Output (return value)** </td><td style="width: 230.717px;">koud, normaal, of warm</td></tr></tbody></table>

```PHP
<?php

function lokaalStatus($temperatuur) {
   ...
   ...

   ...
}

echo lokaalStatus(17); // dit drukt af koud
echo lokaalStatus(22); // dit drukt af normaal
echo lokaalStatus(23); // dit drukt af warm
echo lokaalStatus(24); // dit drukt af warm
```

### Opgave 5

(15 minuten)

Maak een functie die jouw multiple choice test kan invullen. Hiervoor moet je een telkens een letter a, b, c, d, e of f returnen. De letters worden willekeurig gekozen.

Tip: met de PHP functie

<span class="methodname">**rand**</span> ( <span class="methodparam"><span class="type">int</span> `$min`</span> , <span class="methodparam"><span class="type">int</span> `$max`</span> ) : <span class="type">int</span>

kun je een willekeurig getallen bedenken.

Zoek zelf even uit hoe je die functie kunt gebruiken.

<table border="1" id="bkmrk-functienaam-antwoord-0" style="border-collapse: collapse; width: 68.519%;"><tbody><tr><td style="width: 48.2143%;">**Functienaam**</td><td style="width: 75.4464%;">antwoord</td></tr><tr><td style="width: 48.2143%;">**Input**</td><td style="width: 75.4464%;"> </td></tr><tr><td style="width: 48.2143%;">**Output (return value)** </td><td style="width: 75.4464%;">a of b of c of d of e (willekeurig één letter)</td></tr></tbody></table>

```PHP
<?php
function antwoord() {
   ...
   ...
     
   ...
}

echo antwoord(); // dit returned één willekeurige letter a, b, c, d of e
echo antwoord(); // dit returned één willekeurige letter a, b, c, d of e
echo antwoord(); // dit returned één willekeurige letter a, b, c, d of e
```

### Opgave 6

(20 minute)

Maak een functie die een array met getallen meekrijgt. De functie returned *true* als alle getallen in het array gelijk zijn en de functie returned *false* als dat niet het geval is.

Indien een array met 0 elementen wordt meegegeven dan wordt er altijd false gereturned.

<table border="1" id="bkmrk-functienaam-allengel" style="border-collapse: collapse; width: 55.3086%;"><tbody><tr><td style="width: 25.4668%;">**Functienaam**</td><td style="width: 29.8418%;">allenGelijk</td></tr><tr><td style="width: 25.4668%;">**Input**</td><td style="width: 29.8418%;">array met getallen, bijv. \[2,2,2,2\]</td></tr><tr><td style="width: 25.4668%;">**Output (return value)** </td><td style="width: 29.8418%;">true of false</td></tr></tbody></table>

```PHP
<?php
function allenGelijk($array) {
  ...
  ...
  
  ...
}

// let op, json encode wordt gebruitk om ervoor te zorgen dat true of false netjes wordt afgedrukt
// (standaard wordt een false namelijk niet afgedrukt).

echo json_encode( allenGelijk([3,4,5]) ); // dit drukt false af
echo "<br>";

echo json_encode( allenGelijk([3,3,3]) ); // dit drukt true af
echo "<br>";

echo json_encode( allenGelijk([5]) );     // dit drukt true af
echo "<br>";

echo json_encode( allenGelijk([]) );     // dit drukt false af
echo "<br>";
```

### Opgave 7

(15 minuten)

Maak de functie maandNummer($maand). Als argument geef je een drie letter code (jan, feb, mrt, ...., dec) en je returned het maandnummer. Voor jan een 1, voor feb een 2, ....voor dec een 12.

Als er **ongeldige waarde** wordt opgegeven, bijvoorbeeld maandNummer('max') dan returned de functie **0.**

Je kunt de onderstaande code aanvullen.

<table border="1" id="bkmrk-functienaam-maandnum" style="border-collapse: collapse; width: 55.3086%; height: 87px;"><tbody><tr style="height: 29px;"><td style="width: 26.1364%; height: 29px;">**Functienaam**</td><td style="width: 29.1722%; height: 29px;">maandNummer</td></tr><tr style="height: 29px;"><td style="width: 26.1364%; height: 29px;">**Input**</td><td style="width: 29.1722%; height: 29px;">maand afkortng, bijvoorbeeld sep</td></tr><tr style="height: 29px;"><td style="width: 26.1364%; height: 29px;">**Output (return value)** </td><td style="width: 29.1722%; height: 29px;">maandnummer, bijvoorbeeld 9</td></tr></tbody></table>

```PHP
<?php
function maandNummer($dezeMaand) {
  maanden=array('jan','feb','mrt','apr','mei','jun','jul','aug','sep','okt','nov','dec');
  ...
  ...
    
  ...
}

echo maandNummer('mrt'); // dit returned 3
echo maandNummer('dec'); // dit returned 12
echo maandNummer('max'); // dit returned 0
```

### Opgave 8

(15 minuten)

Maak een functie telWaardeninArray($array). De functie krijgt een array met getallen mee en returned een getal dat aangeeft hoevaak de waarde 1 voorkomt in het array.

<table border="1" id="bkmrk-functienaam-telwaard" style="border-collapse: collapse; width: 55.3086%; height: 87px;"><tbody><tr style="height: 29px;"><td style="width: 26.1364%; height: 29px;">**Functienaam**</td><td style="width: 29.1722%; height: 29px;">telWaardeninArray</td></tr><tr style="height: 29px;"><td style="width: 26.1364%; height: 29px;">**Input**</td><td style="width: 29.1722%; height: 29px;">array met getallen</td></tr><tr style="height: 29px;"><td style="width: 26.1364%; height: 29px;">**Output (return value)** </td><td style="width: 29.1722%; height: 29px;">nummer dat aantal 1-en weergeeft in array</td></tr></tbody></table>

```PHP
<?php

function telWaardeninArray($array) {
  ...
  ...
  ...
}



$array=[1,2,3];
echo telWaardeninArray($array); // dit returned 1, er komt 1 x een 1 voor in $array

$array=[1,3,3,1,1,2,-1,0,2,1];
echo telWaardeninArray($array); // dit returned 4, er komt 4 x een 1voor in $array

$array=[6,6,6,6,6,6,6];
echo telWaardeninArray($array); // dit returned 0, er komt geen 1 voor in $array
```

# Quiz 2.1 (8a - 28 mei)

(totale tijd: 55 minuten voor vier opgaven)

### Opgave 1 - fouten uit code halen

(10 min)

De functie *verschil* bepaald het verschil tussen twee getallen. De functie krijgt twee getallen mee en returned het verschil. Dus verschil(12,10) en verschil10,12) returnen beide 2.

(a) Er zitten een fout in regel 3, haal deze fout uit de code.

(b) Er zit nog een fout in de code. De functie werkt namelijk niet in alle gevallen. Los deze bug op.

(c) Pas de code aan, zodat er juist wordt ingesprongen.

Lever de gehele gecorrigeerde code in, in je PHP-bestand.

```
function verschil($a, $b) {
    
$result =  $nummer1 - $nummer2;
    
if ( $result < 0 ) {
 	$result = $result * -1;
 	return $result;
 }

}
     
$nummer1 = 10;
$nummer2 = 12;
echo verschil($nummer1, $nummer2); // hier verwacht je een uitkomst van 2 ($nummer2-$nummer1), maar het werkt niet, help!
```

### Opgave 2 - middelste

(15 minuten)

Maak een functie, middelste($nummer, $nummer, $nummer) die drie parameters mee krijgt. De return value van de functie moet het middelste getal zijn.

Bijvoorbeeld:

```
echo middelste(1,2,3)    // dit drukt 2 af
echo middelste(6,12,3)   // dit drukt 6 af
echo middelste(-1,-2,-3) // dit drukt -2 af
echo middelste(0,2,3)    // dit drukt 2 af
```

Zet de functie middelste($getal1, $getal2, $getal3) in je PHP-bestand.

### Opgave 3 - gemiddelde snelheid

(15 minuten)

Maak een functie die die de gemiddelde snelheid uitrekent.

Stel:

```
Je fietst 3 uur en je hebt 60 km afgelegd, dan is de gemiddelde snelheid 60/3 = 20 km/uur.
Je zit 2 uur in de auto en je hebt 160 km afgelegd, dan is de gemiddelde snelheid 160/2 = 80 km/uur.
```

Om de gemiddelde snelheid te berekenen deel je dus de afstand (in kilometers) door de tijd (in uren).

#### Deel 1, functie maken

Maak nu een functie gemiddeldeSnelheid($tijd, $afstand), die twee parameters mee krijgt: $tijd in uren en $afstand in kilometers. De functie returned de gemiddelde afstand.

Gebruik onderstaande template.

```
function gemiddeldeSnelheid.....
...
...
...

//Je fietst 3 uur en je hebt 60 km afgelegd, dan is de gemiddelde snelheid 60/3 = 20 km/uur.
echo gemSnelheid(3, 60); // dit drukt 20 af

//Je zit 2 uur in de auto en je hebt 160 km afgelegd, dan is de gemiddelde snelheid 160/2 = 80 km/uur.
echo gemSnelheid(2, 160); //dit drukt 80 af
```

Op de plaats van de puntjes in de bovenstaande code maak je de functie en zorg je dat het werkt. Controleer of er inderdaad 20 en 80 wordt afgedrukt.

##### Deel 2, output netjes maken

Pas de code aan, zodat de output netjes wordt geformatteerd. De output moet er als volgt uit zien:

```
Je doet 3 uur over 60 kilometer; je gemiddelde snelheid was 20 km/uur.
Je doet 2 uur over 160 kilometer; je gemiddelde snelheid was 80 km/uur.
```

Denk er wel aan dat je de functie generiek houd en dat je alle taalelementen *buiten* de functie houd. De functie returned dus alleen een getal.

### Opgave 4 - herhaald afdrukken

(15 minuten)

Maak nu een functie herhaaldAfdrukken($string, $aantal). De $string wordt $aantal keer afgedrukt.

De functie bevat dus een echo en de functie returned niets.

Denk aan de fout afvang en aan juist inspringen!

Let op, je mag bij deze opdracht **<span style="background-color: #ffff00;">niet</span>** gebruik maken van de PHP-functie ***str\_repeat***

Gebruik onderstaande template.

```
function herhaaldAfdrukken( $string, $aantal) {
	...
	...
	...
}

herhaaldAfdrukken('*',12);          // dit drukt ************ af
herhaaldAfdrukken('hello<br>',4);   // dit drukt hello<br>hello<br>hello<br>hello<br> af, dus in de browser is dat 4 maal een volgende regel
herhaaldAfdrukken('--.-- ',2);      // dit drukt --.-- --.-- af
```

Zet de functie in je PHP-bestand.

\--

# Quiz 2.2

### Opgave 1

Maak een form dat de gebruiker vraagt om zijn geboortedatum in te vullen. Maak drie velden; jaar, maand en dag.

Dus stel dat je bent geboren op 21-juni-2001, dan vul je het form als volgt in:

![](https://www.roc.ovh/uploads/images/gallery/2020-05/scaled-1680-/image-1588876471490.png)

Het form heeft een action, action.php en de form-method is GET.

### Opgave 2

Hieronder staat een stukje code uit de action.php die je verder moet aanvullen (de regels 1 t/m mag je *niet* veranderen).

```
<?php

$months=['jan','feb','mrt','apr','mei','jun','jul','aug','sep','okt','nov','dec'];

$dag=$_GET['dag'];
$maand=$_GET['maand'];
$jaar=$_GET['jaar'];

...

 ?>
```

Maak deze code compleet door op de plaats van de puntjes code toe te voegen, zodat er wordt afgedrukt

```
U bent 21 jun in 2002 geboren
```

(dit is natuurlijk een voorbeeld en de echte datum die wordt afgedrukt komt uit het form).

### Opgave 3

Voeg deze functie aan de action.php

```
function verschilTussenTweeDatums($dateString1, $dateString2) {
  $date1 = strtotime($dateString1);
  $date2 = strtotime($dateString2);
  $diff = $date2 - $date1;
  $diff = $diff/60/60/24;
  return($diff);
}
```

Deze functie krijgt twee parameters mee. Dat zijn twee datums in het formaat yyyy-mm-dd (bijvoorbeeld "2020-05-07" voor 7 mei 2020). De eerste datum is de oudste. De functie returned het aantal dagen tussen de twee datums.

Gebruik deze functie om te bepalen hoe veel dagen je leeft en druk het volgende af.

```
U bent 21 jun in 2002 geboren
U leeft 6530 dagen
```

### Opgave 4

Maak een nieuwe functie waarmee je afdrukt hoeveel uren je leeft. De output wordt dan:

```
U bent 21 jun in 2002 geboren
U leeft 6530 dagen
U leeft 156720 dagen
```

# Quiz 2.3 -  PHP2 - 30 juni

### Beoordeling

Je wordt in de eerste plaats beoordeeld of de code doet wat het moet doen. Daarnaast wordt je ook beoordeeld op netheid van de code. Er wordt daarbij vooral gelet op juist inspringen en op onnodige code of onnodige variabele.

Zet alle antwoorden in één PHP file (mag in commentaar) en schrijf telkens duidelijk de opgave erbij. Je kunt de [template](http://roc.ovh/attachments/40) gebruiken.

##### Puntentelling

*(indicatief)*

<table border="1" id="bkmrk-opgave-punten-1-1.5-" style="border-collapse: collapse; width: 44.4444%;"><tbody><tr><td style="width: 27.1514%; background-color: #f0f0f0;">**Opgave**</td><td style="width: 17.293%; background-color: #f0f0f0;">**Punten**</td></tr><tr><td style="width: 27.1514%;">1</td><td style="width: 17.293%;">1.5</td></tr><tr><td style="width: 27.1514%;">2</td><td style="width: 17.293%;">1.5</td></tr><tr><td style="width: 27.1514%;">3</td><td style="width: 17.293%;">1</td></tr><tr><td style="width: 27.1514%;">4</td><td style="width: 17.293%;">1</td></tr><tr><td style="width: 27.1514%;">5</td><td style="width: 17.293%;">1.5</td></tr><tr><td style="width: 27.1514%;">6</td><td style="width: 17.293%;">1.5</td></tr><tr><td style="width: 27.1514%;">7</td><td style="width: 17.293%;">2</td></tr><tr><td style="width: 27.1514%; background-color: #f0f0f0;">**TOTAAL**</td><td style="width: 17.293%; background-color: #f0f0f0;">**10**</td></tr></tbody></table>

##### Tijd

Tijd totaal 1:50 uur.

Tijd gaat lopen nadat alle opgaven zijn doorgelezen en zijn doorgenomen - tijdens doorlezen nog niets opzoeken.

#### Template

[Antwoorden-template is beschikbaar op deze pagina.](http://roc.ovh/attachments/40)

### Opgave 1

(10 minuten)

#### 1a

Je hebt het volgende array

```
$age =  array( array("Peter"=>"35", "Ben"=>"37", "Joe"=>"43"),
        array("Anna"=>"25", "Julia"=>"36", "Miranda"=>"13")  ) ;
```

Gebruik dit array en druk de leeftijd van Anna af. Je moet de leeftijd dus opzoeken en gebruik maken van het array ('echo 25' is dus *geen* goed antwoord).

*Schrijf de regel(s) code waarmee je dat doet op je antwoordenblad.*

#### 1b

Je hebt het volgende formulier

```
<form action="verwerk.php" method="get">
  Gebruikersnaam <input type="text" name="userName"> <br>
  <input type="submit" value="Submit">
</form>
```

In de PHP file verwerk.php wil je de Gebruikersnaam afdrukken. Hoe doe je dat?

*Schrijf de regel(s) code waarmee je dat doet op je antwoordenblad; je mag het antwoord in PHP-commentaar schrijven.*

#### 1c

Hoeveel \* worden er door de volgende code afgedrukt?

```
<?php
for($i=0; $i<=100; $i++) {
	$j=10;
	while ($j) {
		echo "*";
		$j--;
	}
}
```

*Schrijf op je antwoorden blad in PHP-commentaar (vul het aantal in op de plaats van de puntjes).*

```
// er worden ... sterretjes afgedrukt.
```

### Opgave 2

( 10 minuten)

Maak een stukje code dat alle getallen van 1 /tm 1000 afdrukt die deelbaar zijn door 3.

De code drukt dus af: **3, 6, 9, 12 ,15 ,1 8, 21, 24, 27,......., 993, 996, 999.**

<span style="background-color: #ffff00;">Let op</span>, dat er tussen elk getal een komma en een spatie staat, behalve achter het laatste getal staat een punt.

Tip: je hoeft geen functie te maken, maar je moet wel gebruik maken van een loop

### Opgave 3

(15 minuten)

Op een website wordt afgedrukt of het warm is in een lokaal of niet. Als de temperatuur meer dan 22 graden is dan is het warm. Beneden de 18 is het koud en vanaf 18 tot 22 is het normaal.

Maar een functie die als parameter de temperatuur mee krijgt en die 'koud', 'normaal', of 'warm' terug geeft.

<table border="1" id="bkmrk-functienaam-antwoord" style="border-collapse: collapse; width: 55.3086%;"><tbody><tr><td style="width: 216.35px;">**Functienaam**</td><td style="width: 230.717px;">lokaalStatus</td></tr><tr><td style="width: 216.35px;">**Input**</td><td style="width: 230.717px;">temperatuur, bijvoorbeeld 21</td></tr><tr><td style="width: 216.35px;">**Output**</td><td style="width: 230.717px;">koud, normaal, of warm</td></tr></tbody></table>

```PHP
<? php

function lokaalStatus($temperatuur) {
   ...
   ...

   ...
}

echo lokaalStatus(17); // dit drukt af koud
echo lokaalStatus(22); // dit drukt af normaal
echo lokaalStatus(23); // dit drukt af warm
```

### Opgave 4

(15 minuten)

Maak een functie die jouw multiple choice test kan invullen. Hiervoor moet je een telkens een letter a, b, c, d, e of f returnen. De letters worden willekeurig (random) gekozen.

<table border="1" id="bkmrk-functienaam-antwoord-0" style="border-collapse: collapse; width: 55.3086%;"><tbody><tr><td style="width: 216.35px;">**Functienaam**</td><td style="width: 230.717px;">antwoord</td></tr><tr><td style="width: 216.35px;">**Input**</td><td style="width: 230.717px;"> </td></tr><tr><td style="width: 216.35px;">**Output**</td><td style="width: 230.717px;">a of b of c of d of e (willekeurig)</td></tr></tbody></table>

```PHP
<?php
function antwoord() {
   ...
   ...
     
   ...
}

echo antwoord(); // dit returned een willekeurige letter a, b, c, d of e
echo antwoord(); // dit returned een willekeurige letter a, b, c, d of e
echo antwoord(); // dit returned een willekeurige letter a, b, c, d of e
```

### Opgave 5

(20 minute)

Maak een functie die een array met getallen meekrijgt. De functie returned *true* als alle getallen in het array gelijk zijn en de functie returned *false* als dat niet het geval is.

Indien een array met 0 elementen wordt meegegeven dan wordt er altijd false gereturned.

<table border="1" id="bkmrk-functienaam-allengel" style="border-collapse: collapse; width: 55.3086%;"><tbody><tr><td style="width: 17.6543%;">**Functienaam**</td><td style="width: 37.6543%;">allenGelijk</td></tr><tr><td style="width: 17.6543%;">**Input**</td><td style="width: 37.6543%;">array met getallen, bijv. \[2,2,2,2\]</td></tr><tr><td style="width: 17.6543%;">**Output**</td><td style="width: 37.6543%;">true of false</td></tr></tbody></table>

```PHP
<?php
function allenGelijk($array) {
  ...
  ...
  
  ...
}

// let op, json encode wordt gebruitk om ervoor te zorgen dat true of false netjes wordt afgedrukt
// (standaard wordt een false namelijk niet afgedrukt).

echo json_encode( allenGelijk([3,4,5]) ); // dit drukt false af
echo "<br>";

echo json_encode( allenGelijk([3,3,3]) ); // dit drukt true af
echo "<br>";

echo json_encode( allenGelijk([5]) );     // dit drukt true af
echo "<br>";

echo json_encode( allenGelijk([]) );     // dit drukt false af
echo "<br>";
```

### Opgave 6

(15 minuten)

Maak de functie maandNummer($maand). Als argument geef je een drie letter code (jan, feb, mrt, ...., dec) en je returned het maandnummer. Voor jan een 1, voor feb een 2, ....voor dec een 12.

Als er **ongeldige waarde** wordt opgegeven, bijvoorbeeld maandNummer('max') dan returned de functie **0.**

Je kunt de onderstaande code aanvullen.

<table border="1" id="bkmrk-functienaam-maandnum" style="border-collapse: collapse; width: 55.3086%; height: 87px;"><tbody><tr style="height: 29px;"><td style="width: 17.6543%; height: 29px;">**Functienaam**</td><td style="width: 37.6543%; height: 29px;">maandNummer</td></tr><tr style="height: 29px;"><td style="width: 17.6543%; height: 29px;">**Input**</td><td style="width: 37.6543%; height: 29px;">maand afkorting, bijvoorbeeld sep</td></tr><tr style="height: 29px;"><td style="width: 17.6543%; height: 29px;">**Output**</td><td style="width: 37.6543%; height: 29px;">maandnummer, bijvoorbeeld 9</td></tr></tbody></table>

```PHP
<?php
function maandNummer($dezeMaand) {
  maanden=array('jan','feb','mrt','apr','mei','jun','jul','aug','sep','okt','nov','dec');
  ...
  ...
    
  ...
}

echo maandNummer('mrt'); // dit returned 3
echo maandNummer('dec'); // dit returned 12
echo maandNummer('max'); // dit returned 0
```

### Opgave 7

(25 minuten)

Schrijf een functie die een array met getallen mee krijgt. Als het array *meer* dan 2 elementen heeft dan return je het array maar je haalt de hoogste en laagste waarde eruit. De volgorde van de getallen moeten wel hetzelfde blijven.

Al de hoogste- of laagste waarde meerdere keren voorkomt dan haal je een hoogste en een laagste waarde uit het array, welke dat is maakt niet uit. Je haalt nooit meer dan twee waarden uit het array. De return value van de functie is dus een array waar twee waarden zijn uitgehaald. Zie voorbeelden:

<table border="1" id="bkmrk-input-output-uitleg-" style="border-collapse: collapse; width: 100%; height: 232px;"><tbody><tr style="height: 29px;"><td style="width: 31.7284%; background-color: #f0f0f0; height: 29px;">**Input**</td><td style="width: 34.1358%; background-color: #f0f0f0; height: 29px;">**Output**</td><td style="width: 34.1358%; background-color: #f0f0f0; height: 29px;">**uitleg**</td></tr><tr style="height: 29px;"><td style="width: 31.7284%; height: 29px;">2,3,4,5</td><td style="width: 34.1358%; height: 29px;">3,4</td><td style="width: 34.1358%; height: 29px;">2 en 5 zijn eruit gehaald</td></tr><tr style="height: 29px;"><td style="width: 31.7284%; height: 29px;">4,3,2,1</td><td style="width: 34.1358%; height: 29px;">3,2</td><td style="width: 34.1358%; height: 29px;">1 en 4 zijn er uit gehaald</td></tr><tr style="height: 29px;"><td style="width: 31.7284%; height: 29px;">2,2,2,2</td><td style="width: 34.1358%; height: 29px;">2,2</td><td style="width: 34.1358%; height: 29px;">2 en 2 zijn eruit gehaald</td></tr><tr style="height: 29px;"><td style="width: 31.7284%; height: 29px;">1,2,3</td><td style="width: 34.1358%; height: 29px;">2</td><td style="width: 34.1358%; height: 29px;">1 en 3 zijn eruit gehaald</td></tr><tr style="height: 29px;"><td style="width: 31.7284%; height: 29px;">1,2</td><td style="width: 34.1358%; height: 29px;">1,2</td><td style="width: 34.1358%; height: 29px;">er is niets gehaald</td></tr><tr style="height: 29px;"><td style="width: 31.7284%; height: 29px;">2,2,5,2,1,7,12,6</td><td style="width: 34.1358%; height: 29px;">2,2,5,2,7,6</td><td style="width: 34.1358%; height: 29px;">1 en 12 zijn eruit gehaald</td></tr><tr style="height: 29px;"><td style="width: 31.7284%; height: 29px;">1,4,3,5,3,3,5</td><td style="width: 34.1358%; height: 29px;">4,3,3,3,5 **of** 4,3,5,3,3</td><td style="width: 34.1358%; height: 29px;">de 1 en één 5 is eruit gehaald.</td></tr></tbody></table>

Als het array 2 of minder elementen heeft dan return je array ongewijzigd.

<table border="1" id="bkmrk-functienaam-mwaarden" style="border-collapse: collapse; width: 55.3086%; height: 87px;"><tbody><tr style="height: 29px;"><td style="width: 17.6543%; height: 29px;">**Functienaam**</td><td style="width: 37.6543%; height: 29px;">mWaarden</td></tr><tr style="height: 29px;"><td style="width: 17.6543%; height: 29px;">**Input**</td><td style="width: 37.6543%; height: 29px;">array getallen</td></tr><tr style="height: 29px;"><td style="width: 17.6543%; height: 29px;">**Output**</td><td style="width: 37.6543%; height: 29px;">array getallen</td></tr></tbody></table>

Probeer deze code zo ver mogelijk goed te krijgen. Als test zal elke input die hierboven in het voorbeeld staat worden getest. Als slecht een paar gevallen werken dan kun je ook punten krijgen voor deze vraag.

```PHP
<?php

// met deze code kan je je functie testen

print_r( mWaarden([2,3,4,5]) ); echo "<br>"; // Array ( [0] => 3 [1] => 4 )
print_r( mWaarden([4,3,2,1]) ); echo "<br>"; // Array ( [0] => 3 [1] => 2 )
print_r( mWaarden([2,2,2,2]) ); echo "<br>"; // Array ( [0] => 2 [1] => 2 )
print_r( mWaarden([1,2,3]) ); echo "<br>";   // Array ( [0] => 2 )
print_r( mWaarden([1,2]) ); echo "<br>";     // Array ( [0] => 1 [1] => 2 )
print_r( mWaarden([2,2,5,2,1,7,12,6]) ); echo "<br>";  // Array ( [0] => 2 [1] => 2 [2] => 5 [3] => 2 [4] => 7 [5] => 6 )
```

### Klaar?

PHP file inleveren in de opdracht in **Teams OITAOO8A PHP-3**

\--