Vous êtes sur la page 1sur 14

Programmastructuurdiagrammen

Programmastructuurdiagrammen
1 Inleiding
In de komende lessen gaan we een begin maken met programmeren. Programmeren is in feite niets anders dan het vertellen aan een computer van wat je wilt dat hij doet. Dat gaat (helaas) niet in gewone spreektaal, want die is vaak voor meerdere uitleg vatbaar. Er zijn daarom verschillende speciale programmeertalen ontwikkeld. Dit zijn talen met een beperkt aantal 'woorden' (opdrachten e.d.) waarvan de betekenis precies vastligt. Ook de syntax (de manier waarop 'zinnen' gemaakt moeten worden) ligt precies vast. Daardoor kan de computer de door jou gegeven opdrachten (de programmacode) op precies n manier vertalen naar bewerkingen die door de processor uitgevoerd kunnen worden. Het schrijven van een (groter) programma is vaak een hele klus, waarvan het typen van de programmacode slechts een klein deel uitmaakt. De meeste tijd gaat zitten in het testen van het programma (doet het wel wat ik wil?; kan het tegen 'verkeerde' invoer e.d.?) en het bedenken van he je de oplossing van het gegeven probleem gaat aanpakken. In het algemeen is het het makkelijkst eerst de hoofdlijnen vast te leggen en daarna de details uit te werken. Het vastleggen van de structuur van de oplossing (het algoritme) gebeurt in een programmastructuurdiagram (PSD). Je bent ze al eens tegengekomen in een van de eerdere hoofdstukken. Je gaat vanaf opdracht 5 werken met het programma StruktoGraaf dat het tekenen van een PSD voor je doet. Het invullen van het PSD moet je zelf doen, maar dat is juist het interessante en leuke aan programmeren Maar StruktoGraaf doet meer: als je de juiste aanpak gekozen hebt, vertaalt het jouw PSD in een computerprogramma dat direct uitgevoerd kan worden. Je hoeft dus zelf (nog) geen echte programmeertaal te gebruiken. Je kunt een demoversie van StruktoGraaf downloaden van www.sichemsoft.nl. Met deze demo kan je geen PSD 's opslaan, maar m.b.v. knippen en plakken of PrintScreen in een Word-document plakken.

2 Wat is een programmastructuurdiagram?


Een PSD (programmastructuurdiagram) is een schema dat de onderlinge volgorde en samenhang van opdrachten binnen een programma weergeeft. PSD's worden niet geschreven in een programmeertaal, maar dienen om de structuur van een programma vast te leggen. Dit is onafhankelijk van de programmeertaal die je (later) gebruikt. Het vertalen naar programma-code gaat daarna een stuk eenvoudiger. Een PSD bestaat uit een rechthoek (of als je ingewikkelder programma's gaat maken, uit meerdere rechthoeken), waarbinnen tekst of een aantal basisfiguren voorkomt. De drie meest gebruikte basisstructuren zijn: de opdracht, de keuze en de herhaling. (StruktoGraaf bevat er nog meer, maar die zullen wij niet gebruiken.)

opdracht

keuze

herhaling

Door deze basisstructuren te combineren kan je voor elk programma een PSD maken.

3 De opbouw van een PSD


De opdrachten en acties die uitgevoerd moeten worden in een PSD worden in principe van boven naar beneden uitgevoerd. Bekijk het volgende voorbeeld maar eens. De tekst tussen accolades maakt geen deel uit van de programmacode, maar is commentaar (zie ook 4).
Programmastructuurdiagrammen 25-09-12 MHC

