In onderstaande oefeningen zijn kleuren gebruikt. Deze dienen aleen om de structuren makkelijker terug te kunnen herkennen. Ze worden niet standaard zo gebruikt. De dunne rood/roze balken zijn ook geen standaard gebruik. Ze zijn toegevoegd om de scheiding tussen verschillende functionele blokken aan te geven.
Specificatie die bij deze opdracht zou kunnen horen: Maak een programma dat de eerste 10 regels van een tafel kan afdrukken. Aan het begin van het programma moet er eerst gevraagd worden welke tafel er gemaakt moet worden en ter bevestiging afgedrukt worden op het scherm. Uitleg: In de bovenstaande oefening zie je in het eerste blokje een LEES en een SCHRIJF opdracht. Dit is nog lesstof uit het tweede trimester. Een LEES opdracht verdeelt zich in de broncode altijd over 2 regels. De eerste drukt de vaste tekst af welke tussen de “ en “ staat (dubbele quotes). De tweede regel leest daadwerkelijk een waarde in in de variabele die op het eind van de regel genoemd wordt. We hebben hier een getal nodig. De SCHRIJF opdracht moet in dit geval 2 delen op het scherm zetten: een stuk vaste tekst (tussen de “ en “) en in broncode ‘plak’ je de waarde van de zojuist ingelezen variabele varTafel er achter met het + teken. Het laatste (blauwe) blok behoort tot de nieuwe lesstof maa r herken je wellicht nog uit CB2. Het is een iteratie en herhaalt een vast aantal keren, ideaal voor deze opdracht. In het voorbeeld hierboven kiezen we een loop variabele met de naam varT. Het laat het programma tien keer herhalen van 1 t/m 10. Het zijn de 2 witte blokjes ertussen die herhaald worden. Eerst wordt uitgerekend wat het resultaat is wanneer je de loop variabele vermenigvuldigt met de ingelezen tafel-waarde. Het resultaat wordt afgedrukt als een regel waarin variabele waarden en vaste tekst aan elkaar geplakt worden.
Specificatie die bij deze opdracht zou kunnen horen: Breidt oefening 1 uit. Voeg een herhaling toe zodat je telkens na het uitvoeren van de tafel opnieuw om een volgende waarde vraagt voor het berekenen van de volgende tafel. Het programma moet echter stoppen als de waarde 0 wordt ingevoerd. Uitleg: Uiteraard lijkt deze PSD heel erg op die van opdracht 1. De eerste regel is dezelfde gebleven, we vragen welke tafel moet worden gemaakt. Daarna voegen we een iteratie met conditie toe, de ZOLANG. Het tussen haakjes zetten van de conditie is niet verplicht maar soms wel handig. De combinatie <> betekent ‘ongelijk aan’. Door het hele ZOLANG statement geel te maken zie je makkelijker tot waar het reikt. Alles vanaf de eerste wiitte regel met SCHRIJF er in t/m de laatste groene regel wordt herhaald. De laatste groene regel moet worden toegevoegd binnen het bereik van het ZOLANG statement om ervoor te zorgen dat de conditie ooit een keer ONWAAR wordt. Anders blijf je de conditie die bovenin het gele gedeelte staat steeds testen met de varTafel waarde die je ooit de eerste keer aan het begin hebt ingelezen. Meestal is het een herhaling van de regel die net boven het ZOLANG statement staat. Dus in dit geval zie je de de eerste groene regel boven het gele blok staan. Het tweede groene blok is identiek met de eerste (copy/paste) en is het laatste statement binnen het gele blok.
Specificatie die bij deze opdracht zou kunnen horen: Maak een programma dat bij herhaling een reeks positieve getallen in kan lezen. Zodra het getal 0 wordt ingevoerd stopt het invoeren van de reeks en wordt het grootste getal afgedrukt. Uitleg: De eerste 2 regels dienen als uitleg wat er van de gebruiker verwacht wordt. Omdat in de selectie varGetal vergeleken wordt met varMax moet varMax wel eerst een geldige waarde hebben gekregen dat gebeurt als laatste in het eerste blok. Voor uitleg van de groene regels zie oefening 2. We heben hier verder te maken met een herhaling op grond van een conditie dus we kiezen ZOLANG. Wat in het tweede blok alleen nog ontbreekt is de conditie dat als het zojuist ingevoerde getal > varMax we een nieuwe waarde voor varMax hebben gevonden en het dus moeten bewaren. Het derde en laatste blok is een simpele regel die we wel vaker zien als laatste nl. Het afdrukken van een resultaat.
Specificatie die bij deze opdracht zou kunnen horen: Maak een programma dat bij herhaling om je naam en geboorte jaar vraagt. Zodra je naam niet wordt ingevoerd (enter intoetsen zonder invoer) stopt het programma en sluit af met “Dag
tot de volgende keer ...”. Uitleg: Deze oefening lijkt heel erg op oefening 3. Alleen stoppen we niet op nul maar een zogeheten lege string (tekst). Dit wordt gedaan met (varNaam <> “”). Er staat letterlijk varNaam ongelijk aan een lege string (2 dubbele quotes tegen elkaar aan). Bij deze oefening moet je verder goed opletten dat in je broncode het invoeren van het geboorte jaar alleen dan moet gebeuren als er een geldige naam is ingevoerd. Het kan ook lastig zijn om de juiste plaats te vinden waar nu EndWhile moet komen te staan en de laatste afscheid regel. Naarmate de broncode langer en ingewikkelder wordt is het steeds belangrijker om de PSD bij de hand te hebben omdat het in het diagram vaak duidelijker te zien is. Dit is precies het nut van de PSD!!
Specificatie die bij deze opdracht zou kunnen horen: Maak een programma dat bij herhaling een reeks getallen in kan lezen. Zodra het getal 0 wordt ingevoerd stopt het invoeren van de reeks. Druk daarna alle getallen in dezelfde volgorde weer af.
Uitleg: Deze oefening lijkt een beetje op oefening 3. Bij oefening 3 hoef je niet alle getallen te onthouden alleen de grootste. Nu echter moeten we alle getallen onthouden want we hebben ze op het laatste weer allemaal nodig. Dit is de eerste opdracht waarbij je een array zal moeten gebruiken. varTeller wordt elke keer met 1 verhoogd als er een geldig getal is ingevoerd. Die variabele kunnen we meteen mooi als index gebruiken voor het array.
OEFENING 5a Probeer je programma zodanig aan te passen dat getallen in omgekeerde volgorde wordt afgedrukt.
Specificatie die bij deze opdracht zou kunnen horen: Maak een programma dat bij herhaling een reeks getallen in kan lezen. Zodra het getal 0 wordt ingevoerd stopt het invoeren van de reeks. Druk daarna een menu af. Keuze 1 is het berekenen van de som van de reeks en keuze 2 is het berekenen van het product van de reeks. Druk het resultaat van de gekozen berekening af. Som is optellen van alle getallen, product is het vermenigvuldigen van alle getallen. Uitleg: Het eerste deel van deze oefening is hetzelfde als oefening 5. Het vervolg met het afdrukken van een menu komt overeen met de menu’s uit trimester 2. Je hoeft hier geen rekening te houden met een ongeldige keuze.
Specificatie die bij deze opdracht zou kunnen horen: Maak een programma dat bij herhaling een reeks namen en geboorte jaren inleest. Het programma stopt met invoeren zodra er een lege naam wordt ingevuld. Als laatst moet het de hele reeks in tabelvorm afdrukken, per regel: <jaar> . Tussen de kolommen moet een spatie komen. Uitleg: Deze oefening is een uitbreiding van oefening 4. In plaats van reeksen getallen gaan we nu een reeks van meerdere waarden onthouden nl. tekst en getallen. Je hebt nu een multidimensionaal array nodig. Je zou erover kunnen denken om de leeftijd meteen bij het invoeren te berekenen en ook op te slaan. Dat is ontwerptechnisch een minder goede oplossing omdat je altijd moet proberen om zo min mogelijk op te slaan. Het is geen broninformatie en kan altijd berekent worden uit de gegevens die je al hebt. Bovendien klopt dat gegeven niet meer zodra je een jaar verder bent! Nauwkeuriger is dus om het uit te rekenen zodra je het gaat weergeven of gebruiken.
Uitleg: Dit is een variant van oefening 7 waarbij tijdens het afdrukken eerst alle gegevens per ‘regel’, dus alles van 1 persoon in een tussen variabele varP wordt gezet. Daarna doet de eerste index van het array voor die variabele er niet meer toe, het gaat dan immers alleen nog over die ene specifieke persoon. De schrijfwijze is dan korter, zie laatste SCHRIJF regel.