Hints Het Menu

De tweede programmeeropgeve van het vak Inleiding programmeren (C++) - Life Science & Technology heet Het Menu.

Het programma moet aan het begin op het beeldscherm laten zien wie de makers zijn, wat hun jaar van aankomst is, welke opgave het is, wat de gebruiker te wachten en te doen staat, de datum waarop het programma gemaakt is, enzovoorts. Dit noemen we het infoblokje. Probeer dit er een beetje aardig uit te laten zien: maak er een eenvoudig kader omheen of iets dergelijks.

De opgave bestaat uit de menu-opties (in feite Elf, Sorteren, Mastermind en Klok) en uit het eigenlijke menu-programma. Het schrijven van het programma kan dan ook netjes in een vijftal taken verdeeld worden.
Zo kan in eerste instantie een menu gemaakt worden waarbij de keuze Klok leidt tot een regeltje op het scherm ("hier moet de tijd nog komen"). In het programma is dat een functie-aanroep Klok, waarbij de functie-body uit een cout << ... en wellicht een cin >> ... bestaat. Deze functie kan dan apart uitgewerkt worden, zelfs als een apart programma, en in een later stadium (als de tijd goed werkt) in het menu-programma gezet worden. Als de opgave door twee personen gemaakt wordt kan hier verstandig worden samengewerkt.

In de nu volgende opmerkingen wordt stap voor stap toegewerkt naar het beoogde eindresultaat. De volgorde ligt helemaal niet vast: zo kun je bijvoorbeeld eerst ook de optie Klok maken.

  1. Maak een menu-programma dat aan de gebruiker drie opties presenteert: E(xperiment), O(ntspanning) en S(toppen). Bij E en O komt alleen een tekstje op het scherm, en de vraag om een Enter, bij S stopt het programma. Gebruik eventueel een switch, zie Ammeraal, Hoofdstuk 2.6. Alsjeblieft geen recursie, maar doe het met while-loops! Maak de keuze-opties locale variabelen.
  2. Idem, maar nu leidt E tot een nieuw menu, met opties S(orteren), E(lf) en T(erug), waarbij T terug voert naar het hoofdmenu. S en E leveren weer alleen een tekstje, terwijl je in hetzelfde submenu blijft.
  3. Doe analoog het Ontspannings-submenu.
  4. De optie Elf — uiteraard in een functie. Vraag aan de gebruiker om drie getallen (drie vragen, drie antwoorden). Schrijf een functie int elf (int getal) die de "alternerende som van de cijfers" van getal berekent en retourneert. Hint: gebruik % 10 en / 10.
  5. Maak deze optie af. Geef adequate teksten op het beeldscherm, met name als de elf-proef positief/negatief uitvalt.
  6. Maak een random-generator. Gebruik de in het dictaat in Hoofdstuk 3.5.3 gesuggereerde methode. Vul hiermee een array.
  7. Maak de optie Sorteren. Schrijf hiertoe een functie sorteer — zie de opgave voor de omschrijving van de methode. Bedenk een eenvoudige manier om de resultaten te presenteren, ook als het array wat groot is.
  8. Nu de optie Mastermind. Gebruik de random-generator om een "willekeurige" code aan te maken..
  9. Schrijf een functie die gegeven twee arrays met getallen (de juiste code en de gok) het "mastermind-resultaat" afdrukt. Vooral lastig: meerdee voorkomens van hetzelfde getale in code en/of gok.
  10. Maak de optie af.
  11. En dan de optie Klok. Druk de tijd gewoon (digitaal, in cijfers dus) af. Het volgende stukje code geeft hopelijk aanwijzingen. Probeer het niet allemaal te begrijpen, maar kopieer de benodigde gedeeltes. Zie ook Ammeraal, Hoofdstuk 11.9.
    tm* pointer;    // pointer naar struct tm
                    // (een struct lijkt op een class)
    time_t t = time (NULL);   // seconden sinds ...
    pointer = localtime (&t); // omzetten naar een struct
                    // nu bevat pointer->tm_sec de tijd in seconden, etcetera:
    cout << pointer->tm_sec << endl;
                    // zie verder time.h (voor uren, minuten, dag,...)

    Waar zit de file time.h? Meestal in een include-directory.
  12. Maak met een willekeurige editor een eenvoudige tekstfile met twee regels: de doordeweekse en de weekend boodschap. Laat deze door het C++-programma afdrukken, bijvoorbeeld in eerste instantie via de keuze van de gebruiker: 1 voor de doordeweekse en 2 voor de weekend boodschap.
  13. Maak de optie Klok af.
Rond nu de tweede programmeeropgave af.


Vragen en/of opmerkingen kunnen worden gestuurd naar: kosters@liacs.nl.

4 februari 2004 - http://www.liacs.nl/home/kosters/lst/hints04op2.html