Dit programma doet het volgende: Eerst wordt er een tekst op schrijf "Van welk getal wil je het kwadraat?" het scherm afgedrukt: de lees getal {hier wordt het ingevoerde getal gelezen} vraag 'Van welk getal wil je het kwadraat?'. (Dat wat kwadraat := getal * getal {kwadraat berekenen} tussen de aanhalingstekens staat wordt letterlijk schrijf "Het kwadraat is:" afgedrukt.) schrijf kwadraat De volgende opdracht 'lees getal' laat het programma wachten totdat de gebruiker een getal ingetoetst heeft. De term getal kan je zien als de naam van een geheugenplaats in de computer en die kan elke waarde bevatten die de gebruiker van het programma intikt. We noemen dit een variabele omdat getal elke keer een andere (dus veranderlijke) waarde kan krijgen. De term kwadraat is dus ook een variabele. De volgende opdracht maakt de waarde van de variabele kwadraat gelijk aan de waarde van getal maal getal. Anders gezegd: aan (de variabele) kwadraat wordt de waarde getal * getal toegekend. Het symbool := gebruik je bij de toekennings-opdracht: kwadraat wordt getal keer getal. De volgende opdracht is weer een schrijfopdracht voor een regel tekst (te herkennen aan de aanhalingstekens). De laatste opdracht is ook een schrijfopdracht, maar nu wordt de waarde van de variabele kwadraat afgedrukt (geen aanhalingstekens!).
{kwadraat}

Opgave 1 Maak een PSD dat drie getallen leest en het gemiddelde van die drie getallen afdrukt. Zorg er voor dat aan de gebruiker van het programma duidelijk gemaakt wordt wat er van hem verlangd wordt. Een leeg scherm met een knipperende cursor zegt de meeste mensen niets, dus laat bijv. het doel van het programma afdrukken ("Dit programma berekent het gemiddelde van drie door U in te voeren getallen.") Vraag daarna om die getallen in te voeren, en vermeld de betekenis van de uitvoer. In het algemeen geldt: maak programma's gebruikersvriendelijk!!!

4 Commentaar
Commentaar is tekst (gn programmacode) die in een programma tussengevoegd wordt en bijvoorbeeld nuttig is bij een latere wijziging of uitbreiding van het programma, of om bepaalde gedeelten van een programmacode of PSD toe te lichten. Zie de tekst tussen accolades in het PSD hierboven. Begin een programma steeds met een stukje commentaar waarin je de auteur van het programma aangeeft en een korte omschrijving van het doel van het programma. Bij het huiswerk vermeld je ook steeds het nummer van de opgave. Opgave 2 Een stalen balk met hoogte h en breedte b die voor een lengte l uit een (stevige) constructie steekt kan aan zijn uiteinde maximaal een gewicht g dragen dat berekend 19b h2 kan worden met de formule g . (Hierbij zijn de lengtematen in cm en g in kg.) l Maak een PSD dat de drie maten leest en het maximale gewicht berekent en afdrukt .

Programmastructuurdiagrammen 25-09-12

MHC

5 De herhaling
Bovenstaande programma's waren rechttoe rechtaan: alle opdrachten werden van boven naar beneden door het PSD gaand in die volgorde uitgevoerd. In veel situaties moet een groep opdrachten echter herhaald worden. Een voorbeeld is het volgende programma:
{tafel van 6} schrijf "De getallen uit de tafel van 6 zijn:" teller := 1

ZOLANG teller <= 10 uitkomst := teller * 6 schrijf uitkomst teller := teller + 1

Na de verklarende regel die in de eerste opdracht afgedrukt wordt, krijgt de variabele teller de waarde 1. In de derde regel begint een herhalingsblok: zolang geldt: 'teller <= 10 is waar (true)' wordt het deelprogramma in het binnenste blok herhaald. De voorwaarde 'teller <= 10' wordt onwaar(false) als teller groter dan 10 is. Als dat zo is, wordt het deelprogramma niet meer uitgevoerd en stopt het

programma. Op het scherm worden de antwoorden van de tafel van 6 afgedrukt. Opgave 3 Maak een PSD dat de som van de eerste honderd kwadraten uitrekent.

6 De keuze
Soms is het (verdere) verloop van een programma afhankelijk van de waarde die een variabele op een gegeven moment krijgt. Er moet dan gekozen worden welk van de mogelijkheden er gebruikt moet worden. Bij een keuze is er sprake van een voorwaarde ofwel conditie en een tweetal handelingen, waarbij kenmerkend is dat f de ene f de andere handeling wordt uitgevoerd. Welke actie wordt uitgevoerd is afhankelijk van het feit of aan de voorwaarde is voldaan of niet. Bekijk het volgende PSD:
{maximum} schrijf "Geef twee getallen" lees getal1 lees getal2 getal1>getal2 JA max := getal1 max := getal2 NEE

Als getal1 groter is dan getal2 dan krijgt max de waarde van getal1 anders krijgt max de waarde van getal2. Op het scherm wordt het grootste getal getoond.

