• Nie Znaleziono Wyników

Opgaven inleiding informatica

N/A
N/A
Protected

Academic year: 2021

Share "Opgaven inleiding informatica"

Copied!
100
0
0

Pełen tekst

(1)

opgaven

inleiding informatica

(2)

= = = = = = -- =

-

--= --= -

==

-P162Z

1376

(10046

60005

BIBLIOTHEEK TU Delft P 1622 7378

1111111111111

C 466000

(3)

opgaven

inleiding informatica

(4)

Samenstellers: P. B.

van der Burg

H. J.

van den

Herik

A. J.

van Zanten

(5)

3

VOORWOORD

Voor U ligt een vraagstukkenboekje dat een bundeling is van karakteristieke tentamenvragen sinds december 1974. Deze vragen kunnen gebruikt worden als voorbereiding op het tentamen Inleiding Informatica/ Inleiding Computer-gebruik. U kunt de vragen ook bij de bestudering van het diktaat Inleiding Informatica als oefenstof gebruiken. Hierbij zij, wellicht ten overvloede, op-gemerkt dat het toegestaan is het Revised Report (RR) naar het tentamen mee te nemen.

Voor het boekje zijn geen nieuwe vragen bedacht. De opgaven zijn genomen uit oude tentamina, die opgesteld zijn door P. B. van der Burg, H. J. van den Herik en A. J. van Zanten. Teneinde de student niet in het ongewisse te laten, hebben we tezamen met H. Vis de juiste antwoorden van kommentaar voor-zien. Waar volstaan kon worden met een verwijzing naar het diktaat Inleiding Informatica (In!. Inf.) is dat gedaan. In dat geval is verwezen naar het blad-zijdenummer van de 2e druk.

Delft, september 1976 de samenstellers.

VOORWOORD BIJ DE TWEEDE DRUK

In deze tweede druk zijn enige karakteristieke tentamenvragen uit het kursusjaar '76-'77 toegevoegd. Soms is een opgave iets gewijzigd, terwijl verder enkele druk-fouten verbeterd zijn.

Als nieuw onderwerp is een kollektie gemen(gd)e opgaven opgenomen, die kun-nen diekun-nen als toetssteen voor de mate waarin u de stof doorziet. Deze opgaven zijn niet representatief voor de zwaarte van de tentamenopgaven.

Delft, september 1977 de samenstellers.

VOORWOORD BIJ DE DERDE VERBETERDE DRUK

In de nieuwe oplage van deze derde (verbeterde) druk is verwezen naar de paginering van de derde verbeterde druk van het diktaat Inleiding Informatica (In!. Inf.).

Delft, juni 1979 de samenstellers.

VOORWOORD BIJ DE VIERDE DRUK

In deze vierde druk zijn enkele aanvullingen opgenomen bij het onderdeel programma-ontwerp. In deze druk is verwezen naar de vierde druk van het diktaat Inleiding Informatica (Inl. Inf.).

(6)

4

INHOUD

Talst elsels Syntaxis Gestruktureerde variabelen Algemeen

Revised Report/Algol syntaxis Struktuurdiagrammen

Programmawerking

Aantal bewerkingen/Aantal opdrachten (Komplexiteit) Programma-ontwerp Korrektheid Gemen(gd)e opgaven Antwoorden 5 8 10 11 13 16 24 35 40 50 52 55

(7)

~---

-TALSTELSELS

1. De binaire notatie van het decimaal geschreven getal 845 is: 1. 101001101

2. 1011001011 3. 1101001101 4. 10110010110

2. Bij konversie van het in het decimale stelsel geschreven getal 55.5 naar het tweetallig stelsel verkrijgt men de notatie:

1. 110111.1 2. 110111.101 3. 11101l.l 4. 111011.101

3. De grootste gemene deler (GGD) van alle getallen uit Z+ die binair geschre-ven op 0000 eindigen is:

1. 8

2. 16

3. 2000 4. 10000

5

4. Als er voor de mantisse 4 cijferposities beschikbaar zijn en voor de exponent 3, dan wordt het getal 20,196 in genormaliseerde drijvende komma-notatie voorgesteld door:

1. 20.1960 x 10000 2. +2.0196xlO+001 3. 0.2019xlO002 4. +0.2020 X 10+002

5. Bij een getal dat in drijvende komma-voorstelling wordt geschreven 1. worden de cijfers achter de komma afgekapt

2. wordt de decimale komma gezet op een willekeurige plaats

3. wordt de mantisse vermenigvuldigd met de exponent, ter verkrijging van de juiste waarde

4. wordt een aantal significante cijfers van het getal geschreven in kombi-natie met de macht van een bepaald grondtal

(8)

6 talstelsels

6. Bij een bepaalde in het decimale stelsel werkende computer is het aantal cijfer-posities van een drijvende komma-getal 8 voor de mantisse en 1 voor de expo-nent. Het grondtal van de drijvende komma-voorstelling is 10. Wat is het resul-taat van de optelling

7.

r.

- 0.55555555 +9 + 0.22222222-9 + 1. -0.33333333 -9 2. -0.33333333 +0 3. -0.55555554+9 4. -0.55555555 +9

Als men een eindige decimale breuk konverteert naar een binaire breuk, dan kan een repeterende breuk ontstaan.

Ir.

Als men een eindige binaire breuk konverteert naar een decimale breuk, dan kan een repeterende breuk ontstaan.

I. I is juist II is juist 2. I is juist 11 is onjuist

3. I is onjuist IJ is juist 4. I is onjuist 11 is onjuist

8. Als de schrijfwijze van een breuk met een eindig aantal cijfers van het M-tallige stelsel wordt gekonverteerd naar het N-tallige stelsel, dan:

1. is het aantal voor het afbeelden nodige cijfers in het M-tallige stelsel gro-ter dan in het N-tallige stelsel als M > N

2. is het aantal voor het afbeelden nodige cijfers in het M-taIIige stelsel groter dan in het N-tallige stelsel als M

<

N

3. wordt een repeterende breuk verkregen alleen als M niet deelbaar is door N 4. geen van de vorige uitspraken is juist.

(9)

-~---

--~---talstelsels 7

9. In een bepaalde computer worden getallen van het type real afgebeeld in drij-vende komma-representatie.

Men wil met behulp van deze computer zo nauwkeurig mogelijk de som van een aantal real getallen laten bepalen, waarbij de orde van grootte van de ab-solute waarden van deze getallen zeer verschillend kan zijn.

Men moet daarvoor:

l. de getallen in willekeurige volgorde laten optellen omdat de verschillen-de afrondingsfouten elkaar dan opheffen

2. de getallen volgens dalende absolute waarde sommeren; leveren bepaalde

getallen geen bijdrage meer tot de som, dan kan de sommatie worden gestaakt

3. eerst de positieve en dan de negatieve getallen bij elkaar optellen en vervolgens hiervan de som bepalen

4. de getallen volgens opklimmende absolute waarde sommeren, zodat de

getallen die in absolute waarde klein zijn toch een bijdrage kunnen leveren.

(10)

8

SYNTAXIS

1. In een formele taal komt de volgende definitie voor van de metalinguistische variabele getal.

«getal> ::= <cijfer>l<niet nul><getal> 1 <niet nul><nul><getal> <cijfer> ::= <nul> 1 <niet nul>

<nul> ::= 0

<niet nul> ::= 1 12131415 1617 1819

Welke cijferkombinaties kunnen door deze produktieregels worden voortgebracht? l.

2.

3. 4. 007 700 77 707 70 700 700 770 707 7007 7000 7700 2. Gegeven de volgende syntaxis

3.

<zin> ::= < hoofdzin >,<bij zin >

<hoofdzin> ::= <letter>/I<letter><letter><letter> <bijzin> : := <cijfer> 1 <cijfer ><cijfer >

<letter> ::= alblc <cijfer> ::= 1 12

Welke kombinatie van zinnen kan door deze produktieregels worden voortge-bracht? l. 2. 3. 4. 1. a,l abc,21 b,12 ab,l abc,l b,2 aaa,12 a c,21 a,12,a cac,l b,l

Een syntaxis heet gelijkwaardig of equivalent met een andere syntaxis als de verzameling van zinnen die door de ene syntaxis wordt voortge-bracht precies dezelfde is als die welke door de andere syntaxis wordt voortge bracht.

Il. Het Backus-Naurformalisme is een manier van noteren van een syntaxis.

l. I juist Il juist 2. I juist Il onjuist 3. I onjuist II juist 4. I onjuist 11 onjuist

(11)

syntaxis 9

4. Gegeven is de volgende syntaxis, die ambigu kan zijn.

<getal> ::= <cijfer >I<cijfer><cijfer> I <getal><cijfer><getal> <cijfer> ::= 011

Op hoeveel manieren kan het getal 1111 afgeleid worden? l. geen

2. één

3. twee

(12)

10

GESTRUKTUREERDE VARIABELEN

1. In de informatica kent men een datastruktuur bestaande uit een rij elementen waar aan de ene kant elementen worden toegevoegd en aan de andere kant elementen worden weggehaald.

Een voorbeeld hiervan is een stapel ponskaarten die achtereenvolgens door de kaartlezer worden gelezen en waaraan tijdens het lezen kaarten worden toege-voegd.

Een dergelijke datastruktuur noemt men een: 1. record

2. wachtrij 3. stapel

4. deque

2. In de informatica kent men een datastruktuur bestaande uit elementen waar-bij elk element een verwijzing bevat naar het volgende element.

Deze situatie is analoog aan die van een wachtkamer waar de nieuw binnen-komende vraagt wie er voor hem het laatst is binnengekomen. Door verder te vragen kan men de volgorde bepalen waarin de aanwezigen aan de beurt zullen komen.

Een dergelijke datastruktuur noemt men een: 1. array

2. lijst 3. record 4. string

3. In de informatica kent men een datastruktuur bestaande uit een verzameling van elementen die van verschillend type kunnen zijn. Men kan aldus gegevens die op logische wijze bij elkaar horen gezamenlijk opslaan.

Bijvoorbeeld: bij een examenadministratie worden de gegevens van een student (naam, adres, woonplaats) vastgelegd, evenals zijn studierichting en de door hem behaalde examencijfers.

Een dergelijke datastruktuur noemt men een:

l. string 2. record 3. lijst 4. array

(13)

- - - -

-11

ALGEMEEN

1. Welke drie apparaten behoren tot de randapparatuur (periferie) van de computer?

1. plotter, display-unit, regeldrukker 2. ponsbandlezer, rekenorgaan, regeldrukker 3. ponsbandlezer, geheugen, magneetbanden 4. ponsbandlezer, compiler, plotter

2. Soms heeft men voor invoergegevens voor een programma behoefte aan redun-dantie. Dat wil zeggen:

3.

I. men bouwt een stopkriterium in

2. men voegt extra gegevens toe ter verdere kontrole 3. dit is noodzakelijk om het programma robuust te maken

4. hiermee is het programma op verschillende punten herstartbaar geworden

I. Een analoge rekenautomaat werkt met kontinue grootheden. De repre-sentatie van getallen is niet exakt en hangt af van allerlei meetfouten. Il. Een digitale rekenautomaat werkt met diskrete grootheden. De interne

representatie van de getallen is exakt. I. I is juist Il is juist

2. I is juist II is onjuist 3. I is onjuist Il is juist 4. I is onjuist Il is onjuist

4. Met betrekking tot de taal Algol 60 is de reference language:

1. de wijze waarop deze taal gerealiseerd is op een bepaalde computer-konfiguratie

2. de officiële vorm, zoals die ook gebruikt wordt in het Revised Report 3. de versie die wordt gebruikt als kommunikatiemiddel tussen personen 4. de wijze waarop een algolprogramma bij de uitvoer door de regeldrukker

word tafgedrukt

5. Een compiler is een onderdeel van: 1. het invoerorgaan

2. de computerelektronica of hardware 3. de computerprogrammatuur of software 4. de kaartlezer

(14)

6.

12 algemeen

I. De assembler vertaalt een programma uit de ene taal in een andere taal. De taal waaruit vertaald wordt noemt men wel de brontaal en de taal waarin vertaald wordt de objekttaal.

IJ. Modulair programmeren heeft zowel nadelen als voordelen.

Een nadeel van modulair programmeren is dat de modulen afzonderlijk getest moeten worden.

Van de bovenstaande uitspraken is:

l. r juist 11 juist 2. r juist 11 onj uist 3. ronjuist . IJ juist 4. ronjuist· II onjuist

7. Het initialiseren van een variabele ten behoeve van een herhaling betekent dat de variabele:

8.

9.

I. de waarde 0 krijgt 2. de waarde I krijgt

3. een opgegeven startwaarde krijgt 4. wordt gedeklareerd

I. Een mnemotechnische kode is meer probleemgericht dan een taal als Algol 60, die juist meer op de machine is georiënteerd.

Il. Validatie is de kontrole van de invoer op juistheid. Van deze uitspraken is:

l. 2. 3. 4. I. r juist 11 juist r juist II onjuist ronjuist II juist ronjuist II onjuist

De kaartlezer vertaalt bijvoorbeeld algolstatements van ponskaarten naar machinekod e-instruktie.

Il. De computerkonfiguratie is de kombinatie van centrale verwerkings-eenheid, intern geheugen en randapparatuur.

Er geldt:

l. r is juist 11 is juist 2. r is juist II is onj uist 3. r is onjuist Il is juist 4. r is onjuist Il is onj uist

(15)

13

REVISED REPORT/ALGOL SYNTAXIS

1. Welke van de onderstaande aritmetische expressies zijn gedefinieerd volgens

het RR? a) -25 -;- 4 b) 10.5 -;- 3.5

