You are on page 1of 14

Uitwerking opgaven lesbrief Struktograaf

{opgave 1}

schrijf "Voer drie getallen in"

lees getal1, getal2, getal3

gemiddelde :=(getal1+getal2+getal3)/3

schrijf "Het gemiddelde is: ", gemiddelde

{opgave 2}

schrijf "Geef achtereenvolgens de breedte en "

schrijf "hoogte van de balk, en daarna de lengte"

schrijf "die de balk uitsteekt."

lees breedte, hoogte, lengte

gewicht:=(19*breedte*hoogte*hoogte)/lengte

schrijf "Het maximale gewicht dat deze balk "

schrijf "kan dragen is: ", gewicht

{opgave 3}

i:=1

som:=0

ZOLANG i<=100

som:=som+i*i

i:=i+1

schrijf "De som van de eerste 100 kwadraten is;", som

Uitwerkingen Struktograaf jvd
31-05-07 1
{opgave 4}

schrijf "voer twee getallen in"

lees a,b

a<b?

JA NEE

som:=a+2*b som:=b+2*a

schrijf "De som van het kleinste getal en "

schrijf "het dubbele van het grootste is: ", som

{opgave 6}

schrijf "Voer een getal in"

i:=1

lees n

produkt := 1

ZOLANG i<=n

produkt:=produkt * i

i:=i+1

schrijf "Het produkt van de getallen 1 tot en met ",n

schrijf "is gelijk aan: ", produkt

{opgave 7}

schrijf "Voer twee getallen kleiner dan 1000 in,"

schrijf "het eerste kleiner dan het tweede."

lees a,b

i:=1

ZOLANG i<=100

kwadraat:= i * i

kwadraat > a

JA NEE

kwadraat < b

JA NEE

schrijf kwadraat

i := i + 1

Uitwerkingen Struktograaf jvd
31-05-07 2
8)

Regel X Y X<6 x>4 commentaar
1,2,3,4 1 2 True Nee
5 1 3
6 3 3 Terug naar regel 3
3,4 3 3 True Nee
5 3 6
6 5 6 Terug naar regel 3
3 5 6 True Ja
6 7 6 Terug naar regel 3
3 7 6 False Naar regel 7
7 7 6 Afdrukken: 7 6

Dus op het scherm komt: 7 6

9a)
Regel Aantal Invoer- Invoergetal>10 Invoergetal>6 commentaar
getal
1,2,3 0 13 True
4 0 8
5 1 8 Terug naar regel 3
3 1 8 False Door naar regel 6
6 1 8 Nee
7b 4 8
8 4 8 Afdrukken: 8

Dus op het scherm komt: 8

9b)
Regel Aantal Invoer- Invoergetal>10 Invoergetal>6 commentaar
getal
1,2,3 0 20 True
4 0 15
5 1 15 Terug naar regel 3
3 1 15 True
4 1 10
5 2 10 Terug naar regel 3
3 2 10 False Door naar regel 6
6 2 10 Ja
7a 2 10 Afdrukken: 10
8 3 10
9 3 10 Afdrukken: 3

Dus op het scherm komt: 10
3

10) Als we van drie getallen de kleinsten moeten hebben, hebben we een herhaalde
keuze nodig, bijvoorbeeld volgens onderstaand schema:
ja ® a < b < c, dus a en b
ja : b < c
nee ® b > c en b > a, dus a en c
a< b
ja ® b < a < c, dus a en b
nee : a < c
nee ® a > b en a > c, dus b en c

Uitwerkingen Struktograaf jvd
31-05-07 3
{opgave 10}

schrijf "Voer drie getallen in"

lees a,b,c

a<b

JA NEE

kleinste1:=a kleinste1:=b

b<c a<c

JA NEE JA NEE

kleinste2:=b kleinste2:=c kleinste2:=a kleinste2:=c

som:=kleinste1*kleinste1 + kleinste2*kleinste2

schrijf "De som van de kwadraten van de kleinste twee"

schrijf "getallen is: ",som

Een andere mogelijkheid is:

{opgave 10, alternatief}

schrijf "Voer drie getallen in"

lees a,b,c

a<b

JA NEE

b<c a<c

JA NEE JA NEE

