Hoofdstuk 2: De meervoudige keuze

advertisement
Iteraties
1
Hoofdstuk 4: Iteraties
I. Herhaal n maal structuur
a. Inleiding
Tot nu toe werden alle opdrachten, nodig om een probleem op te lossen, één maal
uitgevoerd. Bij de iteratie kan een deel van het programma meerdere keren herhaald
worden, zonder dat deze opdrachten meerdere keren hoeven neergeschreven te worden.
Denk als voorbeeld maar eens aan het berekenen van het gemiddelde van 10 gehele
getallen. Om deze 10 getallen in te lezen, zouden wij 10 Write – en 10 Read – opdrachten
moeten neerschrijven.
Voor dergelijke problemen, waarbij het aantal herhalingen vooraf bepaald is, heeft
Turbo Pascal de herhaal n maal structuur of for – lus ontworpen.
b. PST – diagram
De meetkundige figuur om een iteratie voor te stellen in een PST – diagram is een
afgeplatte zeshoek. De opdracht, al dan niet samengesteld, die moet herhaald worden zal
onder de zeshoek genoteerd worden. Als de herhaling beëindigd is, wordt verder gegaan
met de opdracht die rechts van de zeshoek genoteerd staat.
Herhaal…maal
Teller:beginwaardeeindwaarde
Opdracht
We noteren eerst het aantal herhalingen. Daaronder, nog steeds in de zeshoek, een
variabele teller genaamd, die het aantal herhalingen bijhoudt. De twee uiterste waarden
van de teller, beginwaarde en eindwaarde, schrijven we eveneens op.
Vul nu zelf de onderstaande structuren aan voor…
20 herhalingen
100 herhalingen
Herhaal ___ maal
Teller:5 ____
Herhaal ___ maal
Teller:1900 _______
De teller krijgt eerst de waarde van de constante beginwaarde. Daarna wordt de teller
vergeleken met de eindwaarde. We hebben drie mogelijkheden:
 Teller > eindwaarde: de opdracht rechts van de zeshoek wordt uitgevoerd.
 Teller = eindwaarde: de herhaalopdracht wordt een laatste maal uitgevoerd.
 Teller < eindwaarde: de herhaalopdracht wordt uitgevoerd en de waarde van
de teller wordt met 1 verhoogd. Vervolgens wordt de
teller opnieuw met de eindwaarde vergeleken.
Programmeren
K.A.Avelgem
A.Mahieu
Iteraties
2
c. In Turbo Pascal
De teller is een variabele en moet bijgevolg in het var-gedeelte gedeclareerd worden.
Beginwaarde en eindwaarde moeten niet gedeclareerd worden, maar moeten wel van
hetzelfde type zijn als de teller. Stel dat we een variabele ‘teller’ als INTEGER
gedeclareerd hebben, dan kan een for – lus er als volgt uitzien:
for teller : = 10 to 20 do
begin
WriteLn(‘Deze tekst zal x keer verschijnen’);
Write(‘Waarbij x gelijk is aan 11.’);
end;
…
De algemene structuur in turbo pascal is dus
for teller : = beginwaarde to eindwaarde do
opdracht;
Zoals in bovenstaand voorbeeld aangegeven, moet een samengestelde opdracht afgelijnd
worden door een begin en end;
In sommige problemen zal het handiger blijken om de teller steeds met 1 te laten
verminderen. De formulering wordt dan:
for teller : = eindwaarde downto beginwaarde do
opdracht;
d. Voorbeeld 1
Bij de geboorte van een baby spreken de ouders af dat ze hun kind elke week 0.2EUR
zakgeld geven. Dit bedrag wordt bij elke verjaardag verdubbeld. Bepaal hoeveel het kind
zal krijgen op zijn of haar 18e verjaardag.
Vul het schema aan met volgende items:
Herhaal 18 maal druk:zakgeld zakgeld0.2 zakgeldzakgeld x 2 Verjaardag
Teller:118
Schrijf een programma, gebruik makend van bovenstaand PST – diagram.
Programmeren
K.A.Avelgem
A.Mahieu
Iteraties
3
e. Voorbeeld 2
Schrijf een programma dat de gebruiker vraagt van hoeveel getallen hij het gemiddelde
wenst te berekenen. Laat de gebruiker de getallen ingeven en bepaal het rekenkundig
gemiddelde.
Vul aan met volgende items:
Herhaal aantal maal…
lees:aantal druk:gemiddelde
somsom + getal
Lees: getal
som0
gemiddelde som / aantal
gemiddeldeberekening
f. Oefeningen
1) Schrijf een programma dat de gemiddelde lengte van de leerlingen van een klas
afdrukt. Laat de computer eerst vragen hoeveel leerlingen er zijn.
2) Schrijf een programma dat de gebruiker een geheel getal laat inlezen en
vervolgens de tafel van 1 tot 10 van dat getal afdrukt. De uitvoer moet er als volgt
uitzien (voorbeeld waarbij het ingelezen getal 2 is):
1x2=2
2x2=4
…
10 x 2 = 20
3) Schrijf een programma om de getallen uit de rij van Fibonacci op het scherm af te
drukken. Dit is de rij getallen 0 1 1 2 3 5 8 13 21 … waarvan elk getal de
som is van de twee voorgaande. Druk de eerste 20 getallen af.
4) Schrijf een programma dat de derde machten van de gehele getallen van 10 t.e.m.
1 berekend en als volgt uitschrijft:
10
1000
9
729
…
1
1
Programmeren
K.A.Avelgem
A.Mahieu
Iteraties
4
II. De repeat until structuur
a. Vorm in Turbo Pascal
REPEAT
UNTIL
opdracht1;
opdracht2;
opdracht3;
voorwaarde;
b. PST – diagram
Herhaal tot
voorwaarde
Opdracht1
Opdracht2
Opdracht3
c. O
pmerkingen
 De opdracht(en) worden eerst uitgevoerd en dan pas wordt de voorwaarde
