Programmeermethoden
Werkcollege 7: Derde opgave I

Het zevende werkcollege van het vak Programmeermethoden vindt plaats in zaal 302/304, zaal 303, zaal 306/308 en zalen 307 en 309 (de PC-zalen), op donderdag 19 oktober 2017, van 13:30 tot 15:15 uur voor de Informatica-studenten en op vrijdag 20 oktober 2017, van 13:30 tot 15:15 uur voor de Wiskunde-studenten. Anderen mogen kiezen. Het wordt verzorgd door de vaste staf.

Spreek/Vragenuur in zalen 302 ... 309: woensdag 18 oktober 2017, van circa 13:30 tot 15:15 uur; en donderdag 19 oktober 2017, van circa 15:15 tot 17:00 uur.

Voorbereiding

Als voorkennis wordt bekend verondersteld:

Het eigenlijke werkcollege

De derde programmeeropgave bestaat uit een menu-programma en de invulling daarvan. Verder wordt al snel duidelijk dat er een nette functie moet komen om getallen foutloos in te lezen. Het schrijven van het programma kan dan ook keurig in een aantal taken verdeeld worden.
Zo kan in eerste instantie een menu gemaakt worden waarbij de keuze sChoon leidt tot een regeltje op het scherm ("hier moet nog ge-sChoon-d worden"). In het programma is dat een functie-aanroep maakschoon ( ), waarbij de functie-body uit een cout << ... en wellicht een cin >> ... bestaat. Deze functie kan dan apart uitgewerkt worden, voor enkele opties misschien zelfs als een apart programma, en in een later stadium in het menu-programma gezet worden.
De meesten kiezen ervoor om het menu geen memberfunctie van de klasse life te laten zijn. Je moet dan soms wel een object van deze klasse "call by reference" doorgeven.

In de nu volgende opgaven wordt stap voor stap toegewerkt naar het beoogde eindresultaat. De volgorde ligt helemaal niet vast: zo kun je bijvoorbeeld eerst andere opties maken.

  1. Maak een menu-programma dat aan de gebruiker de volgende opties presenteert: s(C)hoon, (R)andom, (P)arameters en (S)toppen. Bij C, R en P komt alleen een tekstje op het scherm, bij S stopt het programma. Gebruik een switch. Alsjeblieft geen recursie, maar doe het met while-loops! Maak de keuze-opties locale variabelen.
  2. Zorg bij de optie (P)arameters voor een simpel submenu, waarbij T terug voert naar het hoofdmenu. Dit submenu, en ook de bijbehorende functie, ziet er "precies" hetzelfde uit als het hoofdmenu. Zorg dat er per (sub)menu één functie is.
    NB Roep in het submenu niet het hoofdmenu aan!
  3. Schrijf een functie die een optie inleest met cin.get ( ). Ruim eerst alle (eventuele) Enter's op, en pak dan de eerste niet-Enter.
  4. Schrijf een functie leesgetal die een getal karakter voor karakter inleest, wederom met cin.get ( ). Denk aan de parameters in de heading.
    Richt het zo in dat alles tot en met de eerstvolgende Enter wordt weggelezen, en dat daarvan een zinnig getal wordt gemaakt. Je kunt het bijvoorbeeld zo maken dat [Enter][Enter][Enter]abc12def34gh[Enter] wordt geinterpreteerd als 1234. (Hierbij stelt [Enter] het karakter '\n' voor.)
  5. Idem, maar nu moet het ingevoerde getal niet groter zijn dan een als value-parameter meegegeven bovengrens.
    Je kunt het bijvoorbeeld zo maken dat abc12def34gh[Enter] wordt geinterpreteerd als 123, als het getal kleiner moet zijn dan 1000.
    ====================== dit zou rond 20 oktober af moeten zijn =============================
  6. Maak "zelf" een random-generator. Gebruik de in het dictaat in Hoofdstuk 3.9.3 van het dictaat, gedeelte "aantekeningen bij de hoorcolleges", gesuggereerde methode; zie ook sheet 10. Gebruik een static variabele.
  7. Maak nu een klasse life, zie de sheets van het zevende college. Deze heeft onder meer een 2-dimensionaal array wereld als membervariabele, en memberfuncties als maakschoon ( ) en drukaf ( ). Ook hoogte, breedte, etc., zijn membervariabelen.
  8. Zorg ervoor dat de menu-opties goed aansluiten op de memberfuncties. Er zijn verschillende aanpakken mogelijk. Je kunt bijvoorbeeld steeds het object van klasse life doorgeven. In het hoofdmenu maak je een object MijnLife van klasse life, en bijvoorbeeld s(C)hoon is dan de aanroep MijnLife.maakschoon ( );.
  9. Maak de opties Drukaf, sChoon, Random (zie boven voor de random-generator). De functie drukaf (of print) wordt straks misschien wel mooier.
    Als voorbeeld: de functie maakschoon heeft een regel of 4. i
  10. Maak ook een constructor, die de membervariabelen de goede startwaarden geeft. Zorg voor eenvoudige functies om hoogte en breedte te wijzigen, en het percentage.
  11. En de rest ... mag je zelf verzinnen. Houd het simpel!

Huiswerk

Maak opgaven met arrays uit de opgavenbundel (Opgaven 31 tot en met 36).

De antwoorden op de opgaven worden tevens via WWW verspreid, evenals de uitwerkingen van oude tentamens. Als er vragen over de opgaven zijn, stel deze dan (ook) op het college.