c) if 3

>

0 then

lf

2

>

3 then 4 else 7 d)

if

3

>

0 then 4 else

i!

2

>

3 then 5 else 6 1. a en b

2. a en c 3. a en d 4. c en d

2. Volgens de in het RR gegeven definities is de uitkomst van 8 -;- (-5)*(-5) gelijk aan:

1. -5

2. 5

3. 8

4. 10

3. Een bepaald algolprogramma eindigt als volgt:

SI; S2

end einde van het binnenblok end

Hierin zijn SI en S2 twee willekeurige opdrachten.

Het zinnetje "einde van het binnenblok" is bedoeld als kommentaar. Welke van de volgende uitspraken is juist?

1. direkt achter het eerste end moet een; geplaatst worden

2. direkt achter het eerste end mag een; geplaatst worden

3. direkt achter het woord binnenblok moet een; geplaatst worden

4. direkt achter het woord binnenblok mag een; geplaatst worden

4. De variabelen a en b zijn integer variabelen.

Volgens de syntaxis beschreven in het RR (RR 3.2 en 3.3) is de volgende uit-drukking een factor

1. exp Ca + bH7

II. +3texp (a)

Van deze uitspraken is: 1. 2. 3. I juist I juist I onjuist Il juist II onjuist II juist

(16)

14 revised report/algol syntaxis

5. Als de boolean variabelen bI en b2 beide de waarde true hebben en de boolean variabelen b3 en b4 beide de waarde false, dan krijgt a de waarde 2 door uit-voering van de opdracht:

1. a :=!f bI v b3

==

(b2 ::J -, b4) then I else 2 Il. a :=

!f

bI " b3

==

(b2 ::J -, b4) then I else 2

1. 1 is juist Il is juist

2. I is juist II is onjuist 3. I is onjuist II is juist 4. I is onjuist 11 is onjuist

N.B. x::J y is identiek met -, x v y.

6. De variabelen a en i zijn van het type integer.

Welke waarde verkrijgt a door uitvoering van het volgende programmadeel? a := 30;

for i:= 23,31,32 while a

<

30 do a:= a + i

1. 116

2. 84

3. 53

4. 30

N.B. Zie eventueel RR 4.6.1, 4.6.3 en 4.6.4.

7. De variabelen a en k zijn van het type integer. Welke waarde heeft a na uit-voering van het volgende programmadeel?

a := 6;

for k:= a + 1,3,k + 2 while k

<

6 do a:= a + k

1. 6

2. 13

3. 16

4. 21

(17)

8.

revised report/algol syntaxis 15

I. Volgens het RR kan een label een unsigned integer zijn.

11. Volgens het RR is de volgende algolstatement, waarin a een boolean variabele is, die een waarde heeft, en lab1 en lab2 labels zijn, syntac-tisch juist.

~oto

i!

a then lab 1 else lab2 1. I is juist II is juist

2. I is juist II is onjuist 3. I is onjuist II is juist 4. I is onjuist

n

is onjuist

9. Welke rij getallen voldoet aan de syntaxis die in het Revised Report gesteld is voor numbers (vergelijk eventueel RR 2.5)?

1. +91.48 3,14 -107

2. 0.3710 +2 -137. +35 3. -410+ 5 21 -4.2 -181 4. -10-3 +09.48 10 7 .0 10. Gegeven een for-statement in Algol 60:

11.

for i := 1 step 2 until 10 ~ S

Hierin is S een opdracht (statement) of een samengestelde opdracht (compound statement), waarin de waarde van i niet veranderd wordt, en waarin geen "sprongopdrachten" voorkomen.