som:=a*a+b*b som:=a*a+c*c som:=a*a+b*b som:=b*b+c*c

schrijf "De som van de kwadraten van de kleinste twee"

schrijf "getallen is: ",som

{opgave 11}

schrijf "Geef het beginkapitaal"

lees kapitaal

schrijf "Hoeveel procent rente krijg je?"

lees rente

schrijf "In welk jaar beginnen?"

lees beginjaar

i:=0

schrijf "jaar kapitaal"

ZOLANG i<=20

kapitaal:=kapitaal*(1+rente/100)
{bij bv 5% rente moet je met 1.05 vermenig-
vuldigen om de nieuwe waarde te krijgen}

schrijf beginjaar+i," ", kapitaal
{de tussengevoegde spaties voorkomen dat de
getallen 'aan elkaar geplakt' worden}

i:=i+1

Uitwerkingen Struktograaf jvd
31-05-07 4
{opgave 12}

schrijf "Wat is de prijs van het artikel?"

lees prijs

prijs >150

JA NEE

prijs<55

prijs:=prijs *1.19 JA NEE

prijs:=prijs*1.11 prijs:=prijs*1.16

schrijf "De nieuwe prijs wordt: ", prijs

{opgave 13}

kapitaal := 100000

n:=0

rente:=4
{door het rentepercentage als een
variabele in te voeren is het later
makkelijk te veranderen!}

ZOLANG kapitaal*(1+rente/100)>=5000
{als kapitaal+rente in komend jaar nog
boven 5000 komt, is er nog geld genoeg}

kapitaal:=kapitaal*(1+rente/100)-5000
{rente erbij geteld, opname eraf}

n:=n+1

n>50

JA NEE

schrijf "Dit kan je doen ", schrijf "Dit kan je ",n," jaar doen"
"tot aan je pensioen."

{opgave 14}

schrijf "Geef het aantal gescoorde punten"

lees score

score>=0 en score<=99

JA NEE

prijs:=500+score*3 schrijf "Deze score is niet mogelijk!"

score>46

JA NEE

prijs:=prijs+(score-46)*2

schrijf "Het prijzengeld is ", prijs, " euro"
{let op het gebruik van spaties!!}

Uitwerkingen Struktograaf jvd
31-05-07 5
{opgave 15}

schrijf "Geef achtereenvolgens de lengte, de breedte en de hoogte"

lees lengte, breedte, hoogte

breedte>=10 en lengte>=15

JA NEE

lengte+breedte+hoogte<=120 en lengte<=70
schrijf "Het pakket is te klein"
JA NEE

schrijf "Het pakket heeft toegestane maten" schrijf "Het pakket is te groot"

{opgave 16}

{Er moet steeds een groepje van (10+1) opdrachten
herhaald worden.
Vandaar een herhaling in een herhaling.}

i:=0 {teller voor het aantal groepjes}

j:=1 {teller voor opdrachten binnen een groepje}

schrijf "getal kwadraat" {kolomtitels}

ZOLANG i<=190 {20 groepjesvan 10 berekeningen,begin bij 0}

ZOLANG j<=10

schrijf i+j, " ",(i+j)*(i+j) {spaties tussenvoegen!}

j:=j+1

schrijf "" {de lege regel na 10 regels van de tabel}

j:=1 {teller binnen het groepje weer beginwaarde geven}

i:=i+10 {na het groepje van 10+1 opdrachten wordt aan het
volgende groepje begonnen.}

Uitwerkingen Struktograaf jvd
31-05-07 6
{opgave 17}

{Vanwege onderhoud of wijzigingen aan het programma is het
verstandig om in de code van het programma zo weinig mogelijk
constanten (vaste getallen) op te nemen. Vandaar dat de
waarden voor de kapitalen en de rentes apart worden
opgegeven in de eerste regels. Als je dezelfde vraag voor
een ander kapitaal wil oplossen hoef je alleen in de eerste
regel dat kapitaal te veranderen!)

kapitaal1:=2000

rente1:=7

kapitaal2:=3000

rente2:=5

n:=0

ZOLANG kapitaal1<kapitaal2

kapitaal1:=kapitaal1*(1+rente1/100)

kapitaal2:=kapitaal2*(1+rente2/100)

