Oefenopgaven Prakticum Imperatief Programmeren

In deze eerste serie practicumopgaven gaan we de mogelijkheden van Microsoft Visual Studio verkennen. Deze opgaven moeten wel gemaakt worden, maar hoeven niet ingeleverd te worden zoals de andere prakticumopgaven. Gebruik de Visual Studio tutorial voor uitleg over de bediening van de "Integrated Development Environment" (IDE).

Prakticum 13 september 2017

1. Filesysteem

a) (alleen op de computers in de practicumzalen) Zorg dat je de S-disk kunt gebruiken, je persoonlijke Storage Space.
b) Maak een directory "Imp" aan voor de files die je bij dit vak nodig gaat hebben.

2. Voorbeeldprogramma's

a) Download en unzip de Solution met alle voorbeeldprogramma's.
b) Open de solution in Visual Studio.
c) Zorg dat het programma "HalloWin1" het active project wordt.
d) Run het programma.
e) Bekijk de broncode van het programma.
f) Bekijk de broncode van HalloWin3.

Prakticum 15 september 2017

3. Console Application

a) Sluit de Solution met voorbeeldprogramma's.
b) Gebruik het template "Empty Project" om een nieuw project te maken met de naam "Leeftijd", en zorg ervoor dat die in een nieuwe Solution "Prakticum" terecht komt.
c) Maak in het project een nieuw broncode-bestand aan, en ik het programma "Hallo2" uit het collegediktaat over. Je merkt waarschijnlijk tijdens het typen dat Visual Studio je suggesties geeft voor methode-namen. Je kunt hier handig gebruik van maken zodat je niet bijvoorbeeld 'WriteLine' helemaal hoeft uit te schrijven.
d) Zorg dat in het project onder "References" de library "System" vermeld wordt. Voer het ingetypte programma uit.
e) De gebruiker van het programma moet nu op de Enter-toets drukken vanwege de "ReadLine" aan het eind van het programma. Verander dit zo dat de gebruiker op een willekeurige toets kan drukken. Gebruik de Help van Visual Studio om uit te zoeken welke methode je daarvoor nodig hebt.
f) Gebruik de Help om uit te zoeken hoe je met de klasse DateTime de huidige datum kunt vinden. Breid het programma uit zodat de datum op het scherm wordt geprint. (Welke properties zijn er nodig, en welke daarvan zijn er static? Hoe wordt het static-zijn in de Help aangegeven?)
g) Breid het programma uit zodat het de gebruiker om een geboortejaar vraagt. Print daarna een schatting van de leeftijd van de gebruiker. Het hierbij benodigde converteren van een string naar een getal heet "Parse". Zoek een geschikte methode daarvoor.

4. Windows Application

a) Maak een nieuw "Empty Project", en tik het programma "HalloWin2" in (of kopieer het uit de voorbeelddirectory).
b) Zorg dat in het project onder "References" de libraries "System", "System.Drawing" en "System.Windows.Forms" vermeld worden. In Visual Studio kun je de "Properties" van het project opvragen. Zorg er daarmee dat het programma ook echt als windows-programma wordt gedraaid.
c) Welke properties hebben een "Form" en een "Label" nog meer? Pas er een paar aan in het programma.
d) Welke controls zijn er nog meer behalve "Label"? Zet er een paar op het scherm.

5. Fouten

a) Introduceer een paar fouten in het programma (bijvoorbeeld: spelfout in een methode-naam, spelfout in een variabele-naam, puntkomma vergeten, aanhalingstekens vergeten, haakje vergeten, accolade vergeten). Welke soorten fouten herkent Visual Studio allemaal, en wat gebeurt er als je dubbelklikt op een fout?
b) Bij een aanroep van een statische methode of property staat er een klassenaam voor de punt, bij een niet-statische methode een object. Hoe klaagt de compiler als je dit verwisselt?
c) Maak een nieuw project aan met het template "Windows Forms Application". Verken de structuur van het programma.

Prakticum 20 september 2017

6. Tekenen