Na beëindiging van de executie van dit for-statement is de waarde van de vari-abele i volgens RR 4.6.5:

1. 9 2. 10 3. 11

4. niet gedefinieerd

integer procedure f(x); value x; integer x; begin

integer y; y := x*x; f(y) := y*(y + 1) end

Deze proceduredeklaratie is: 1. juist

2. juist, hoewel de specifikatie integer x overbodig is 3. onjuist, omdat in de body f(y) staat i.p.v. f 4. onjuist, omdat in de body f(y) staat i.p.v. f(x)

(18)

16

STRUKTUUR

DIAGRAMMEN

1. x := y := 50

~x<y~

zolang x> 16 x:=x-yj5 y := y - 5 x := x - yj5 y := y - 5

Na uitvoering van bovenstaande algoritme hebben x en y de volgende waarde:

x Y

l. 10 25

2. 16 30

3. 16 35

4. 40 45 I ~" I <

2. Het struktuurdiagram uit vraag I kan als volgt in Algol 60 worden weerge-geven. 1. 3. x := y := 50;

if

x

<

y then begin x := x - yj5; y := y - 5 end else -for x> 16 do begin x := x - yj5; y := y - 5 end x := y := 50

iK

x

<

y do begin x := x - yj5; y := y - 5 end else

-for i:= 1 while x> 16 do begin x := x - yj5; y := y - 5 end 2. 4. x := y := 50;

if

x

<

y then begin x := x - y/5; y := y - 5 end else

-while x> 16 do begin x := x - yj5; y := y - 5 end x := y := 50;

iK

x

<

y then begin x := x - yj5; y := y - 5 end else

-for i:= 1 while x

>

16 do begin

x := x - yj5; y := y - 5 end

(19)

~---_._----struktuurdiagrammen 17 3. a := 100 b := 150 i := 0 i := i + 5 a:=a+5*i b:=b-5*i

~v~

b := -3*b

I

b := b - 7*i a:=a+17 totdat a<b a := b - a druk af a

Door uitvoering van bovenstaande algoritme wordt als waarde van a afgedrukt

L 14

2. 50

3. 616 4. 1076

(20)

I 8 struktuurdiagrammen

4. Gegeven is een aantal munten, die er aan de buitenkant volkomen identiek uitzien. Eén van de munten is echter zwaarder dan de andere, die allemaal even zwaar zijn. Men beschikt over een balans, waarmee men kan bepalen of een groep van één of meer munten zwaarder of lichter is dan een groep an-dere munten ofwel dat beide groepen even zwaar zijn.

De volgende algoritme heeft tot doel de afwijkende munt te vinden en apart te leggen.

leg de munten op een stapel

MI: zolang er nog geen munt apart ligt (i)

én er nog meer dan één munt op de stapel ligt (ii)

neem de bovenste twee munten van de stapel weeg de ene munt tegen de andere

~o,/

leg de zwaardere munt

apart

~'~

één munt op de stapel (ii)

T

F

leg de laatste munt apart Welke uitspraak is juist?

l. met deze algoritme vindt men niet altijd de afwijkende munt

2. de algoritme is voor alle gevallen juist, maar de eerste voorwaarde (i)

bij M2 kan worden weggelaten

3. de algoritme is voor alle gevallen juist, maar de voorwaarde (ij) bij M2

kan worden weggelaten

4. de algoritme is voor alle gevallen juist, maar de voorwaarde (ii) bij MI

kan worden weggelaten

(21)

struktuurdiagrammen 19

5. Gegeven is een aantal van N munten (N

>

1), die er aan de buitenkant vol-komen identiek uitzien. Eén van de munten is echter zwaarder dan de andere, die allemaal even zwaar zijn. Men beschikt over een balans, waarmee men kan

bepalen of een groep van één of meer munten zwaarder of lichter is dan een

groep andere munten ofwel dat beide groepen even zwaar zijn.

De volgende algoritme heeft tot doel de afwijkende munt te vinden en apart

te leggen.

I

leg de munten op een stapel aantal := N

zolang er geen munt apart ligt

~

/ .

leg de bovenste munt van de stapel apart aantal := aantal - 1

~

/ .

verdeel de overgebleven stapel in 2 even grote stapels

weeg de ene stapel tegen de andere stapel

~td/.

verwijder de lichtste stapel aantal := aantalj2

~';:

verwijder deze munt

I

Welke uitspraak is juist?

1. de algoritme is korrekt voor alle natuurlijke getallen N

>

1 2. de algoritme is alleen korrekt wanneer N even is (N

>

1) 3. de algoritme is alleen korrekt wanneer N oneven is (N

>

1) 4. de algoritme is alleen korrekt wanneer N een macht van 2 is (N

>

(22)

20 struktuurdiagrammen

6. Gegeven is een niet lege rij R van onderling verschillende reële getallen =1= 0:

x I' x2' x3' . . . . De lengte van de rij is onbekend. De rij wordt afgesloten door het getal 0, dat dus zelf niet tot R behoort.

Men wil het maximum en het minimum van R bepalen.

Men ontwerpt daartoe een tweetal algoritmen waarvan hieronder de struktuur-diagrammen zijn gegeven.

I. lees xl 11. lees xl min := Xl min := xl max := XI max := Xl i := I i := 2 zolang x. =1= 0 I lees x. I i := i

+

I zolang xi =1= 0 lees x. I

~~

min:= x. I

~y:

~/.

max:= x.

~J

I min:= \

I

max:= x. I i := i

+

I lees x. I 1. I is juist 11 is juist 2. I is juist II is onjuist 3. I is onjuist 11 is juist 4. I is onjuist 11 is onjuist

(23)

~~~~~~~---

-struktuurdiagrammen 2 I

7. Gegeven is een rij met een onbekend aantal (maar met minstens twee) verschil-lende reële getallen x I ,x

2' . . . . De getallen zijn ongelijk aan O.

De rij wordt afgesloten door het getal O. Er is een algoritme gekonstrueerd die wordt beschreven door het volgende struktuurdiagram.

i ;= I zolang Xi =1= 0 a> x. I T b

<

X. I a ;= X. T I b ;= \ i ;= i + I

Welke uitspraak is juist?

F

F

De variabelen a en b zijn van het type real; de va-riabele i van het type integer.

1. door uitvoering van deze algoritme krijgt a de waarde van het maximum en b de waarde van het minimum van de getallen Xi

2. door uitvoering van deze algoritme krijgt a de waarde van het minimum en b de waarde van het maximum van de getallen \

3. pas als de opdracht i;= 1 wordt veranderd in i;= 2 kan door

uitvoering van de algoritme het minimum en het maximum van de getallen Xi worden bepaald

(24)

22 struktuurdiagrammen

8. Een integer array bevat in de elementen a [1) t/m a [n) de waarden van n verschillende gehele getallen. De rij is ongesorteerd.

9.

Men wil van een bepaald getal weten of het in de rij voorkomt en zo ja op welke plaats.

Hiertoe is een algoritme geschreven waarvan hier het struktuurdiagram is gegeven. Aan dit diagram ontbreken echter nog enige teksten.

Zoek uit de aangeboden teksten de juiste teksten bij de aangegeven plaatsen. (1) (2) T druk af (i) (1) 1.

e

2.

e

3. A 4. A (3) getal a [i) F schrijf ('niet gevonden') (2) (3) E D F B;D G B H B A B

e

D E F G H i := 1 i := i + 1 getal a [1) getal : = a [i) voor i: = 2 (1) n zolang i";; n

zolang getal i= a[i) A i";; n zolang getal i= a[i) A i

<

n

Gegeven een getal g (g E ~+). Men wil van dit getal het aantal delers (inklu-sief 1 en g zelf) bepalen. Daartoe is van de volgende algoritme het struktuur-diagram gegeven. Aan dit diagram ontbreken echter twee teksten.

CD

voor i:=2(1)g

~/

aantal delers : =

aantal delers + 1

De teksten die moeten worden ingevuld zijn:

CD

CD

1. A

e

2. B

e

3. A D 4. B D A aantal delers := 0 B aantal delers :=

e

g';-i*i=g D g = entier (gfi)

(25)

---

-struktuurdiafframmen 23

JO. Een rij van N gehele getallen genaamd getalrij moet worden gesorteerd naar opklimmende grootte, waarbij van alle elementen die meer dan eens voorko-men de dubbele exemplaren worden verwijderd (zodat de rij dus korter wordt). De grootheid lengte moet na het sorteren het aantal overgebleven elementen

in getalrij aangeven.

In de gekozen algoritme worden de dubbele elementen verwijderd door deze

te verwisselen met het laatste element van de rij overgebleven getallen. De al-goritme is geschreven in de vorm van een struktuurdiagram waaraan nog enige teksten ontbreken. De variabele m verwijst naar het eerste element van de on-gesorteerde deelrij , de variabele k naar het kleinste element van het bekeken deel van de ongesorteerde deelrij.

a) b) c) d) e) f) g) h) A B m := I; lengte := m m := I . , lengte := N zolang m < N zolang m~N zolang m < lengte