schrijf "Het grootste van deze getallen is: "& {De & zorgt er voor dat er niet op een nieuwe regel begonnen wordt met afdrukken.} schrijf max

Programmastructuurdiagrammen 25-09-12

MHC

Opgave 4 Maak een PSD dat twee getallen leest en de som van het kleinste en het dubbele van de grootste afdrukt.

7 Het werken met StruktoGraaf


We gaan nu werken met het programma StruktoGraaf: een programma dat je in staat stelt om op een eenvoudige manier (het technische gedeelte van) PSD's te maken. Bovendien kan het je PSD vertalen naar een programmeertaal ( compileren) en het programma laten werken, zodat je direct kunt controleren of het PSD doet wat je bedoelde. Start het programma StruktoGraaf. (Start Programma's Informatica) Kies Bestand Nieuw of druk op Ctrl-N of klik op de knop met het lege vel in de horizontale knoppenbalk. (zie ook de afbeelding hieronder) We maken als voorbeeld de tafel van 7. Zet de cursor links bovenin het scherm en typ: {De tafel van 7}. Klik op de knop met de rode rechthoek in de verticale knoppenbalk. Klik vervolgens ergens in het tekenvenster. Er verschijnt een leeg rechthoekje (met de cursor). Klik dan op de knop met de horizontale lijn en vervolgens op de onderkant van of binnen in het zojuist getekende diagram. Er is een nieuw rechthoekje bijgemaakt. Klik op de knop met het zolangdiagram (het herhalingsdiagram) en vervolgens binnen het onderste rechthoekje. Het PSD bestaat nu uit een lege rechthoek (een procesdiagram) gevolgd door een herhalingsdiagram. Maak nu het diagram verder af door een klik op de knop met de horizontale lijn en tot slot een klik binnen het door het zolangdiagram omsloten PSD. Het totaal moet er nu als volgt uitzien (afgezien van de zeven extra regels tekst aan de linkerkant):

Programmastructuurdiagrammen 25-09-12

MHC

In de afbeelding hierboven is ook van de zes belangrijkste knoppen in de verticale balk de betekenis gegeven. Je kunt e.e.a. ook teruglezen bij de helpfunctie. ( help inhoudsopgave introductie). De helpfunctie is ook handig als je de opdrachten moet maken. Je kunt o.a. een aantal voorbeelden bekijken en de syntax van StruktoGraaf. Completeer het PSD door de programmaregels in het diagram in te typen en wel als volgt: Bij de schrijfopdracht staan er nu drie opdrachten in n - n:=1 opdracht; ze worden nu op n regel afgedrukt. - ZOLANG n<=10 Let op de scheidingskomma's en het gebruik van spaties binnen SCHRIJF n, x 7 = , n*7 de aanhalingstekens. - n :=n+1 Opmerkingen: Typ eens achter de laatste opdracht (n:=n+1) een lange rij uitroeptekens. Je ziet dat de breedte van de figuur vanzelf aangepast wordt. Veeg nu die uitroeptekens weer uit; het PSD blijft even breed! Om het PSD de best passende afmeting te geven druk je nu op de knop met de twee pijlen in de horizontale menubalk (links naast de 'ongedaan-maken-knop). Als je na het maken van het 'frame' van het PSD wil gaan beginnen met het typen van tekst, is het handig om eerst op het schuine pijltje linksboven ('selecteren') te klikken. Je kunt dan met de muis de cursor overal neer zetten om te typen of te wissen, zonder dat er nieuwe cellen ingevoegd worden. Kies CodeGenereren. Het PSD wordt nu door Struktograaf vertaald naar een echt computerprogramma. Dit heet compileren. Als het compileren lukt krijg je de melding hiernaast: Als het PSD niet in n keer goed gecompileerd wordt krijg je een foutmelding. Klik op de knop, dan verschijnt er een venster als hieronder.

Onderaan in het venster staan foutmeldingen. Als je die aanklikt gaat de cursor naar de regel waar een fout zit. In dit geval is er een dubbele punt getypt, waar een := teken had moeten staan. Verbeter de fout(en) en compileer opnieuw.

Programmastructuurdiagrammen 25-09-12

MHC

