Programmeren 1
Home

Programmeren 1

Herhaling
(oude mop) How do you get to Carnegie Hall?

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:

  1. De for-lus
  2. Arrays
  3. Exceptions
  4. De switch-constructie
  5. Files
  6. Enumerated types

Bekijk dit filmpje dat de foreach-lus uitlegt.

Oefeningen

Maak volgende oefeningen. Modeloplossingen komen 12 december online.

  1. Breid het programma OefeningenForEach uit het filmpje uit zodat er meer volledige zinnen geprint worden in DemonstreerForEach. 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.

  2. Pas je klasse OefeningenExceptions aan. Voeg vier methodes toe, genaamd TraceMethode1, TraceMethode2, TraceMethode3 en TraceMethode4. Elke methode roept de volgende op, dus TraceMethode1 roept TraceMethode2 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 in TraceMethode1 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.

  3. Pas je bestand Program.cs aan zodat het gebruik maakt van een switch-constructie in plaats van een lange opeenvolging van if-elses.

  4. Schrijf in OefeningenSwitch.cs twee nieuwe methodes, IsKlinker(string letter) en ControleerKlinker(). 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 een switch 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 string line heet) line.Length. Als de string langer is, wordt er een foutboodschap geprint. Anders wordt IsKlinker 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.

  5. Pas je switch uit de vorige oefening aan om minder return 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;
    
    en
    case "a":
    case "b":
      DoeIets();
      break;
    
    Gebruik dus de tweede vorm.

  6. Schrijf een klasse OefeningenEnums. Definieer hierin twee enums, Personage en Kleur. Voor Personage zijn er volgende waarden:

    • Donatello
    • Leonardo
    • Michelangelo
    • Raphael
    • Splinter
    • Shredder
    • Beabop
    • Rocksteady
    • April
    Voor Kleur heb je:
    • Paars
    • Blauw
    • Oranje
    • Rood
    Definieer vervolgens een methode Associeer(Personage personage) die de kleur die bij een personage hoort uitprint en hiervoor een switch gebruikt. Enkel de eerste vier namen krijgen een kleur, bij de rest print je: "Dit personage krijgt geen kleur." Schrijf ten slotte een methode AssocieerAllePersonages() die bovenstaande methode voor alle personages oproept. Je mag dit met de hand uitschrijven, want een enum doorlopen werkt anders dan een array doorlopen.

  7. 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 als Appender.cs en je vult zelf vier regels in. Als je al gehoord hebt van "append mode": dit gebruiken we niet, enkel ReadLine en WriteLine. 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 of langzalhijleven.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.

  8. 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, wordt true teruggegeven, anders false.

VN
2018-12-03