getest. De (samengestelde) opdracht zal dus minstens 1 keer uitgevoerd
worden.
 Een BEGIN en END zijn niet nodig bij meerdere opdrachten.
d. Oefeningen
x
afdrukken. Begin met x = 1 en laat
sin( x)
verder x steeds maar dichter tot 0 naderen door elke volgende waarde van x te
halveren. Doe dit tot de absolute waarde van x – sin(x) kleiner is dan 1
miljoenste.
5) Laat in 3 kolommen x, sin(x) en
6) Het feit dat bepaalde kernen van elementen zich spontaan omzetten in andere
kernen, gepaard gaande met het uitzenden van energierijke straling noemt men
radioactiviteit. De tijd waarin een bepaalde hoeveelheid radioactieve stof voor de
helft halveerd, noemen we de halveringstijd. Op dit principe steunt de
ouderdomsbepaling van hout, botten, papier… Meestal gebruikt men hiervoor de
hoeveelheid koolstof – 14. Voor C – 14 bedraagt de halveringstijd 5750 jaar.
Bepaal hiermee hoelang het duurt om 3000 deeltjes door straling om de zetten in
150 deeltjes.
7) Laat drie gehele getallen A,B en C inlezen. Vervolgens moeten de waarden ervan
cyclisch gepermuteerd worden, dwz de waarde van A komt in B, deze van B
komt in C en die van C komt in A. Druk de waarden af voor en na de permutatie.
Alles herhaalt zich tot voor A een negatieve waarde wordt ingegeven.
Programmeren
K.A.Avelgem
A.Mahieu
Iteraties
5
III. De while do structuur
a.
Vorm in Turbo Pascal
WHILE voorwaarde DO
BEGIN
opdracht1;
opdracht2;
opdracht3;
END;
b.
PST – diagram
Zolang
voorwaarde
herhaal
Opdracht1
c.
Opdracht2
Opdracht3
Opmerkingen
 De voorwaarde wordt eerst getest. De opdrachten worden pas erna uitgevoerd
(als de voorwaarde vervuld is). Is de voorwaarde niet vervuld, dan wordt de
(samengestelde) opdracht niet uitgevoerd.
 Meerdere opdrachten moeten tussen BEGIN en END komen.
 Kan een REPEAT opdracht steeds omgezet worden in een WHILE opdracht?
En omgekeerd?
d.
Overzicht
REPEAT: eerst uitvoeren, dan testen.
WHILE: eerst testen, dan uitvoeren.
e.
Oefeningen
8) Van een sportwedstrijd wordt de af te leggen afstand ingevoerd. Daarna wordt
van elke deelnemer die aankomt de tijd in uur, min, sec ingegeven. Vervolgens
wordt zijn snelheid afgedrukt.
Nu is het aantal aangekomen deelnemers vooraf natuurlijk onbekend. Eindig met
invoeren door na de laatste aankomer een tijd=0 in te geven.
Druk het aantal aangekomen atleten en tevens hun gemiddelde snelheid.
Programmeren
K.A.Avelgem
A.Mahieu
Download