verwissel getalrijj en getalrij k

verwissel getalrijk en getalrijN; lengte := lengte + 1 verwissel getalrij. en getalrij, t; lengte := lengte

-I eng e k:= m voor i:= m + 1 (1) lengte

~rr

i

~

k := i

~

"

?<

c

I

verwissel getalrijk en getalrijm m := m + 1

De algoritme is korrekt door invullen van:

A B C

1. a c f

2. a d g

3. b d f

(26)

1. 24

PROGRAMMAWERKING

begin integer x,y; x := y := 12; y := x + y; outinteger (l,x + y); begin integer x; x := y := 36; outinteger Cl ,x) end; outinteger (l,x); outinteger (l,x + y) end

Door uitvoering van dit programma worden de volgende getallen afgedrukt:

1. 24 36 12 48 2. 24 36 36 72

3. 36 36 36 72

4. 36 36 12 48

2. De variabelen a, b, c, d, e, fen y zijn van het type integer en krijgen de vol

-gende waarde:

a := 6; b := 5; c := 4; d := 3; e := 2; f := 1; y :=

g-

a

>

Cg b

>

3 then 6 else 7) then begin

if c';;;; 4 1\ d

:>

4 then 7 else 8 end else

!!

Ce ,;;;; 6)

==

Cf ,;;;; 6) then 8 else 9 Hiermee heeft y dus de waarde:

1. 6

2. 7

3. 8

(27)

3. I. begin integer x;;

real y; comment x is geheel; x := 2; y := 15;

outinteger (1,x + y)

end

programma werking 25

II. begin

integer x; comment x is geheel; real y;;

x := 2; y := 15; outinteger (1,x

+

y)

end Welk van deze programma's geeft als uitvoer 17?

1. alleen 1 2. alleen II 3. I en II

4. geen van beide

4. De volgende twee programmadelen moeten het minimum en het maximum van n verschillende getallen xl' x2' . . . , xn bepalen.

I. minimum := xlI); maximum := xlI);

for i:= 2 step 1 until n do

- - --- - - -

--if minimum> x[i) then minimum:= xli) else if maximum

<

xli) then maximum:= xli)

II. minimum:= maximum := xlI); for i:= 2 step until n do begin

if minimum> xli) then minimum:= x[i) ; if maximum

<

xli) then maximum:= xli); end

Welke van de volgende uitspraken is juist?

1. alleen met programmadeel I worden het minimum en maximum bepaald 2. alleen met programmadeel II worden het minimum en maximum bepaald 3. met beide programmadelen worden minimum en maximum bepaald;

deel I zal in het algemeen minder tijd kosten dan deel II

4. met beide programmadelen worden minimum en maximum bepaald; deel II zal in het algemeen minder tijd kosten dan deel I

(28)

26 programmawerking

5. Als de boolean variabelen b I en b2 beide de waarde false hebben, dan krijgt

x de waarde 2 door uitvoering van de opdracht I. x := if bl/\ 'b2=--'bl v b2 then 1 else 2 Ir. x := if bl/\--, b2:::> --, bI v b2 th en I else 2 l. I is juist IJ is juist 2. I is juist IJ is onjuist 3. I is onjuist 11 is juist 4. I is onjuist II is onjuist

6. Welke van de volgende algoritmen wisselt de waarden van de variabelen a en bom? l. a:=b; b := a 2. c := b; a := c; b := a 3. a := a + b; b := a - b; a := a - b

4. geen van de drie bovenstaande algoritmen

7. In het volgende programmadeel zijn u, uo, v en vo variabelen van het type integer.

De variabelen uo en vo hebben een waarde, waarbij geldt vo > l. u -:= uo;

v := vo;

for v := v - I while v> 1 do u:= u + uo Door uitvoering van dit programmadeel krijgt u de waarde van:

l. uo*(vo - 1)

2. uo*vo

3. (uo - 1)*(vo - 1)

(29)

programmawerking 27

8. Gegeven is het volgende programmadeel.

for i:= step I until x do y: = y + 2 * i- I; p := y

De variabelen zijn van het type integer, x heeft de beginwaarde u en y de be-ginwaarde v.

Na uitvoering geldt dat: l. p = uv + u2 2. p = uv + v2 3. p = u + v2 4. p = v + u2

9. In een programma komen de volgende statements voor: z := y;

y := x*z*sign (y)

Op grond van het feit dat na executie van deze opdrachten y

<

0 blijkt te zijn, mogen we konkluderen dat de beste uitspraak is:

1. x

<

0, z

<

0 2. x =1= 0, z

<

0

3. x

<

0, z =1= 0 4. x =1= 0, z =1= 0

10. Gegeven is het volgende deel van een programma waarin alle variabelen van het type integer zijn.