a) Maak een nieuw project aan, en zet er de tekst van het programma "HalloWin3" in.
b) Pas het programma aan zo dat, in plaats van de tekst, er een "Smiley" getekend wordt (en gele cirkel met een zwart randje, twee ogen en een lachende mond). Precieze vorm en kleur naar eigen smaak. Zoek in Help met welke methode je de mond kunt tekenen. Gebruik variabelen zo dat je nog wat kunt experimenteren met de positie en afmeting van het plaatje.
c) Verander de waarde van de variabele die de positie van het plaatje vastlegt. Zitten de ogen nog op de goede plek? Zo nee, pas het programma aan zo dat dat wel vanzelf goed gaat.

Lees nu eerst sectie 3.6, en/of bestudeer het voorbeeldprogramma "Huizen"

7. Methodes

a) Maak een nieuw project met een kopie van je Smiley-programma.
b) Verander de code zo dat er een methode komt om een smiley te tekenen. Geef de methode parameters voor relevante eigenschappen, zoals de positie en grootte van de smiley. Maar geef het geen onnodige parameters!
c) Roep je methode een paar keer aan met verschillende waarden voor de parameters.
d) Maak ook parameters voor de kleur van het gezicht en de kleur van de ogen, en voor de inkleurings-stijl van het gezicht. Gebruik diverse waardes bij het aanroepen van de methode.
e) Maak ook een parameter voor de "vrolijkheid" van de smiley: hoe groter het getal, hoe vrolijker.

8. Checksum

a) Bekijk je eigen 7-cijferige studentnummer. Vermenigvuldig het eerste cijfer met 7, het tweede cijfer met 6, enzovoort tot het laatste cijfer met 1, en tel alle resultaten op. Het resultaat is, als het goed is, deelbaar door 11. Zo niet, dan is het geen geldig studentnummer, of heb je een rekenfout gemaakt.
Hint: gebruik de methode Parse om de ingelezen tekst om te zetten in een getal. Het laatste cijfer van het getal kun je te pakken krijgen door handig gebruik te maken van de operator %. Daarna deel je het getal door 10, en pak je daarvan weer het laatste cijfer, en dat zo nog vijf keer.
b) Schrijf een (statische) methode met een studentnummer als parameter, waarmee gecontroleerd kan worden of een studentnummer klopt.
c) Maak een compleet programma dat de gebruiker om een studentnummer vraagt, en dan terugmeldt of dit nummer klopt. Je kunt er een console-application van maken, of kijk in hoofdstuk 5 en maak er een variant van het "CirkelCalc"-programma van.

Prakticum 22 september 2017

9. Muis volgen

Schrijf een programma dat een smiley tekent op de plek waar de muis staat. Het plaatje "volgt" dus de muis.
Hint: geef met een eigen methode een invulling aan het MouseMove event van het window. Declareer variabelen boven in de klasse, waarmee deze methode en de teken-methode kunnen communiceren. Zet in de muis-methode op het eind een aanroep van Invalidate, wat er voor zorgt dat er een Paint-event wordt geforceerd, waardoor de teken-methode automatisch wordt aangeroepen.

10. Eyes

Schrijf een programma dat twee grote cartoon-achtige ogen tekent (desgewenst aangevuld tot een complete smiley, maar dan wel met grote ogen, want je moet de pupil duidelijk los kunnen zien van de oogbol).
De pupillen van de ogen moeten worden getekend aan de rand van de oogbol, zo dat de ogen "kijken" in de richting van de muis.

Hint 1: maak een methode die verantwoordelijk is voor het tekenen van één oog, en roep die twee keer aan.
Hint 2: kijk naar de twee driehoeken in het rechter plaatje hierboven. Het midden van de oogbol en de positie van de muis zijn bekend. Daarmee kun je dan ook dx en dy bepalen, en vervolgens met Pythagoras ook d.
De afstand e is een vaste lengte, die alleen afhangt van de stralen van oogbol en pupil. Uit de verhouding van e en d, kun je nu de lengte ex bepalen als diezelfde fractie van dx, en evenzo ey. Daarmee heb je dus de positie van het midden van de pupil ten opzichte van het midden van de oogbol.