n:=n+1

schrijf "Na ",n, " jaar is het eerste kapitaal groter"

schrijf "dan het tweede."

{opgave 18}

kapitaal:=100000

schrijf "Geef het op te nemen bedrag"

lees bedrag

schrijf "Wat is het rentepercentage?"

lees rente

n:=0

jaar:=2002

schrijf "jaar waarde kapitaal"

ZOLANG kapitaal*(1+rente/100)>=bedrag en n<=51

kapitaal:=kapitaal*(1+rente/100)-bedrag

schrijf jaar+n, " ",INT(kapitaal)

n:=n+1

n>50

JA NEE

schrijf "Dit kun je dus ", schrijf "Dit kan je dus ",
"doen tot aan je pensioen" n, " jaar doen"

Uitwerkingen Struktograaf jvd
31-05-07 7
{opgave 19}

schrijf "Geef een geheel getal"

lees getal

hulpwaarde := INT(getal/10)

cijfer:=getal-10*hulpwaarde

schrijf "Het laatste cijfer is: ",cijfer

{opgave 20}

schrijf "Geef een geheel getal"

lees getal

hulpwaarde := INT(getal/100)

cijfers:=getal-100*hulpwaarde

cijfers=0

JA NEE

schrijf "De laatste twee ", schrijf "De laatste twee",
"cijfers zijn 00" "cijfers zijn: ", cijfers

{opgave 21}

voor i:=1 tm 10

dobbelsteen(i):=1+INT(6*random)

schrijf "worp ", i, ": ",dobbelsteen(i)

{opgave 22}

schrijf "aantal gemiddeld aantal ogen"

aantal:=10

som:=0

ZOLANG aantal<=100

voor i:=1 tm aantal

ogen:=1+INT(6*random) {werpen}

som:=som+ogen {totaal aantal ogen}

gemiddelde:=som/aantal

schrijf aantal, " ", gemiddelde

aantal:=aantal+10

som:=0 {anders wordt het vorige totaal onthouden!}

Uitwerkingen Struktograaf jvd
31-05-07 8
{opgave 23}

aantal:=100

{we maken een array "frequentie" waarin
we de frequenties gaan bijhouden}

voor i:=1 tm 16

frequentie(i):=0

t:=1

ZOLANG t<=aantal

dobbel1:=1+INT(6*random)

dobbel2:=1+INT(6*random)

dobbel3:=1+INT(6*random)

ogen:=dobbel1+dobbel2+dobbel3

frequentie(ogen-2):=frequentie(ogen-2)+1
{bv: aantal ogen 7, wordt opgeslagen in frequentie(5)
door de waarde met 1 te verhogen}

t:=t+1

schrijf "aantal ogen frequentie"

voor i:=1 tm 16

schrijf i+2, " ", frequentie(i)

{opgave 24}

schrijf "Voer de eerste zin in"

lees zin1

schrijf "Voer de tweede zin in"

lees zin2

len(zin1)>len(zin2)

JA NEE

schrijf "De tweede ", len(zin1)=len(zin2)
"zin is ",
len(zin1)-len(zin2), JA NEE
" karakters korter dan",
" de eerste zin." schrijf "De ", schrijf "De tweede ",
"zinnen zijn ", "zin is ",
"even lang." len(zin2)-len(zin1),
" karakters langer dan",
" de eerste zin."

Uitwerkingen Struktograaf jvd
31-05-07 9
{opgave 25}

schrijf "Voer een woord in van minimaal 8 karakters"

lees woord

lengte:=len(woord)

lengte<8

JA NEE

schrijf "Het woord is te kort!" schrijf woord[lengte-4:lengte]

{opgave 26}

schrijf "Typ een woord"

lees woord

lengte:=len(woord)

i:=lengte

droow:=""

ZOLANG i>=1

droow:=droow+woord[i]

i:=i-1

schrijf "Als je het door jou ingetypte ",
"woord omdraait, krijg je: ", droow

{opgave 27}

schrijf "Voer een woord in"

lees woord

hulpwoord:=""

i:=len(woord)

ZOLANG i>=1

hulpwoord:=hulpwoord+woord[i]

i:=i-1

woord=hulpwoord

JA NEE

