
Programmeren 1
Herhaling
Doelstelling
We leren werken met de foreach-lus. Verder maken we oefeningen op verschillende concepten uit recente lessen.
Leerpad
Herhaal indien nodig volgende concepten uit eerdere lessen:
- De for-lus
- Arrays
- Exceptions
- De switch-constructie
- Files
- Enumerated types
Bekijk dit filmpje dat de foreach-lus uitlegt.
Oefeningen
Maak volgende oefeningen. Modeloplossingen komen 12 december online.
Breid het programma
OefeningenForEach
uit het filmpje uit zodat er meer volledige zinnen geprint worden inDemonstreerForEach
. Voor elk dier komt het woordje "De", na elk werkwoord kunnen drie woorden komen: "goed", "slecht" en "graag". Aan het einde van elke zin komt een punt. Zorg ervoor dat elke mogelijke zin die je op deze manier kan vormen wordt afgeprint.Pas je klasse
OefeningenExceptions
aan. Voeg vier methodes toe, genaamdTraceMethode1
,TraceMethode2
,TraceMethode3
enTraceMethode4
. Elke methode roept de volgende op, dusTraceMethode1
roeptTraceMethode2
op enzovoort. De laatste,TraceMethode4
gooit meteen een exception. Vang in elke methode de exception op door af te printen van welke methode de fout komt en welke methode actief is op het moment van het opvangen. Na het printen gooi je de exception opnieuw. Alleen inTraceMethode1
hoef je de exception niet opnieuw te gooien. Je programma zou dus bijvoorbeeld volgende tekst kunnen printen: "Er trad een exception op tijdens het oproepen van TraceMethode4. Gevangen in TraceMethode3 en doorgegeven. Er trad een exception op tijdens het oproepen van TraceMethode3. Gevangen in TraceMethode2 en doorgegeven. Er trad een exception op tijdens het oproepen van TraceMethode2. Gevangen in TraceMethode1.Pas je bestand
Program.cs
aan zodat het gebruik maakt van een switch-constructie in plaats van een lange opeenvolging van if-elses.Schrijf in
OefeningenSwitch.cs
twee nieuwe methodes,IsKlinker(string letter)
enControleerKlinker()
. De eerste krijgt een string van één letter en geeft een boolean terug die uitdrukt of het een klinker ("a","e","i","o" of "u") is of niet. Gebruik hiervoor eenswitch
en schrijf zo weinig mogelijk verschillende gevallen. De tweede leest een regel tekst in en controleert eerst de lengte. Deze moet 1 zijn, anders is de regel tekst sowieso geen klinker. Daarvoor gebruik je (als je stringline
heet)line.Length
. Als de string langer is, wordt er een foutboodschap geprint. Anders wordtIsKlinker
gebruikt om na te gaan of het een klinker is en wordt "Het is een klinker." of "Het is geen klinker." geprint, naargelang wat voor letter het is.Pas je
switch
uit de vorige oefening aan om minderreturn
statements te bevatten. Hiervoor groepeer je cases: als je twee cases hebt, bijvoorbeeld "a" en "b" die tot hetzelfde resultaat leiden, zijn volgende stukjes code identiek:case "a": DoeIets(); break; case "b": DoeIets(); break;
encase "a": case "b": DoeIets(); break;
Gebruik dus de tweede vorm.Schrijf een klasse
OefeningenEnums
. Definieer hierin twee enums,Personage
enKleur
. VoorPersonage
zijn er volgende waarden:- Donatello
- Leonardo
- Michelangelo
- Raphael
- Splinter
- Shredder
- Beabop
- Rocksteady
- April
Kleur
heb je:- Paars
- Blauw
- Oranje
- Rood
Associeer(Personage personage)
die de kleur die bij een personage hoort uitprint en hiervoor eenswitch
gebruikt. Enkel de eerste vier namen krijgen een kleur, bij de rest print je: "Dit personage krijgt geen kleur." Schrijf ten slotte een methodeAssocieerAllePersonages()
die bovenstaande methode voor alle personages oproept. Je mag dit met de hand uitschrijven, want een enum doorlopen werkt anders dan een array doorlopen.Schrijf een klasse
Appender
. Deze heeft een methode,AppendGloria
. Deze methode opent een bestand van precies vier regels,langzalhijleven.txt
en voegt drie regels toe aan het einde, namelijk "In de gloria!", "In de gloria!" en "Hiep hiep hiep hoera!". Dit bestand plaats je in dezelfde map alsAppender.cs
en je vult zelf vier regels in. Als je al gehoord hebt van "append mode": dit gebruiken we niet, enkelReadLine
enWriteLine
. Enkel de concepten uit de les (of het Yellow Book, voor wie deze niet kon bijwonen) zijn hier nodig. Test je programma grondig. Controleer bij het schrijven ook regelmatig oflangzalhijleven.txt
nog steeds de vier oorspronkelijke regels bevat. Wanneer je met bestanden leert werken, gebeurt het wel eens dat je per ongeluk een bestand wist.Schrijf een klasse
BubbleSorter
. Deze heeft één methode:IsSorted(int[] arr)
. De methode controleert of een lijst van getallen gesorteerd is. Dat is zo wanneer ieder element kleiner dan of gelijk aan het volgende element is. Als de lijst gesorteerd is, wordttrue
teruggegeven, andersfalse
.