De variabele a heeft een waarde. n : = entier (sqrt (a»; for i: = I step I un til n do if a -;. i * i = a then x: = i Na uitvoering geldt:

I. x is gelijk aan 1 of gelijk aan een priemgetal 2. x is een deler van a tenzij a een priemgetal is 3. x is een deler ~ 1 van a mits a

>

0

(30)

28 programma werking

11. In de volgende opdrachten zijn i, j en n variabelen van het type integer; n heeft een waarde.

i := I;

for i:= i + i while i < n do := i Welke van de volgende uitspraken is juist?

1. dit programmadeel eindigt alleen als n > 0

2. de eindwaarde van j is een macht van 2 waarbij j < n 3. de eindwaarde van j is een macht van 2 waarbij j;;';;' n

4. er zijn waarden van n waarvoor de waarde van j ongedefinieerd is

12. In het volgende programmadeel zijn i,j en n variabelen van het type integer; n heeft een waarde> O.

j := 0;

for i:=j*j while i<n do j :=j+

De variabele j krijgt alleen een gedefinieerde waarde als dit programmadeel normaal word t beëindigd.

Door uitvoering van dit programmadeel verkrijgt j een waarde waarvoor geldt: 1. n - l < l , ç n

2. n ,ç j2

<

n + 1 3. U-I)2<n,çl 4. ongedefinieerd

13. Gegeven is het volgende stukje programma waarbij de variabele no een waarde heeft uit de verzameling {2,3,4,5, . . . }. De variabelen j, n en no zijn van het type integer.

n':= no;

for j := 1,j + 1 while j < n do n:= n*n

De variabele n krijgt alleen een gedefinieerde waarde als dit programmadeel normaal wordt beëindigd.

Na uitvoering van dit stukje programma geldt voor de waarde van n dat deze gelijk is aan:

1. no 2 no - 1 2. no2(no-l) 3. no2nO

(31)

programma werking 29

14. Men wil eX benaderen met reeksontwikkeling:

x x2 x3

eX = 1 +

TI

+

2!

+

Ti

+ . . .

Er is gegeven, dat het sommeren van de reeks gestopt mag worden, zodra er een term gevonden wordt, die in absolute waarde kleiner is dan een gegeven getal eps (0 < eps ~ 1). Het doet er niet toe of die laatste term wel of niet bij de reeks wordt opgeteld.

Ga na of de volgende algoritmen voor dit doel geschikt zijn; hierbij mag wor-den aangenomen:

- i is een integer variabele;

- x, term, reeks en eps zijn real variabelen; - x en eps hebben een waarde.

Na uitvoering van deze algoritmen zou de variabele reeks de gezochte waarde moeten hebben.

I. reeks := 0; term :;, I; i := 0;

for i: = i + 1 while abs (term) ;;;, eps do begin

reeks := reeks

+

term; term : = term

*

x/i end

Ir.

reeks := 1; term := 0; i := 0;

for i := i + 1 while abs (term) ;;;, eps do begin

term := term

*

x/i; reeks := reeks + term end Er geldt: 1. I juist II juist 2. I juist II onjuist 3. I onjuist II juist 4. I onjuist II onjuist

(32)

30 programmawerking

15. Men wil ln (I + x) benaderen met reeksontwikkeling: x2 x3 x4

In (I

+

x) = x -

2"

+""3

-

""4

+

(-1

<

x ~ I) Er is gegeven dat het sommeren van de reeks gestopt mag worden, zodra er een term gevonden word t, die in absolute waarde kleiner is dan een gegeven getal eps (0

<

eps <.::; 1). Het doet er niet toe of die laatste term wel of niet bij de reeks wordt opgeteld.

Ga na of de volgende algoritmen voor dit doel geschikt zijn; hierbij mag wor-den aangenomen:

- i is een integer variabele;

- x, term, reeks en eps zijn real variabelen;

- x en eps hebben een waarde (-I

<

x ~ 1).

Na uitvoering van deze algoritmen zou de variabele reeks de gezochte waarde moeten hebben.

I. reeks := 0; term := I; i := 1;

for i:= i

+

I while abs (term) ;;;, eps do begin

term := term*(-x)*(i - I)/i; reeks : = reeks + term end

II. reeks:= 0; term := x; i := I;

for i : = i + 1 while abs (term) ;;;, eps do begin

reeks: = reeks + term; term:= term*(-x)*(i - I)/i end Er geldt: 1. I is juist 11 is juist 2. I is juist II is onjuist 3. I is onjuist 11 is juist 4. I is onjuist II is onjuist

(33)

programmawerking 31

16. De integer variabele n heeft een waarde E ~+ (positieve gehele getallen). De integer array rij [I : n] is een naar grootte gesorteerde rij van n getallen. Met onderstaande algoritme willen we volgens een halveringsmethode nagaan of een bepaald getal z voorkomt in deze rij.

onder := 1; boven := n;

for i: = while boven - onder;;' 2 do begin

midden := (boven + onder) 7 2;

if z

>

rij [midden] then onder: = midden else boven: = midden end

Welke van de volgende uitspraken is juist?

1. als de algoritme eindigt, dan komt z in de rij voor

2. als z in de rij voorkomt, dan wordt z altijd gevonden en is gelijk aan rij[ mid d en ]

3. als z in de rij voorkomt, dan wordt z altijd gevonden en is gelijk aan rij [onder] of aan rij [boven]

4. als z in de rij voorkomt, dan wordt z niet altijd gevonden

17. Men wil de grootste gemene deler (GGD) van twee gegeven getallen a en b (a, b E ~+) bepalen.

Men berekent op systematische wijze de veelvouden van de grootste gemeen-schappelijke deler van a en b, totdat de deler zelf is gevonden.

Het volgende programma werd geschreven. vI := a; v2 := b;

for i:= I while vI

'*

v2 do

if vI

>

v2 then vI := vI - v2 else v2 := v2 - vI; ggd := v2

Alle in dit programma voorkomende variabelen zijn van het type integer en hebben zo nodig een waarde.

Welke uitspraak is juist?

1. in plaats van de grootste gemene deler wordt hier het kleinste gemene veelvoud bepaald

2. in de for-statement moet een telling worden bijgehouden; de GGD is de eindstand van de teller

3. de if-statement moet vervangen worden door

if vI

>

v2 then vI := vI - belse v2 := v2 - a;

4. na uitvoering van dit programmadeel heeft ggd inderdaad de waarde van de grootste gemene deler van a en b

(34)

32 programmawerking

18. Men wil het kleinste gemene veelvoud (KGV) van twee gegeven getallen a en b (a, b E Z+) bepalen.

Men berekent op systematische wijze de veelvouden van a en b totdat er twee gelijke veelvouden worden gevonden.

Het volgende programma werd geschreven. vi := a; v2 := b;

for i := I while vI =1= v2 do

if vI

>

v2 then v2:= v2 + belse vI := vI + a; kgv := v2

Alle in dit programma voorkomende variabelen zijn van het type integer en hebben zo nodig een waarde.

Welke uitspraak is juist?

I. de laatste opdracht van dit programmadeel behoort te zijn kgv := vi := v2 in plaats van kgv:= v2

2. in de for-statement moet een telling bijgehouden worden; het kgv is de eindstand van de teller

3. in de for-statement worden of vi Of v2 verhoogd nadat vi gelijk gewor-den is aan v2; de herhaling wordt te laat beëindigd

4. na uitvoering van dit programmadeel heeft kgv inderdaad de waarde van het kleinste gemene veelvoud van a en b

19. De variabele a heeft de waarde 21 en de variabele b de waarde 33. Men wil het kleinste gemene veelvoud (KGV) van a en b bepalen en schrijft daartoe het volgende programmadeel waarin alle variabelen van het type integer zijn.

i:=j:=n:=I; for i := i while (i =1= a V j =1= b) do begin i := if i

<

a then i + I else I; j : =

g:

j

<

b then j + I else I; n := n + I end

N.B. Of dit programmadeel een korrekte algoritme is voor het berekenen van het kleinste gemene veelvoud zult U voor Uzelf moeten nagaan.

De variabele n krijgt alleen een gedefinieerd waarde als dit programmadeel normaal wordt beëindigd. Na afloop van dit stukje programma heeft n de waarde:

1. 77 2. 231 3. 693

(35)

programmawerking 33

20. De integer variabele a heeft een waarde waarvoor geldt I';;;; a .;;;; 4. Als a = i, i = 1,2,3,4, dan moet de ie opdracht worden uitgevoerd van opdr I, opdr2, opdr3 en opdr4.

Men kan dit in Algol als volgt programmeren.

a)

b)

if a = 1 then opdr I else if a = 2 then opdr 2 else if a = 3 then 0 pdr 3 else 0 pdr 4 if a';;;; 2 then

begin

if a = 1 then opdr 1 else opdr 2 end else

if a = 3 then opdr3 else opdr4 c) Bij de deklaraties opnemen

switch keuze := aI,a2,a3,a4 en bij de opdrachten

goto keuze[a]; al: opdr 1; goto aS; a2: opdr2; goto aS; a3: opdr3; goto aS; a4: opdr4;

aS:

Het antwoord, dat de meeste korrekte mogelijkheden bevat, is: l. a

2. a en b 3. a en c

(36)

34 programma werking

21. Welk van de onderstaande programmadelen bepaalt de som van precies n in te lezen getallen?

Inlezen geschiedt d.m.v. een (funktie)procedure genaamd lees, dat wil zeggen dat lees bij elke aanroep de waarde van het volgende getal krijgt dat op de kaarten met gegevens staat.

De variabelen x en som zijn van het type real, k en n van het type integer; n heeft een waarde> O.

I. som := 0;

for k: = I step until n do x: = lees;

som := som + x 2. som := 0;

for k:=O,k+J while k~n do begin

x := Jees; som := som + x

end 3. som := 0;

for k:= J step 1 until n do som:= som + lees 4. for k:= J step Juntil n do

begin

som := 0; x := Jees; som := som + x

end

22. De integer variabele x heeft een waarde.

De waarde van de uitspraak

x*(x - 3) = 0

==

x = J v x = 3

is

1. true voor elke waarde van x

2. true voor slechts één waarde van x

3. false voor slechts twee waarden van x

(37)

AANTAL BEWERKINGEN/AANTAL OPDRACHTEN

( KOMPLEXITEIT)

35

l. Een rij ongeordende elementen wordt als volgt op grootte gesorteerd. Loop de rij van n elementen af en bepaal welk element het kleinst is. Verwissel dit element met het eerste element van de rij.

Herhaal vervolgens ditzelfde proces met de rij van de laatste n - I elementen enz., totdat de gehele rij is gesorteerd.

Het aantal benodigde bewerkingen is bij grote n bij benadering evenredig met: l. In (n)

2.

F

3. n2 4. n!

2. Het aantal bewerkingen om van een ongeordende rij van n elementen de plaats van het grootste element te bepalen is afgezien van de initialisatie even-redig met:

l. In (n) 2.

F

3. n 4. n2

3. Men heeft twee naar opklimmende grootte gesorteerde rijen getallen elk be-staande uit n elementen.

Men wil van de twee rijen één gesorteerde rij maken. Daartoe wordt een rij van 2n open plaatsen gevuld met steeds de kleinste van de twee nog niet ver-werkte kleinste elementen van de oorspronkelijke rijen.

Het aantal bewerkingen dat hiervoor nodig is is evenredig met:

1.

Vn

2. In (n) 3. n

(38)

36 aantal bewerkingen/aantal opdrachten (komplexiteit)

4. De eerste i elementen van een array met n elementen hebben waarden ongelijk aan 0, de daarop volgende elementen zijn gelijk aan O. De waarde van i

(~ n) is onbekend.

Om i te bepalen laat men de array halveren en laat men afhankelijk van de waarde van het laatste element van de eerste helft van de array het proces voortzetten met de juiste array helft.

Het aantal benodigde bewerkingen voor het bepalen van i is evenredig met: 1.

v'i

2. i2 3. 20

4. In (n)

5. Op grond van de betrekkingen

