UitwerkingopgavenlesbriefStruktograaf
Transcript of UitwerkingopgavenlesbriefStruktograaf
Uitwerkingen Struktograaf jvd 31-05-07 1
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 2
{opgave 4}
schrijf "voer twee getallen in"
lees a,b
a<b?
JA
som:=a+2*b
NEE
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
kwadraat < b
JA
schrijf kwadraat
NEE
NEE
i := i + 1
Uitwerkingen Struktograaf jvd 31-05-07 3
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-
getal
Invoergetal>10 Invoergetal>6 commentaar
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-
getal
Invoergetal>10 Invoergetal>6 commentaar
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 bja b c
nee b c en b a dus a en ca b
ja b a c dus a en bnee a c
nee a b en a c dus b en c
® < <<
® > ><
® < <<
® > >
Uitwerkingen Struktograaf jvd 31-05-07 4
Een andere mogelijkheid is:
{opgave 10, alternatief}
schrijf "Voer drie getallen in"
lees a,b,c
a<b
JA
b<c
JA
som:=a*a+b*b
NEE
som:=a*a+c*c
NEE
a<c
JA
som:=a*a+b*b
NEE
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 degetallen 'aan elkaar geplakt' worden}
i:=i+1
{opgave 10}
schrijf "Voer drie getallen in"
lees a,b,c
a<b
JA
kleinste1:=a
b<c
JA
kleinste2:=b
NEE
kleinste2:=c
NEE
kleinste1:=b
a<c
JA
kleinste2:=a
NEE
kleinste2:=c
som:=kleinste1*kleinste1 + kleinste2*kleinste2
schrijf "De som van de kwadraten van de kleinste twee"
schrijf "getallen is: ",som
Uitwerkingen Struktograaf jvd 31-05-07 5
{opgave 12}
schrijf "Wat is de prijs van het artikel?"
lees prijs
prijs >150
JA
prijs:=prijs *1.19
NEE
prijs<55
JA
prijs:=prijs*1.11
NEE
prijs:=prijs*1.16
schrijf "De nieuwe prijs wordt: ", prijs
{opgave 13}
kapitaal := 100000
n:=0
rente:=4{door het rentepercentage als eenvariabele in te voeren is het latermakkelijk te veranderen!}
ZOLANG kapitaal*(1+rente/100)>=5000{als kapitaal+rente in komend jaar nogboven 5000 komt, is er nog geld genoeg}
kapitaal:=kapitaal*(1+rente/100)-5000{rente erbij geteld, opname eraf}
n:=n+1
n>50
JA
schrijf "Dit kan je doen ","tot aan je pensioen."
NEE
schrijf "Dit kan je ",n," jaar doen"
{opgave 14}
schrijf "Geef het aantal gescoorde punten"
lees score
score>=0 en score<=99
JA
prijs:=500+score*3
score>46
JA
prijs:=prijs+(score-46)*2
NEE
schrijf "Het prijzengeld is ", prijs, " euro"{let op het gebruik van spaties!!}
NEE
schrijf "Deze score is niet mogelijk!"
Uitwerkingen Struktograaf jvd 31-05-07 6
{opgave 15}
schrijf "Geef achtereenvolgens de lengte, de breedte en de hoogte"
lees lengte, breedte, hoogte
breedte>=10 en lengte>=15
JA
lengte+breedte+hoogte<=120 en lengte<=70
JA
schrijf "Het pakket heeft toegestane maten"
NEE
schrijf "Het pakket is te groot"
NEE
schrijf "Het pakket is te klein"
{opgave 16}
{Er moet steeds een groepje van (10+1) opdrachtenherhaald 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 hetvolgende groepje begonnen.}
Uitwerkingen Struktograaf jvd 31-05-07 7
{opgave 17}
{Vanwege onderhoud of wijzigingen aan het programma is hetverstandig om in de code van het programma zo weinig mogelijkconstanten (vaste getallen) op te nemen. Vandaar dat dewaarden voor de kapitalen en de rentes apart wordenopgegeven in de eerste regels. Als je dezelfde vraag vooreen ander kapitaal wil oplossen hoef je alleen in de eersteregel 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
schrijf "Dit kun je dus ","doen tot aan je pensioen"
NEE
schrijf "Dit kan je dus ",n, " jaar doen"
Uitwerkingen Struktograaf jvd 31-05-07 8
{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
schrijf "De laatste twee ","cijfers zijn 00"
NEE
schrijf "De laatste twee","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 9
{opgave 23}
aantal:=100
{we maken een array "frequentie" waarinwe 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
schrijf "De tweede ","zin is ",len(zin1)-len(zin2)," karakters korter dan"," de eerste zin."
NEE
len(zin1)=len(zin2)
JA
schrijf "De ","zinnen zijn ","even lang."
NEE
schrijf "De tweede ","zin is ",len(zin2)-len(zin1)," karakters langer dan"," de eerste zin."
Uitwerkingen Struktograaf jvd 31-05-07 10
{opgave 25}
schrijf "Voer een woord in van minimaal 8 karakters"
lees woord
lengte:=len(woord)
lengte<8
JA
schrijf "Het woord is te kort!"
NEE
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
schrijf "Dit woord ","is een palindroom."
NEE
schrijf "Dit woord is ","geen palindroom"
Uitwerkingen Struktograaf jvd 31-05-07 11
{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 zinopzoeken en in een array ascirij gaan we de frequentiesbijhouden. We geven ascirij lengte 122, hoewel we nietalle 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
{als frequentie=0 hoefter niets afgedrukt}
NEE
schrijf chr(i), " ",ascirij(i)
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 12
{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
ascicode:=ascicode-26{ascicode moet een letter opleveren,dus een ascicode van 97 t/m 122}
NEE
codering:=codering+chr(ascicode+code)
i:=i+1
schrijf "Het gecodeerde woord is: ", codering
Uitwerkingen Struktograaf jvd 31-05-07 13
{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
codering:=codering + " "{tussenvoegen van de spatie}
NEE
ascicode+code>122
JA
ascicode:=ascicode-26
NEE
codering:=codering+chr(ascicode+code)
i:=i+1
schrijf "De gecodeerde zin is: ",codering
Uitwerkingen Struktograaf jvd 31-05-07 14
{opgave 31}
schrijf "Typ een zin"
lees zin
lengte:=len(zin)
nieuwe_zin:="" {Dit wordt de nieuwezin 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 dezearray 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
raak:=1 {als het i-de karakter eenklinker is, wordt dat door de variabele'raak' onthouden
NEE
raak=1
JA
raak:=0 {raak weer op 0 zetten, anderszijn de volgende klinkers niet te ontdekken}
NEE
nieuwe_zin:=nieuwe_zin+zin[i]
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.}