
Programmeren 1
Herhalingsoefeningen
Doelstelling
We zien geen nieuwe leerstof. We maken oefeningen uit drie categorieën en er is een vierde categorie voorzien voor wie heel vlot door de oefeningen gaat:
- Makkelijke vragen: er komen twee vragen van dit type op het examen in tweede zit, elk op 2,5 punten.
- Realistische vragen: er komen drie vragen van dit type op het examen in tweede zit, elk op 5 punten.
- Uitdagingen: deze vragen zijn iets moeilijker dan wat je op het examen zal krijgen, maar niet veel moeilijker. Ze vormen dus een goede voorbereiding.
- Grotere uitdagingen: deze vragen zijn een stuk moeilijker dan wat je op het examen zal krijgen. Je krijgt ook minder instructies.
Herhalingsoefeningen
.
Makkelijkere vragen:
- Schrijf een methode
Greet()
die de gebruiker om zijn naam vraagt en dan"Hallo, GEBRUIKER!"
op het scherm afprint. Zorg ervoor dat"GEBRUIKER"
wordt vervangen door wat de gebruiker heeft ingevoerd. Als ik"Vincent"
invoer, wordt er dus"Hallo, Vincent!"
afgeprint. - Schrijf een methode
SuggestOutfit()
die de gebruiker vraagt om de temperatuur (alsint
) in te geven. Als de gebruiker een temperatuur beneden de 15 ingeeft, wordt een bericht"Doe maar een jas aan!"
geprint. Als de gebruiker minstens 15 ingeeft, wordt een bericht"Geen jas nodig!"
afgeprint. Je mag veronderstellen dat de gebruiker enkelint
s probeert in te geven. - Schrijf een
Enum
met als naamRole
en met als elementenTANK
,HEALER
,SWEEPER
,SCOUT
.
Realistische vragen:
- Schrijf een methode
Sum(int[] numbers)
die de som van alle getallen innumbers
berekent en het resultaat afprint. - Schrijf een methode
DescribeRole
die als argument eenRole
krijgt. Deze print niets, maar geeft een resultaat terug. Voor de verschillende rollen (in dezelfde volgorde als eerder) zijn de resultaten:"incasseert"
"geneest"
"creëert ruimte"
"verkent het terrein"
- Schrijf een struct
Time
met volgende velden van het typeint
:Seconds
,Minutes
enHours
. Schrijf ook een methodeAddOneSecond
die eenTime
als argument krijgt en een nieuweTime
teruggeeft die een seconde later voorstelt. Schrijf ook een methodeAddOneHour
met hetzelfde soort argument en return type en die werkt doorAddOneSecond
3600 keer op te roepen. - Maak oefening 5 van de vorige les (met de klasse
Car
) - Schrijf een methode
Factorial(int n)
die de "faculteit" van het getaln
berekent. De faculteit vann
isn * (n-1) * (n-2) * ... * 2 * 1
. - Schrijf een struct
Player
met twee velden: een rol van het type dat je in de vierde makkelijkere vraag moet aanmaken en een naam (van typestring
). Schrijf ook een methodeDescribePlayer
die als argument eenPlayer
krijgt en die de naam van de speler afprint, gevolgd door ", die VERVULT ROL!". "VERVULT ROL" wordt ingevuld naargelang de rol van de speler. Bijvoorbeeld voor een speler met naam Vincent en rolHEALER
wordt"Vincent, die geneest!"
afgeprint. - Schrijf een methode
JoinFiles
met drie argumenten. Elk argument is de naam van een bestand. De methode plakt de inhoud van het tweede bestand achter de inhoud van het eerste bestand en schrijft het resultaat weg in het derde bestand. - Schrijf een methode
GetYesOrNo(string question)
. Deze toontquestion
aan de gebruiker en leest dan een lijn in. Als de invoer"yes"
of"no"
is, wordttrue
offalse
teruggegeven. Als de invoer iets anders is, wordt de vraag herhaald en wordt er opnieuw invoer gelezen, totdat de gebruiker een geldig antwoord heeft gegeven. - Schrijf een methode
DivideOne()
. Deze leest een getal in en print het resultaat van de deling van 1.0 door het ingelezen getal. Zorg ervoor dat er een foutboodschap wordt geprint als de gebruiker iets ingeeft waardoor deze deling niet kan worden uitgevoerd. Gebruik géénif
om na te gaan of de deling wel mogelijk is. - Breid de eerdere oefening uit waarbij je twee bestanden aan elkaar moest hangen. Zorg ervoor dat er een foutboodschap wordt weergegeven als minstens één van de drie bestanden niet bestaat.
Uitdagingen:
- Maak oefening 6 van de vorige les
- Schrijf een methode
Pyramid(int height)
. Deze krijgt als argument een getal dat de hoogte van een pyramide voorstelt. Ze print dan een pyramide van die hoogte, opgebouwd uit sterretjes. Bijvoorbeeld, als de gebruiker "4" intypt, print de methode:* *** ***** *******
- Een schaakbord telt 8 rijen en 8 kolommen. Een paard beweegt op een schaakbord altijd in een "L", waarbij het lange beentje 2 vakjes voorstelt en het korte 1 vakje. Een beweging kan beginnen met het lange beentje of met het korte beentje. Schrijf een methode
MoveHorse(int row, int column)
die de huidige rij en kolom van een paard als argumenten krijgt. Ze geeft geen resultaat terug, maar print een tekening van het schaakbord. Hierbij wordt elke positie die het paard niet kan bereiken getekend als een punt ("."
) en elke positie die het paard wel kan bereiken als een sterretje ("*"
). - Schrijf een methode
DrawX(int size)
die een "X" tekent in een rooster van "O"-symbolen. Dit rooster heeftsize
rijen ensize
kolommen. Voorsize
3 wordt er bijvoorbeeld dit getekend:XOX OXO XOX
Voorsize
4 wordt er dit getekend:XOOX OXXO OXXO XOOX
Grote uitdagingen
- Breid je klasse
BubbleSorter
uit met een methodeBubbleSort
. Deze krijgt als invoer een array van getallen en past de array aan zodat hij gesorteerd is. Ze geeft geen resultaat terug. Dit werkt als volgt: de methode controleert eerst of de invoer al gesorteerd is (met de methode van dezelfde klasse die je al hebt) en doet niets als dat het geval is. Anders doorloopt ze de hele array en wisselt ze elk element dat kleiner is dan het element ervoor met dat element ervoor. Daarna controleert ze of het resultaat gesorteerd is en herhaalt ze dezelfde stap indien nodig, tot de hele array gesorteerd is. Schrijf gerust enkele extra methodes om de methode op te splitsen in kleinere taakjes. - Schrijf een methode
PlayOXO
. Deze tekent eerst een rooster van drie rijen en kolommen, waarop eerst allemaal punten staan. Dan vraagt ze speler 1 om een "O" of een "X" in te vullen en vraagt ze op welke plaats dit teken moet komen. Dan vraagt ze hetzelfde aan speler 2, enzovoort. Als er ergens "OXO" gevormd is (in een rij, kolom of diagonaal), print ze een bericht dat de huidige speler het spel wint. Schrijf gerust enkele extra methodes om de methode op te splitsen in kleinere taakjes.
Eerste zit
Het examen in eerste zit is mondeling. Je legt kort enkele stukjes code uit die we in de les gemaakt hebben. Wees een kwartier op voorhand aanwezig.
- 13:30 Adem Cetinel
- 13:37 Jason Corthals
- 13:44 Bert De Bleser
- 13:51 Hannes den Ouden
- 13:58 Toon Kennis
- 14:05 Cédric Geeraerts
- 14:12 Bavo Geutjes
- 14:19 Seppe Gevels
- 14:26 Larissa Hamaekers
- 14:33 Arthur Huybrechts
- 14:40 Patrick De Wolf
- 14:47 Hervé Kluft
- 14:54 Gillian Lasser
- 15:01 Max Loubry
- 15:08 Nash Muylle
- 15:15 Simen Raes
- 15:22 Zeger Soers
- 15:29 Vincent Somers
- 15:36 Yannick Van Damme
- 15:43 Arne Van Der Auwermeulen
- 15:50 Ilias Yahiaui
Tweede zit
Het examen in tweede zit duurt even lang als de les, dus 2 uur en 35 minuten. Je mag gebruik maken van het Yellow Book, nota's op papier of andere handboeken. Je mag geen gebruik maken van "vraag en antwoord"-websites zoals StackOverflow. Je mag werken op Cloud9 of in Visual Studio of Visual Code en je mag je bestaande code op Cloud9 raadplegen. Je mag uiteraard niet communiceren met medecursisten tijdens het examen. Dit houdt ook in dat je niet in de workspace van medecursisten mag gaan kijken. Om dit te garanderen, gebruiken we Veyon. Als je deze software niet op je laptop kan installeren, maak je voor het examen gebruik van een desktop van het CVO. Je krijgt twee "makkelijkere" vragen en drie "realistische" vragen. Als je klaar bent met de vragen, maak je een zip en stuur je alles naar mij.