schrijf "Dit woord ", schrijf "Dit woord is ",
"is een palindroom." "geen palindroom"

Uitwerkingen Struktograaf jvd
31-05-07 10
{opgave 28}

schrijf "Typ een zin, bestaande uit (hoofd-)letters ",
"en spaties, afgesloten met een punt."

lees zin

lengte:=len(zin)-1 {laatste karakter is een punt!}

{we gaan de ASCII-waarden van de karakters uit de zin
opzoeken en in een array ascirij gaan we de frequenties
bijhouden. We geven ascirij lengte 122, hoewel we niet
alle variabelen van die rij nodig zullen hebben.
Het indexnummer van de variabele is tevens de ASCII-
waarde van het karakter.

voor i:=1 tm 122

ascirij(i):=0 {frequenties worden op 0 gezet}

voor i:=1 tm lengte

nummer:=asc(zin[i]) {ASCII-nummer karakter bepalen}

ascirij(nummer):=ascirij(nummer)+1
{de frequentie van het ASCII-nummer wordt 1 verhoogd}

schrijf zin

voor i:=65 tm 90 {ASCII-nummers hoofdletters}

ascirij(i)=0

JA NEE

{als frequentie=0 hoeft schrijf chr(i), " ",ascirij(i)
er niets afgedrukt}

voor i:=97 tm 122 {ASCII-nummers kleine letters}

ascirij(i)=0

JA NEE

schrijf chr(i), " ",ascirij(i)

Uitwerkingen Struktograaf jvd
31-05-07 11
{opgave 29}

schrijf "Voer een woord in"

lees woord

code:=4 {dit is het aantal letters
waarmee gecodeerd wordt}

lengte:=len(woord)

i:=1

codering:=""
{dit wordt het gedodeerde woord}

ZOLANG i<=lengte

ascicode:=asc(woord[i])

ascicode+code>122

JA

NEE

ascicode:=ascicode-26
{ascicode moet een letter opleveren,
dus een ascicode van 97 t/m 122}

codering:=codering+chr(ascicode+code)

i:=i+1

schrijf "Het gecodeerde woord is: ", codering

Uitwerkingen Struktograaf jvd
31-05-07 12
{opgave 30}

schrijf "Voer een zin in, zonder ",
"hoofdletters of punt"

lees zin

code:=4

i:=1

codering:=""

lengte:=len(zin)

ZOLANG i<=lengte

ascicode:=asc(zin[i])

ascicode = 32
{spatie?}

JA NEE

ascicode+code>122
codering:=codering + " "
{tussenvoegen van JA NEE
de spatie}
ascicode:=ascicode-26

codering:=codering+chr(ascicode+code)

i:=i+1

schrijf "De gecodeerde zin is: ",codering

Uitwerkingen Struktograaf jvd
31-05-07 13
{opgave 31}

schrijf "Typ een zin"

lees zin

lengte:=len(zin)

nieuwe_zin:="" {Dit wordt de nieuwe
zin zonder klinkers, nu nog leeg}

{We gaan nu een array met de klinkers maken. Om te controleren
of een karakter in de zin een klinker is kunnen we dan deze
array gebruiken}

klinkers(1):="a"

klinkers(2):="e"

klinkers(3):="i"

klinkers(4):="o"

klinkers(5):="u"

klinkers(6):="A"

klinkers(7):="E"

klinkers(8):="I"

klinkers(9):="O"

klinkers(10):="U"

{We gaan nu elk karakter in de zin bekijken}

i:=1

raak:=0 {hiermee onthouden we straks of er een klinker staat}

ZOLANG i<=lengte

voor j:=1 tm 10

zin[i]=klinkers(j)

JA NEE

raak:=1 {als het i-de karakter een
klinker is, wordt dat door de variabele
'raak' onthouden

raak=1

JA NEE

raak:=0 {raak weer op 0 zetten, anders nieuwe_zin:=nieuwe_zin+zin[i]
zijn de volgende klinkers niet te ontdekken}

i:=i+1

schrijf nieuwe_zin

{Opmerking: als je de zin(nen) langer maakt dan anderhalve regel is er (blijkbaar)
te weinig ruimte, en wordt de zin afgekapt.}

Uitwerkingen Struktograaf jvd
31-05-07 14