Kies na correcte compilatie Code Uitvoeren of Ctrl-F9 of de knop met de raket. Nu wordt de uitvoering gestart en de tafel van 7 verschijnt op het scherm. Met een druk op een toets verdwijnt dit scherm weer.

@ Om je PSD op te slaan: klik op het diskette-symbool links in de menubalk en geef in


het dan geopende venster aan waar je het PSD wil bewaren: neem een (aparte) diskette (A:) of gebruik je eigen gedeelte van de harde schijf (H:). Neem als naam voor het bestand: opgave nr. .

Opgave 5 -----

Opgave 6 Maak een PSD van een programma dat (met een herhalingslus) het product bepaalt van de getallen 1,2,3.tot en met een in te lezen getal en daarna de uitkomst op he t scherm toont. Opgave 7 Maak een PSD dat twee getallen (kleiner dan 1000, het eerste kleiner dan het tweede) inleest en dan alle kwadraten die voorkomen tussen die twee getallen afdrukt.

8 Fouten opsporen
Een PSD dient (rechtstreeks) om te zetten te zijn in een correct functionerend programma. Om de werking van een PSD te begrijpen of te controleren is het noodzakelijk om de opdrachten na te lopen. Daarbij worden de opdrachten stap voor stap op papier uitgevoerd. Dit heet een ooggetuigenverslag. Zie het volgende voorbeeld.

Programmastructuurdiagrammen 25-09-12

MHC

Voorbeeld PSD

Ooggetuigenverslag

{1} p:=5 {2} q:=-1 {3} ZOLANG p>-3q

{4} p:=p+2q {5} q:=-2q {6} schrijf "p=", p {7} schrijf "q=", q

regel 1 2 3 4 5 3 4 5 3 6 7

p 5 5 5 3 3 3 7 7 7 7 7

q -1 -1 -1 2 2 2 -4 -4 -4 -4

p>-3q

waar

waar

niet waar

commentaar Toekenning van waarde 5 aan p Toekenning van waarde 1 aan q 5 is groter dan (-3*-1=) 3. p krijgt waarde p+2q, dus 3. q krijgt waarde 2q, dus 2. Nu terug naar regel 3. 3 is groter dan (-3*2=) -6 p krijgt waarde p+2q, dus 7. q krijgt waarde 2q, dus -4. Nu terug naar regel 3. 7 is niet groter dan (-3*-4=) 12, dus nu naar regel 6. Afgedrukt wordt: p=7 Afgedrukt wordt: q=-4

Opgave 8 Ga na aan de hand van een ooggetuigenverslag wat het hieronder links staande programma zal afdrukken. Maak het ooggetuigenverslag in Word en sla het op.

{opgave 8} {1} x:=1 {2} y:=2 {3} ZOLANG x < 6 {4} x > 4 JA NEE {5} y:=y+x {6} x:=x+2 {7} schrijf x, y

{opgave 9} aantal:=0 lees invoergetal ZOLANG invoergetal > 10

invoergetal:=invoergetal - 5 aantal:= aantal + 1 invoergetal > 6 JA schrijf invoergetal aantal:=aantal + 1 schrijf aantal NEE aantal:=aantal + 3

Opgave 9 Zie het PSD hier rechtsboven. a. Wat wordt er getoond als het invoergetal gelijk is aan 13? (Maak een ooggetuigenverslag in Word) b. Wat wordt er getoond als het invoergetal gelijk is aan 20? (Maak een ooggetuigenverslag in Word) Opgave 10 Maak een PSD dat drie getallen leest en de som van de kwadraten van de kleinste twee van die getallen afdrukt.

Programmastructuurdiagrammen 25-09-12

MHC

Als je een PSD gemaakt hebt dat na compilatie gn foutmeldingen meer geeft wat betreft de syntax, maar toch niet doet wat je er van verwacht, bevat het een logische fout. Een manier om zo'n fout te ontdekken is het maken van een ooggetuigenverslag van het gedeelte van het PSD waar je vermoedt dat de fout zit. Een andere manier is om StruktoGraaf het PSD stap voor stap te laten doorlopen. Dat doe je door na een geslaagde compilatie te kiezen voor: Code/Doorlopen. Voor het programmaatje van bladzijde 6 bovenaan krijg je dan het volgende venster te zien:

