Oefentoets

Regels voor het tentamen:

Doel van het tentamen

Op het tentamen vind je een aantal opdrachten. Het doel van het tentamen is te demonstreren dat je zelfstandig een oplossing voor een probleem kunt ontwikkelen, en daarbij gebruik kunt maken van de basistechnieken van programmeren, zoals bijvoorbeeld de verschillende soorten loops, if-else-constructies, enzovoort.

Op het moment van het tentamen zou je alle opdrachten goed moeten kunnen maken zonder begeleiding. Maar, door de tijdsbeperking kan het best zijn dat je een opdracht niet kunt maken! Of er gaat iets mis. Dat hoeft geen probleem te zijn, als maar overtuigend zichtbaar is dat je het programmeren beheerst. Daarvoor hoef je niet alle opdrachten helemaal goed te hebben.

De oefentoets

Ook voor de oefentoets is het essentieel dat je deze maakt zonder gebruik van internet of hulp van anderen. Alleen zo begrijp je waar je zelf nog vastloopt.

Bij de oefentoets krijg je een selectie opgaven die afgestemd is op wat je op dit moment weet. De eerste opgaven kun je maken als je modules 4, 5 en 6 af hebt, voor de latere opgaven moet je module 7 en 8 bijna helemaal gedaan hebben.

Heb je tot en met module 6 af of bijna af?

Heb je tot en met module 8 af of bijna af?

Dat is een andere opzet dan het echte tentamen, waar de opdrachten allemaal van ongeveer hetzelfde niveau zijn. Voor die opgaven moet je echt de stof tot en met module 7/8 beheersen. Het oefententamen is dus niet representatief voor het tentamen qua “moeilijkheidsgraad”.

“Falen” bestaat niet bij deze oefentoets, ook niet als je geen enkele opdracht oplost binnen de tijd. Mocht het niet lukken, dan kun je naderhand hulp vragen of extra tijd nemen om het af te maken. Soms ligt het aan de manier van naar de opgaven kijken, soms is het een kwestie van wennen.

Waar we naar op zoek zijn

Je kunt in je uitwerking laten zien dat je:

In je uitwerking mag je alleen gebruik maken van de library-functies die behandeld zijn en wat eventueel in de opdracht vermeld staat.

Je krijgt bij het tentamen geen toegang tot je eigen eerder geschreven code of externe hulpbronnen.

Makelaar (t/m module 4)

De waarde van een huis in een bepaalde wijk is afhankelijk van het aantal vierkante meters. Bovendien maken het aantal badkamers en slaapkamers ook uit voor de prijs.

Schrijf de functie verkoopprijs die de prijs van een woning berekent.

$ ./makelaar
55 m2, 1 sk, 1 bk, wijk 1
De waarde van het huis is EUR 295000,-

150 m2, 3 sk, 3 bk, wijk 1
De waarde van het huis is EUR 826200,-

150 m2, 3 sk, 3 bk, wijk 2
De waarde van het huis is EUR 930000,-

Het bedrag moet precies zo geprint worden als hierboven: een getal bestaande uit een aantal cijfers en dan een komma en een streepje er direct achter.

Header (t/m module 5)

Schrijf de functie header die een header comment genereert voor de gebruiker. Het programma moet als volgt werken:

$ ./header
/*******************************************************************************
* Author: Doug Lloyd                                                           *
* Date: 02/10/2023                                                             *
* Description: Prints hello world                                              *
*******************************************************************************/
/*******************************************************************************
* Author: Martijn Stegeman                                                     *
* Date: 01/05/2021                                                             *
* Description: Print Mario's piramide                                          *
*******************************************************************************/

De geprinte header is altijd precies 80 karakters breed. Zorg dat je exact de vorm volgt die hierboven in de voorbeelden zichtbaar is! Zo staan er nergens in de header spaties aan het begin van de regel. Een belangrijk aspect van de opgave is dat de sterretjes helemaal aan het eind van de regen staan, keurig onder elkaar.

Let op, je hoeft geen rekening te houden met extreem lange namen en descriptions. Je mag er vanuit gaan dat alles, inclusief de sterretjes op één regel van 80 breed passen.

Collatz (t/m module 6)

Schrijf de functie collatz dat een collatz-reeks uitprint. De collatz-reeks van een bepaald getal telt uiteindelijk altijd terug tot het getal 1.

Hiervoor moet je elke stap één regel toepassen:

De collatz-reeksen werken helemaal met gehele getallen, dus integers.

Het programma moet als volgt werken:

$ ./collatz
Collatz beginnend bij 8
Stap 1: 8
Stap 2: 4
Stap 3: 2
Stap 4: 1
Collatz beginnend bij 10
Stap 1: 10
Stap 2: 5
Stap 3: 16
Stap 4: 8
Stap 5: 4
Stap 6: 2
Stap 7: 1

Tip: een even getal is deelbaar door 2. Dus getal % 2 is gelijk aan 0.

Spam (t/m module 7)

Omdat je mailbox vol stroomt met spam ga je zelf een spamfilter schrijven. Je ontdekt dat spammers vaak woorden als “lottery”, “cash” of “money” vervangen voor “lo||ery”, “Ca$h” of M0n3y. Tijd om dit op te lossen! Door de verhouding tussen het aantal spaties, hoofdletters, kleine letters overige karakters te meten kan je inschatten of een email wel of geen spam is (nou ja, min of meer).

Schrijf de functie spam_check die een email als spam of als normale mail classificeert. Een mail is spam als deze meer dan 10% niet-alfabetische karakters bevat. Zorg dat je het percentage netjes afrondt vóór je bepaalt of het spam is. Daarvoor kan je de round-functie gebruiken. Maar let op: spaties worden helemaal genegeerd en niet meegeteld in de berekening (tel na in het eerste voorbeeld).

$ ./spam
-> "CaZhh M0n3y"
Er zijn 20 procent niet-alfabetische karakters.
Deze mail is spam.

-> "Dit was zeker geen spam!"
Er zijn 5 procent niet-alfabetische karakters.
Deze mail is normaal.

-> ""
Deze mail heeft geen subject.

Afgebroken (t/m module 7)

Je hebt een tekst uit de krant gekopiëerd. Alleen er staan nog verdwaalde afbreekstreepjes in de tekst van woorden die niet meer op de regel pasten in het oorspronkelijke bericht. Elk onterecht afbreekstreepje in de originele tekst wordt gevolgd door een spatie.

Schrijf de functie afgebroken die de gegeven tekst print zonder deze streepjes en spaties.

$ ./afgebroken
Origineel: Nederlanders worden steeds ouder, vooral door- dat ze na hun 65ste ...
Nederlanders worden steeds ouder, vooral doordat ze na hun 65ste ...

Origineel: Over de identiteit van de schutter zegt de po- litie: 'Als het de ...
Over de identiteit van de schutter zegt de politie: 'Als het de ...

Origineel: Een 36-jarige Geldropse heeft deze week een in- breker in haar ...
Een 36-jarige Geldropse heeft deze week een inbreker in haar ...

Leestijd (t/m module 8)

Laten we er vanuit gaan dat je 250 woorden per minuut leest en dat een pagina van een boek gemiddeld 300 woorden bevat.

Schrijf de functie leestijd die het totaal aantal gelezen pagina’s berekent en print, gegeven een array met daarin één of meer getallen die het aantal gelezen minuten voorstellen per leessessie. Rond af op hele pagina’s. Voor het afronden kun je de round-functie gebruiken.

$ ./leestijd
{ 35, 50, 10, 15 }
Je hebt ongeveer 92 pagina's gelezen.
{ }
Je hebt niet gelezen.