xJ = 1 en \+1 = 1 + 1/\

kunnen we een algolprogrammadeel zonder overbodigheden of gekunsteldhe-den schrijven waarmee Xo berekend wordt.

Het aantal statements in dit programmadeel bedraagt: 1. één

2. twee 3. drie 4. vier

6. Op grond van de betrekkingen U

o

=

0, UI

=

1 Ui = U

i_1

+ U

i_2, i E {2,3,4, . . . }

kunnen we de opdrachten formuleren tot het berekenen van Uo (n heeft een bekende waarde). In-en uitvoeropdrachten blijven buiten beschouwing. Het aantal benodigde opdrachten blijkt te zijn:

1. twee 2. drie 3. vier 4. vijf

(39)

aantal bewerkingen/aantal opdrachten (komplexiteit) 37

7. In een programma komt een rea I array a voor waarvan de n elementen a[ I) t/m aln) een waarde hebben.

Gevraagd wordt een algoritme voor het bepalen van het gemiddelde van de n gegeven getallen. Men heeft de beschikking over één of meer van de volgende opdrachten: a) b) c) Toekenningsopdracht Herhalingsopdracht Voorwaardelijke opdracht

variabele :== aritmetische expressie voor i:== I (1) n doe opdr als boolean expressie dan opdr

opdr onder b en c is een enkelvoudige opdracht, waarin niet wordt gedeeld. Hoeveel van bovenstaande opdrachten a, b of c heeft men voor het schrijven

van een zo eenvoudig mogelijke algoritme zonder gekunsteldheden, voor het

bepalen van het gemiddelde van de n gegeven getallen in totaal nodig?

1. twee 2. drie 3. vier 4. vijf 8. Gegeven de betrekkingen

(~)

== (n _

n~)!

k! en o! == 1. Enig inzicht leert ons, dat

(

~

) == I en

(~)

== n -

~

+

I (k

~

I)' voor k

>

1.

Met behulp van een algolprogramma willen we nu

(~)

(uitgesproken als n

over k) berekenen. De grootheden n en k ( E IN) zijn bekend, n

>

k

>

O. Het aantal benodigde opdrachten bij een zo beknopt mogelijk geschreven pro-gramma bedraagt:

l. een

2. twee

3. drie

(40)

38 aantal bewerkingen/aantal opdrachten (komplexiteit)

9. Men wil de tafels van vermenigvuldiging van I tlm Sp (p E IN) via de regel-drukker laten afdrukken. Er moeten .steeds S tafels naast elkaar komen te staan. Daaronder volgen dan na twee opengelaten regels de volgende Stafels.

I x I = I 2 xl = 2 10xl=1O

1 x 6 = 6

enz.

Ix2=2 Ix3 = 3 Ix4=4 lxS=S

2 x2 = 4

10 x 2 = 20

Men schrijft het programma op een logische en voor de hand liggende wijze zodanig dat de opdrachten

druk af (m); schrijf ('x'); druk af (n); schrijf ('='); druk af (m*n);

spatie (S) herhaald worden uitgevoerd.

De goto-opdracht en de voorwaardelijke en alternatieve opdracht worden niet gebruikt.

Het nodige aantal herhalingsopdrachten (for-statements in Algol) bedraagt:

1. één 2. twee 3. drie 4. vier

10. Bij uitvoering van het programma uit vraag 9 mag worden aangenomen dat een vermenigvl,lldiging één bewerking kost.

Het aantal bewerkingen dat nodig is, is evenredig met: 1. p

2.

sP

3. ps 4. (Sp)!

(41)

aantal bewerkingen/aantal opdrachten (komplexiteit) 39

11. We stellen dat de sorteertijd nodig voor het sorteren van een rij van n ge-tallen volgens een gegeven algoritme gelijk is aan An 2 sec.

Men wil deze tijd als volgt verkorten.

De rij getallen wordt verdeeld in d deelrijen waarbij we voor het gemak mogen aannemen dat d een deler is van n, en dat elke deelrij even groot is. De deelrijen worden elk volgens de gegeven sorteeralgoritme gesorteerd. Vervolgens wordt een nieuwe gesorteerde rij samengesteld door de klein-ste nog niet gebruikte elementen van de d deelrijen na te gaan en hiervan de kleinste te gebruiken om de nieuwe gesorteerde rij mee uit te breiden. De sorteertijd wordt nu:

1. A x n2/d

+

B x n x d

+

C x n sec. 2. A x n2/d + B x n2 x d + C x n sec. 3. A x (n/d)2 + B x (n/d) + C x n sec. 4. A x (n/d)2 + B x n x d + C sec.

(42)

40

PROGRAMMA

-

ONTWERP

1. Men heeft twee lijsten genaamd getallijst en verwijzingenlijst, beide bestaande uit n elementen.

De getallijst is ongesorteerd, de elementen van de verwijzingenlijst wijzen ach-tereenvolgens de elementen naar opklimmende grootte van getallijst aan. Aldus is verwijzingenlijst [1) de index van het kleinste getal uit getallijst en verwijzingenlijst [n) de index van het grootste getal uit getallijst.

Alle variabelen zijn van het type integer en hebben zo nodig een waarde. Men wil aan de variabele a de waarde toekennen van het op twee na grootste ge-tal uit gege-tallijst.

Hiervoor gebruikt men de opdracht:

1. a : = getallijst [n - 2) 2. a := verwijzingenlijst[n - 2)

3. a : = verwijzingenlijst [getallijst [n - 2)) 4. a : = getallijst [verwijzingenlijst [n - 2))

2. Bij het ontwerpen van een algoritme voor het zodanig plaatsen van acht ko-ninginnen op een schaakbord zodat zij elkaar niet kunnen slaan, hebben we opdrachten nodig in de trant van

verwijder de koningin van een bepaald veld en

plaats een koningin op een bepaald veld.

Deze opdrachten kunnen uitgewerkt worden door gebruik te maken van de rijen op het bord, de opwaartse en de neerwaartse diagonalen.

Welke van de volgende uitspraken is juist?

1. deze uitwerking was onmogelijk geweest met een vierkante Boole-matrix van 8 x 8 (tweedimensionale boolean array van 8 x 8 elementen)

2. als een veld bestreken wordt door een koningin mag dit door geen en-kele andere koningin meer bestreken worden; daarom was registratie van de bestreken velden ook mogelijk geweest

3. als toegestaan wordt dat een veld meer dan één keer bestreken mag worden, dan is het direkte gevolg dat er in zo'n algoritme twee koningin-nen op één veld kunkoningin-nen komen te staan

(43)

programma-ontwerp 41

3. Van een ongeordende rij van n (n heeft een bekende waarde) positieve getal-len moet de waarde van het grootste element worden bepaald.

4.

De algoritme die bij uitvoering dit maximum oplevert, blijkt te bestaan uit: 1. een herhalingsopdracht op een voorwaardelijke opdracht; een

toeken-ningsopdracht

2. een herhalingsopdracht op een toekenningsopdracht; een voorwaardelijke opdracht

3. een toekenningsopdracht; een herhalingsopdracht op een voorwaardelijke opdracht

4. een voorwaardelijke opdracht; een herhalingsopdracht op een toeken-ningsopdrach t

N.B. Met de uitdrukking een herhalingsopdracht op een toekenningsopdracht b.v. wordt bedoeld dat de toekenningsopdracht onder besturing van de herhalingsopdracht wordt uitgevoerd.

J. In een programma moeten de getallen al' a2, . . . , a 100' bI' ... , b 100 (in deze volgorde!) worden ingelezen. Men wil het programma de waarde

100

van L a.b. laten afdrukken. i=l 1 1

IJ. In een programma moeten dezelfde getallen worden ingelezen, maar nu in de volgorde al' bi ,a2, b2, . . . , alOo' b 100. Ook hier wil men het

pro-100

gramma de waarde L a.b. laten afdrukken. i= 1 1 I

In beide programma's wil men zo weinig mogelijk geheugenruimte gebruiken. De maximaal toegestane lengte van een array is lOO elementen.

In het zo kort mogelijk geschreven programma komen voor: 1. in I één array in II geen array

2. in I twee arrays in II geen array 3. in I één array in 11 één array 4. in I twee arrays in 11 één array

(44)

5.

6.

42 programma-ontwerp

I. In een programma moeten de getallen al ,a2, ... ,a 100,b I' . . . ,b 100' Cl' . . . ,CIOO (in deze volgorde!) worden ingelezen.

100

Men wil het programma de waarde van ~ a.b.c. laten afdrukken.

i= I 1 1 1