Klik op de knop 'Stappen' en de volgende opdracht, dat is de regel die door de zwarte balk aangegeven wordt, wordt uitgevoerd. Elke klik op die knop laat de volgende opdracht uitvoeren. Daarbij worden de waarden van de variabelen in het linker schermpje getoond, terwijl het scherm rechtsonder de uitvoer (of invoer) van het programma laat zien. Probeer dit uit! Deze 'debugger' (foutenzoeker) komt vaak van pas! Opgave 11 Maak een PSD dat een beginkapitaal en een rentepercentage inleest en vervolgens een tabel (dwz twee kolommen naast elkaar, zonder opmaak) afdrukt met de jaartallen vanaf dit jaar tot over 20 jaar en de waarde van het kapitaal in dat jaar. Vergeet niet bij de uitvoer een titel boven de kolommen te zetten. (Je hoeft het kapitaal (nog) niet af te ronden op hele euro's, o.i.d.) Opgave 12 Van een aantal artikelen wordt de prijs verhoogd op de volgende manier: als de prijs meer is dan 150 komt er 19% bij; artikelen die goedkoper zijn dan 55 worden 11% duurder; de rest wordt 16% in prijs verhoogd. Maak een PSD dat een prijs leest en de nieuwe prijs afdrukt.

Programmastructuurdiagrammen 25-09-12

MHC

Opgave 13 Marloes heeft een prijs gewonnen van 100.000 en zet dit bedrag per 1 januari a.s op de bank tegen 4% rente per jaar. Aan het eind van ieder jaar neemt zij een bedrag op van 5000. Maak een PSD dat berekent hoe lang zij dit zal blijven kunnen doen. Mocht dit mr zijn dan 50 jaar, moet er afgedrukt worden: 'Tot aan je pensioen.' Opgave 14 Voor de winnaar van een spel waarbij een maximum aantal punten gescoord kan worden van 99 punten, is de volgende prijzengeldregeling van kracht: De prijs is een vast bedrag van 500, aangevuld met 3 voor elk behaald punt en bovendien 2 voor elk punt dat gescoord is boven de 46 punten. Maak een PSD dat een score leest, controleert of die mogelijk is, en daarna het prijzengeld berekent. Als de ingevoerde score niet mogelijk is moet er een passende mededeling afgedrukt worden. Opgave 15 Bodehuis UPS stelt aan pakketten die vallen in de categorie 'middelgrote pakketten' de volgende eisen: de breedte moet minimaal 10 cm en de lengte min. 15 cm zijn, anders is het 'te klein'; de lengte, breedte en hoogte mogen samen niet meer zijn dan 1.20 m, terwijl de lengte niet meer mag zijn dan 70 cm, anders is het pakket 'te groot'. Maak een PSD dat de drie afmetingen van een pakje inleest en onderzoekt of het aan de gestelde eisen voldoet. Laat de uitslag (te klein, te groot of goed) op het scherm afdrukken. Opgave 16 Maak een PSD dat een tabel afdrukt van de eerste 80 getallen en hun kwadraten, waarbij er na iedere 10 regels in de tabel een regel overgeslagen wordt. Vergeet de kolomtitels niet. Vanwege wijzigingen in gegevens of in het programma is het verstandig om in de code van een programma zo weinig mogelijk echte getallen op te nemen. Maak in het begin van het programma een aantal variabelen als kapitaal1, rente1, kapitaal2 e.d. en geef die de betreffende waarden. (Deze variabelen die niet echt variabel zijn in het programma heten constanten.) Bijv. kapitaal1:=2000. Werk dan in de rest van de code van het programma met die variabelen. Als later dezelfde vraag nog eens komt voor een ander kapitaal of een andere rente, hoef je alln die waarde in de eerste regels aan te passen. Anders zou je overal in je programma dat getal moeten veranderen en dat levert zeker in een groter programma fouten op!! In de volgende opgave(n) moet je constanten (zoals kapitaal en rente) op die manier verwerken. Opgave 17 Maak een PSD dat uitzoekt na hoeveel jaar een kapitaal van 2000, dat uitstaat tegen 7% rente, groter is geworden dan een kapitaal van 3000 dat tegelijkertijd uitgezet is tegen 5% rente per jaar.

9 Toevalsgetallen, 'afronden' en rijen,


ofwel de functies RANDOM en INT, en arrays.
Alle programmeertalen bevatten een functie die willekeurige getallen kan genereren. Ook StruktoGraaf heeft zo'n functie: RANDOM. Deze levert toevalsgetallen tussen de 0 en 1 op. Wil je een toevalsgetal tussen 0 en 7 toekennen aan een variabele a, dan geef je de opdracht a:=7*RANDOM.
Programmastructuurdiagrammen 25-09-12 MHC

10

Een andere functie die in veel programmeertalen voorkomt is INT (van integer, geheel getal). Deze functie kapt een (positief) reel getal af (dwz, verwijdert het gedeel te achter de komma) zodat er een geheel getal overblijft. Bijvoorbeeld: INT(5.23)= 5, INT(0.731)=0, INT(10)=3, maar INT( -3.6)=-4 en INT(-2.1)=-3. Opgave 18 Dezelfde opdracht als opgave 13, maar het op te nemen bedrag moet nu ingevoerd worden en er moet een overzicht afgedrukt worden van de grootte van het kapitaal, steeds per 1 januari, afgerond op hele euro's. Als je van een geheel getal (bijv. 753) het laatste cijfer wilt hebben kan je de INT-functie op de volgende manier gebruiken: deel het getal door 10 en neem de INT van de uitkomst. Vermenigvuldig die INT-uitkomst met 10 en trek dit af van het oorspronkelijke getal. Het getal dat je nu vindt is het laatste cijfer. Opgave 19 Verwerk dit in een PSD en test het. Opgave 20 Maak een PSD dat de laatste twee cijfers van een ingevoerd getal geeft. Controleer je programma met: 156, 3458910, 12500, 12 en 5. Soms is het handig om een hele rij variabelen (van hetzelfde type) met n naam te beschrijven. Daarvoor hebben we de beschikking over arrays. Om een array van 11 variabelen met de naam 'getallenrij' te maken, gevuld met willekeurige gehele getallen van 0 tot en met 3, kunnen we bv het volgende PSD uitvoeren:

{array maken} voor i:=1 tm 11 getallenrij(i) := int(4*random)

Opgave 21 Maak een PSD dat 10 keer gooien met een dobbelsteen simuleert en de uitkomsten opslaat in een array 'dobbelsteen'. Laat daarna die array afdrukken. Opgave 22 Maak een PSD dat achtereenvolgens 10, 20, 30 t/m 100 keer 'met een dobbelsteen gooit' en voor ieder van deze aantallen dat aantal afdrukt, met daarnaast het gemiddelde van de in die serie geworpen ogen. Heb je hierbij een(of meerdere) arrays nodig? Opgave 23 Maak een PSD dat 100 keer met drie dobbelstenen gooit en telt hoe vaak elke uitkomst (3, 4, 5,,18) voorkomt. De uitvoer is een tabelletje met de uitkomsten van de wor p en de frequenties. (Bedenk dat de kans op uitkomst 3 vl kleiner is dan op bv 10, en dat je dus niet zomaar via toevalsgetallen een rijtje met getallen 3, 4, 5, 6, etc. kan vullen!)

Programmastructuurdiagrammen 25-09-12

11

MHC

10 Strings
Strings zijn variabelen die tekst bevatten in plaats van getallen. Die tekst kan bestaan uit n karakter (letter of symbool), een hele zin (in StruktoGraaf max 200 karakters) of helemaal geen karakters (een lege string). Een stringvariabele krijgt een waarde door een toekenning, bijv. naam:="Jan Pietersen". De karakters uit zo'n string kan je apart in een variabele opslaan. Bijvoorbeeld naam[1] is "J" en naam[6] is "i". LET OP: de spatie naam[4] telt ook mee! Met naam[5:8] krijg je de substring die bestaat uit het 5 e tot en met 8e karakter, dus "Piet". Met de functie LEN kan je het aantal karakters van een string te weten komen: LEN(naam) heeft de waarde 13. Opgave 24 Maak een PSD dat twee woorden (of zinnen) leest en dan afdrukt of het tweede woord langer, korter of even lang is als het eerste woord, en hoeveel karakters dat scheelt. Opgave 25 Maak een PSD dat een woord inleest (van minimaal 8 karakters) en daarna de substring afdrukt die bestaat uit de laatste vijf karakters. Is het woord korter dan 8 karakters, moet er een foutmelding afgedrukt worden. Uit twee strings kan een nieuwe string gemaakt worden door ze aan elkaar te rijgen (concateneren). We gebruiken daarvoor de + operator. Bijvoorbeeld: na de opdrachten naam:="Jan" en woord:="Klaassen" geeft de opdracht nieuw:=naam+woord aan de string nieuw de waarde "JanKlaassen" (zonder spatie!). Als je een string karakter voor karakter wil opbouwen (in een lus bijvoorbeeld) is het vaak handig om met de lege string te beginnen. Zie het volgende PSD.

{voorbeeld concatenatie} naam:="abcdefghijklmnopqrstuvwxyz" nieuw:="" i:=1 ZOLANG i<=26 {lege string} {beginwaarde tellertje}

nieuw:=nieuw + naam[i] i:=i+3 schrijf "De gemaakte string is: ", nieuw
Dit PSD levert op het scherm de string 'adgjmpsvy'. Ga dit na. Opgave 26 Maak een PSD dat een ingelezen woord 'achterstevoren' weer afdrukt.

Programmastructuurdiagrammen 25-09-12

12

MHC

Opgave 27 Een palindroom is een woord of getal dat achterstevoren gelezen hetzelfde woord of getal oplevert, zoals lepel, negen,46564, etc. Maak een PSD dat bepaalt of een ingelezen woord een palindroom is en de juiste conclusie afdrukt.

11 De functies ASC en CHR.


Zoals je weet worden ook letters, leestekens e.d. in een computer voorgesteld door getallen. Er is een afspraak gemaakt welk karakter door welk getal voorgesteld wordt. Deze lijst is de ASCII-tabel (die je in een van de eerste hoofdstukken van het boek al tegengekomen bent). Daarin kan je o.a. vinden dat de letters A t/m Z de ASCII-waarden 65 t/m 90 gekregen hebben; bij de letters a t/m z horen de getallen 97 t/m 122 en de spatie heeft ASCII-waarde 32. In programmeertalen bestaan er functies die bij een karakter vertellen welke ASCIIwaarde hij heeft en, omgekeerd, die je bij een opgegeven waarde (van 0 t/m 255) het bijbehorende karakter geeft. In Struktograaf geldt dit ook: het zijn de functies ASC en CHR. Bijvoorbeeld: ASC(a) geeft de ASCII-waarde van de kleine letter a, ofwel 97; CHR(100) geeft het karakter met ASCII-waarde 100, ofwel de kleine letter d. Vb: Dit programma drukt achtereenvolgens de ASCII-waarden van de letters t, a, b, e en l af.
woord:="tabel" i:=1 ZOLANG i<=5 asc(woord[i])

schrijf i:=i+1

Ga dit na. Voorbeeld: Dit programma maakt een woord, bestaande uit de hoofdletters A t/m J en drukt dit af.
nieuw:="" voor i:=0 tm 9 nieuw:=nieuw + chr(65+i) schrijf nieuw

Ga dit na. Opgave 28 Maak een PSD dat van een ingelezen zin (bestaande uit (hoofd-)letters, spaties en een punt) uitzoekt welke letters er in voorkomen en van elke letter zegt hoeveel er voorkomen. De uitvoer is de zin, met daaronder een lijstje van de voorkomende letters met de aantallen.

Programmastructuurdiagrammen 25-09-12

13

MHC

Opgave 29 Je kunt een simpel geheimschrift maken door alle letters in een woord te vervangen door een letter die een vast aantal plaatsen (bijv. 4) verderop in het alfabet staat. Dus dan ae, bf, ko en pt. Maak een PSD dat een woord inleest en daar dan zo'n codering op toepast. Ga er van uit dat het woord alleen kleine letters bevat. Test je programma met: aardbei, zwaardvis en informatica. Opgave 30 Dezelfde opgave als opgave 29, maar nu voor een zin, zonder hoofdletters en punt, in plaats van een woord, waarbij elk woord apart gecodeerd wordt. Opgave 31 Er zijn talen die geen klinkers kennen. Maak een PSD dat een zin inleest, alle klinkers uit die zin verwijdert en het resultaat afdrukt.

Programmastructuurdiagrammen 25-09-12

14

MHC

Vous aimerez peut-être aussi