II. In een programma moeten dezelfde getallen worden ingelezen, maar nu in de volgorde a l ,b1,a2,b2, · · · ,alOo,bIOO,cl"" ,c IOO .

100

Ook hier wil men het programma de waarde ~ a.b.c. laten afdrukken.

i=1 I 1 1

In beide programma's wil men zo weinig mogelijk geheugenruimte gebruiken. De maximaal toegestane lengte van een array is 100 elementen.

In het ZQ kort mogelijk geschreven programma komen voor:

1.

2. 3. 4.

I.

in I één array in 11 geen array in I één array in 11 één array in I twee arrays in 11 één array

in I twee arrays in 11 twee arrays

In een programma moeten de getallen al ,a2, .. . ,aloo,b l, . . . ,b loo

(in deze volgorde!) worden ingelezen. Men wil het programma getallen cl ,c

2' . . . ,cIOO laten afdrukken, zodanig dat ci = max {ai,bi} voor i = 1,2, . . . ,100.

11. In een programma moeten dezelfde getallen worden ingelezen in dezelf-de volgordezelf-de. Men wil het programma alle getallen uit dezelf-de a- en de b-rij als één gesorteerde rij in opklimmende grootte door de regeldrukker laten afdrukken.

In beide prqgramma's wil men zo weinig mogelijk geheugenruimte gebruiken. De maximaal toegestane lengte van een array is 100 elementen.

In een zo kort mogelijk geschreven programma komen voor:

1. in I één array in 11 één array 2. in I één array in 11 twee arrays 3. in I twee arrays in 11 één array

(45)

programma-ontwerp 43

7. Uit de betrekkingen

Ol = 1 en

G)

nl (uitgesproken n over k)

(n - k)lkl volgt:

(

~)

=

1

en

(~)

n -

~

+

1

(k :

1) ,

voor k

~

1. De grootheden n en k ( E IN) hebben een waarde, n ~ k ~ O.

Een zo kort mogelijk algolprogramma, dus zonder gekunsteldheden en over-bodigheden waarmee

(~)

kan worden berekend, bevat naast deklaraties en andere programma-elementen als begin en end:

1. één toekenningsopdracht; één herhalingsopdracht met daarin één toe-kenningsopdracht

2. één toekenningsopdracht; één herhalingsopdracht met daarin twee toe-kenningsopdrachten

3. één toekenningsopdracht; twee herhalingsopdrachten met in elk één toekenningsopdracht

4. twee toekenningsopdrachten; één herhalingsopdracht met daarin één toekenningsopdracht

N.B. Het is niet de bedoeling dat het programma in de vorm van een procedure wordt

geschreven.

8. Men schrijft een stukje programma waarin van een ongeordende rij positieve getallen r[ 1 : nJ de waarde van het grootste element bepaald wordt.

Daarbij wordt gebruik gemaakt van de for-statement

if-statemen t

assignmen t state men t

for . .. step . . . until . . do SI

-

-if .. . then S2

en van de variabelen n,i,r[ ... J en max.

Na afloop van de uitvoering van dit programmadeel mag de rij r[ 1 : nJ niet gewijzigd zijn.

Het stukje programma blijkt te bestaan uit:

1. een for-statement met voor SI een if-statement; een assignment statement 2. een for-statement met voor SI een assignment statement; een if-statement 3. een assignment statement; een for-statement met voor SI een if-statement 4. een if-statement; een for-statement met voor SI een assignment statement

(46)

44 programma-ontwerp

9. De integer variabelen a en b hebben resp. de waarden ao en bo met ao,bo E lN. Men wil het produkt van a

o en bo berekenen (produkt := ao*bo)' Helaas mag U geen gebruik maken van de * operator, doch slechts van de +-operator. Schrijf een zo kort mogelijk programmadeel waarin het produkt van ao en bo

bepaald wordt door herhaald optellen. U mag daarbij uitsluitend gebruik maken van de identifiers a, b en produkt, toekenningsopdracht(en) en de herhalings-opdracht voor . . . := .. . ( . . . ) . . . doe.

In dit programmadeel

I. blijven de waarden van a en bonveranderd 2. verandert of a of b van waarde

3. veranderen én a én b van waarde 4. is een extra identifier noodzakelijk

10. De integer variabelen a en b hebben resp. de waarden ao en bo met ao,bo E Z+

(positieve gehele getallen).

Men wil q = a -:- b bepalen door b herhaald van a af te trekken en het aan-tal keren dat dit mogelijk is voordat a negatief wordt te tellen.

Schrijf voor Uzelf een zo kort mogelijk programma waarbij U slechts mag kiezen uit de volgende opdrachtsstrukturen.

AS assignment statement

IS if-statement if . . . then SI ISE if-statement met else if . . . then S2 else S3 FS for-statement for ... while ... do S4 Uw programma blijkt de volgende struktuur te bezitten:

I. een FS met voor S4 een AS; een IS 2. een AS; een FS met voor S4 een AS

3. een FS met voor S4 een ISE met daarin voor S2 en S3 een AS 4. een AS; een FS met voor S4 een IS; een AS

11. Een perfekt getal is een positief geheel getal> I, dat gelijk is aan de som van

zijn delers (inklusief 1, exklusief het getal zelf).

Zo is bijvoorbeeld 28 een perfekt getal, want 28 = 1 + 2 + 4 + 7 + 14. Een zo kort mogelijke algoritme die bij uitvoering alle perfekte getallen

<

1000 oplevert bevat naast opdrachten van een ander type: I. één herhalingsopdracht en één voorwaardelijke opdracht 2. twee herhalingsopdrachten en één voorwaardelijke opdracht 3. één herhalingsopdracht en twee voorwaardelijke opdrachten 4. twee herhalingsopdrachten en twee voorwaardelijke opdrachten

(47)

:n

~+

programma-ontwerp 45

12. Men wil van alle gehele getallen van 1 tot en met 1000 het aantal delers

(in-klusief 1 en het getal zelf) bepalen en alle getallen met meer dan 10 delers laten afdrukken.

Een zo kort mogelijk programma, dat al deze getallen met meer dan 10 delers

afdrukt bevat naast andere programma-elementen:

1. één herhalingsopdracht en één voorwaardelijke opdracht

2. twee herhalingsopdrachten en één voorwaardelijke opdracht

3. één herhalingsopdracht en twee voorwaardelijke opdrachten

4. twee herhalingsopdrachten en twee voorwaardelijke opdrachten

13. Men wil van een rij in te lezen gehele, positieve getallen de volgende groot-heden berekenen:

a. de som van de getallen, die een kwadraat zijn;

b. de som van de oneven getallen, die geen kwadraat zijn;

c. de som van alle even getallen, die geen kwadraat zijn.

Voorbeeld:

Met de invoergegevens

5,9,4,6,7,16,24,13,25,0

(de 0 dient om het einde van de rij invoergegevens te markeren) wordt som a = 9 + 4 + 16 + 25 = 54 som b = 5 + 7 + 13 som c = 6 + 24 = 25 = 30.

Voor deze toepassing is het aantal arrays, dat men in een algolprogramma

nodig heeft, minstens gelijk aan

1. 0

2.

3. 2

(48)

46 programma-ontwerp

14_ De verzameling van invoergegevens bevat n gehele getallen_

Voor het bepalen van de som van deze getallen kan gebruik gemaakt worden van de volgende algoritme waarin alle variabelen van het type integer zijn_

som := 0;

voor i:= 1 (1) n doe [

lees (ge tal); som := som + getal

Nu wil men echter de som bepaald hebben van het eerste, tweede, vierde, zevende, elfde enz. getal (er wordt steeds één getal meer overgeslagen)_

De algoritme moet als volgt worden gewijzigd: som := 0;

A' ,

voor i:= 1 (1) n doe

i

lees (getal);

l

B[~m

,=

,om

+

g",I,

De beschikbare teksten zijn: a) j : = stap: = 0

b) j:= 0; stap :=

c) j:=l;stap:=O

d) als i = j dan

e) als i

*'

j dan lees (getal) anders

f) j: = j + stap;

stap := stap + 1 g) stap:= stap + 1;

j := j + stap Er moet worden ingevuld:

A B C

l. a e f

2_ b e g

3. c d g

(49)

programma-ontwerp 47

15_ Men zoekt naar positieve gehele getallen k, I en m met de eigenschap dat k2 + 12 = m2 _ Dit zijn de zgn. Pythagoreische getallen.

Voorbeelden: 32 + 42

=

52, 42 + 32

=

52, 52 + 122

=

132, enz.

Een student moet een algol programma ontwerpen voor het vinden van alle Pythagoreische getallen k, 1, m met k, 1, m

<

200, waarvoor hij alleen maar gebruik mag maken van bovenstaande definitie. Het programma moet ver

-der eenvoudig zijn zon-der overbodigheden of gekunsteldheden.

De student ontwerpt een viertal algoritmen, waarvan de struktuurdia-grammen de volgende gedaante hebben. Rechthoeken bovenaan voor ini-tialisaties en inleesopdrachten zijn weggelaten. Voor of na herhalingsop-drachten en alternatieve opherhalingsop-drachten mag men desgewenst nog extra recht-hoeken plaatsen, waarin echter geen nieuwe herhalingsopdrachten of alter-natieve opdrachten gezet mogen worden.

Afgezien van de nog ontbrekende teksten kan slechts één van deze struk-tuurdiagrammen tot een goed programma kan leiden.

Welk diagram is dit?

2.

~/

~/

1

3_ 4

~~

~

~

~/

-16. In Californië bestaat een bekende toeristische rondrit die langs n (n E ~+) bezienswaardige plaatsen voert. Deze plaatsen zijn genummerd van 1 tot en met n.

De rijrichting is voorgeschreven, na plaats i (i = 1, . . . ,n-l) komt plaats i+l, op plaats n volgt plaats 1. Na plaats i volgt dus plaats (i+l)-(i";-n)*n.

(50)

48 programma·ontwerp

In principe kan iedere plaats als startpunt die-nen. Daarbij moet iedere toerist de rondrit in zijn geheel kunnen volbrengen, d. W.z. startplaats S is zowel begin-als eindpunt van de rit.

n

2

n-I

Wegens rantsoeneringsmaatregelen van de regering koopt de toerist in plaats i precies Vi liter benzine. De toerist begint op de startplaats S met een lege tank, koopt V

s liter benzine en gaat op weg naar de volgende plaats enz. Men mag ervan uitgaan dat de tank van de huurauto altijd groot genoeg is om het rantsoen bij te tanken. Elke huurauto verbruikt hi liter benzine om van plaats i naar plaats i + 1 te rijden (hn liter van plaats n naar plaats I ; i = I, ... ,n-l). Een reisbureau wil weten welke plaatsen onder deze beperkende maatregelen

nog als startplaatsen kunnen dienen en laat daartoe een algoritme ontwerpen.

De algoritme mag eenvoudig opgezet worden, maar zonder gekunsteldheden en hoeft niet zo efficient mogelijk te zijn. Men heeft de keuze uit een vier-tal algoritmen, waarvan de struktuurdiagrammen hieronder zijn afgebeeld. Desgewenst mag men de diagrammen nog wijzigen door voor, tussen of na de alternatieve opdrachten en de herhalingsopdrachten nog extra rechthoe-ken te plaatsen, waarin echter geen nieuwe alternatieve of herhalingsopdrach-ten mogen voorkomen. Afgezien van de nog ontbrekende teksherhalingsopdrach-ten kan, onder

bovengenoemde voorwaarden, slechts één diagram tot een goede algoritme

leiden.

Welk diagram is dit?

L 2.

~/

3. 4.

I

~/

I

(51)

programma-ontwerp 49.

17. In een museum noteert men op een zekere dag de aankomst- en vertrektijd van iedere bezoeker. Aan het einde van de dag blijken er n bezoekers te zijn geweest. Bezoeker i arriveerde op het tijdstip ai en vertrok op het tijdstip Vi; de aankomsttijden zijn in volgorde van tijdstip van aankomst opgeschreven zodat voor alle i's, 1 ~ i ~ n -1, geldt ai ~ ai ...

l.

Het museum was die dag open vanaf tijdstip to en sloot op tijdstip tso Verder is gegeven

to ~ al

d_ W.Z. de eerste bezoeker komt niet voor openingstijd, en ai

<

Vi ~ ts, 1 ~ i ~ n.

d_ W.Z. iedere bezoeker blijft enige tijd in het museum maar op sluitingstijd is iedereen vertrokken.

Gevraagd wordt een algoritme te ontwerpen waarmee berekend wordt gedu-rende hoeveel tijd er op die dag in het museum geen enkele bezoeker aanwe-zig was.

De algoritme mag eenvoudig opgezet worden, maar zonder gekunsteldheden en hoeft niet zo efficient mogelijk te zijn. Men heeft de keuze uit een vier-tal algoritmen, waarvan de struktuurdiagrammen hieronder zijn afgebeeld. Desgewenst mag men de diagrammen nog wijzigen door voor, tussen of na de alternatieve opdrachten en de herhalingsopdrachten nog extra rechthoe-ken te plaatsen, waarin echter geen nieuwe alternatieve of herhalingsopdrach-ten mogen voorkomen. Afgezien van de nog ontbrekende teksherhalingsopdrach-ten kan, onder bovengenoemde voorwaarden, slechts één diagram tot een goede algoritme leiden.

Welk diagram is dit?

1. 2_ 3_ 4

~L

I

I

.~L

1

1

(52)

50

KORREKTHElD

1. Gegeven zijn twee getallen m en n uit de verzameling 7L,+. Gevraagd wordt de grootste gemene deler g van m en n te bepalen. De algoritme luidt als volgt.

El:

E2:

[:~: ~ hulpgrootheid r; zolang r"* 0 doe

l

deel m door n; r := rest van deze deling; m:= n; n := r; E3: g := m

)

)

E21 E22

De korrektheid van deze algoritme wordt als volgt aangetoond.

BI: Nadat E21 voor de eerste keer is uitgevoerd , hebben we m = q n + r, waarin q een natuurlijk getal is.

B2: Als geldt r = 0, dan is m een veelvoud van n en dus is n in dat geval de GGD van m en n.

B3: De zolang-opdracht stopt dan na de opdracht E21 en g krijgt de waarde van de grootste gemene deler.

B4: Stel dat r"* 0 is. Elke gemeenschappelijke deler van m en n zal ook een deler zijn van m - qn = r en omgekeerd is elke deler van r en n ook een deler van qn + r = m. De verzameling van gemeenschappelijke delers van m en n is dus dezelfde als de verzameling van gemeenschap-pelijke delers van n en r. De GGD van m en n is dus ook de GGD van n en r.

B5: Opdracht E22 verandert het antwoord op het oorspronkelijke probleem daarom niet, hoewel de waarden van m en n wel veranderen.

B6: De opdracht E2 wordt afhankelijk van de keuze van m en n een eindig of een oneindig (er is geen GGD in 7L,+) aantal keren uitgevoerd. We zien dus dat als er een GGD is, het voorgestelde procedé ons na een eindig aantal stappen de GGD van m en n levert.

1. dit korrektheidsbewijs is juist

2. dit korrektheidsbewijs is pas juist, als B3 vervangen wordt door: B3: Via m wordt deze waarde aan g overgedragen.

3.

(53)

korrektheid .51

3. dit korrektheidsbewijs is pas juist, als B4 vervangen wordt door: B4: Stel dat r =1= O. Elke gemeenschappelijke deler van m en n zal

ook deler zijn van m - qn = r en omgekeerd is elke deler van n en m ook deler van n q - m = r. De verzameling van ge-meenschappelijke delers van m en n is d us dezelfde als de ver-zameling van gemeenschappelijke delers van n en m. De GGD van m en n is daaruit te bepalen.

4. dit korrektheidsbewijs is pas juist als B3 en B6 vervangen worden door: B3: Via m wordt deze waarde aan g overgedragen.

B6: De opdracht E2 wordt maar een eindig aantal keren uitgevoerd. We zien dus dat het voorgestelde procedé ons na een eindig aantal stappen de GGD levert van m en n.

Cytaty

Powiązane dokumenty

On the basis of the measurements some conclu- sions are drawn on the influence of propeller action on squat, width restriction and the re- lation between measured mean water-level

Jeden ze statków przybył do celu później od pozostałych (Jordanes nie widzi w tym żadnego szczególnego wydarzenia, stwierdzając, że taka sytuacja „nieraz się zdarza”) i

Trzeci  dzień  spotkania  (drugi  dzień  obrad  –  czwartek,  21  IX)  rozpoczął 

Temat ten pojawia się już na pierwszych stronach Księgi Rodzaju, na którą Biskup Hippony powołu- je się często w swoich dziełach, zwłaszcza , kiedy wspomina wiek

W tym sakramencie człowiek rzeczywiście zostaje włączony w Chrystusa do tego stopnia, że może już w największym zaufaniu wyznać: „Nie żyję już ja, ale żyje we mnie

[r]

[r]

Bosko tworząc misje w Patagonii posługuje się analogicznyną taktyką, jak posłużył się przy zakładaniu Zgromadzenia Salezjańskiego. Zaczyna też zabiegać o pomoc i