CWI Scanprofile/PDF/300

advertisement
STICHTING
MATHEMATISCH CENTRUM
2e BOERHAAVESTRAAT 49
AMSTERDAM
REKENAFDELING
MR 8 5
P r a k t i j k e u r s u s ALGOL 6 0
door
Geurt s
C. H. A . K o s t e r
Me e r t e n s
I;LAC)
1966
P RA K TIJK CURS US A L G O L
E R R A T A
Op p a g . re g e l s t a a t :
12 1 5
13
7
14
1
15
9
128
1 8
9
2 5
>
1
t
e
1
1
9
=
9
V
1
>
1
2 7
r
2
8
c o m m e n t
D
2
t
mo e t z i j n :
6
b
t r u e =
1 1
own
1
V
A l l ] : = A[2 1 := 1
u
a
e
g
i
n
co mme n t
—
2
own
A[1
9
0
1
:
=
A
[
2
,
0
1
:
=
1
PRAKTIJKCURSITS ALG O L
1 P r o g r a m m a—
9 c o m
o u n d
Een ALG O L- pr ogr amma is v olgens het "Rev is ed Repor t on the Algor it hmic
s t a t
Language
e m e ALG
n O L 60" ( i n het v er v olg aangeduid m e t RR) , s ec tie 4 . 1 . 1 een
t
compound
s tatement o f een bloc k , E e n compound s tatement bes taat u it : " begin" ,
e
een o f m e e r s tatements , onder ling gescheiden door het s y mbool " ; " e n t e n n
sb lotte "l e n d " , E e n bloc k heeft dez elfde s tr uc tuur , m a a r tus s en begin en de eer s te
statement
o
c moeten een o f meer dec lar aties s taan, v an elk aar en v an de s tatements
kgescheiden door " ; " . Z o w e l compound s tatement a ls bloc k z ijn s tatements ,
(
De s tatements w a a r u it een compound s tatement o f een bloc k z ijn opgebouwd mogen
R
dus
R o p hun beur t een compound s tatement o f een bloc k z ijn . A l s ieder e s tatement
4
mogen een compound s tatement en een bloc k gelabeld z ijn door een o f meer labels .
.Het pr ogr amma i n z ijn geheel mag ec hter b i j de mees te implementaties ( d. w . z .
1
r. ealis er ingen v an ALG O L o p een bepaalde c omputer) n ie t gelabeld z ijn .
1
)
Declaraties ( R R 5)
Een dec lar atie defi nieer t d e betekenis v an een o f meer identifi er s , D e z e defi nitie
geldt s lec hts binnen het bloc k waar in deze dec lar atie s taat.
We k unnen de v olgende s oor ten dec lar aties en bijbehorende dec lar ator en
onderscheiden:
— D e c la r a t ie v an s imple v ar iables i a _ t e g a , r e a l , Boolean
— D e c la r a t ie v an ar r ay s
.
— D e c la r a t ie v an s witc hes
l a
t
l e z ar r ay 9 r e a l I r L a z , Boolean E l l y
of a r r a y
s w i t c h
— D e c la r a t ie v an een proc edure m o s s I I H s
.
r eal proc edure , Boolean 21:222gas
, p L a e s l y _ r e
De dec lar atie v an s imple v ar iables en ar r ay s ma g wor den voorafgegaan door de
dec larator own ( maar n ie t own E L E E i, p. v
, o w n
r e a l
E L a z ) .
pea-1
3 P r o c e d u r e dec lar ation ( RR 5.4)
De pr oc edur e dec lar ation bestaat t ilt : het s y mbool proc edure, ev entueel v oor afgegaan door i n t e g e r , r e a l o f Bo o le a n , v erv olgens de procedure heading en tenslotte
de pr oc edur e body . D e proc edure body bes taat u i t een enk ele s tatement (v aak een
compound s tatement o f een bloc k ). I n de f o r ma l par ameter p a r t wor den, indien
aanwezig, de f o r m a l par ameter s opgesomd. D ez e z ijn a lt ijd identifi er s . I n de s pec ifi c ation p a r t k an infor matie v er s tr ek t worden ov er n u l o f meer d e r f or mele p a r ameter s . T us s en f o r m a l par ameter p a r t en s pec ifi c ation p a r t k an een v alue p a r t
worden opgenomen w aar in een o f meer v an de f o r m a l par ameter s u i t de s pec ifi c ation p a r t v oork omen ac hter het s y mbool v alue.
S ZE IMOCOMMINE S
4 Sc ope (RR 2.4.3, 2.7, 4 . 1 3 4 . 3 . 4
0 4 . 7 . 3 . 2 ,
4 . 7 . 3 . 3 ,
Een ident ifi er s t e lt s teeds een entiteit v oor d ie k an z ijn: s im p le v ar iable, a r r a y ,
5
.
3
.
5
,
switch,
f o r m a l par ameter ( die behalv e op een d e r v oor 5
. pr oc4edur e,
. label
3 o f een
)
gaande entiteiten ook betr ek k ing k an hebben op een s t r ing o f op een ex pres s ion
of s ubs c r ipted v ar iable) . Aangez ien i n pr inc ipe gelijk luidende identifi er s v e r s c h illende entiteiten kunnen v oor s tellen, en de betek enis v an een uitdr uk k ing o f s tatement w a a r in een identifi er v oor k omt er v an afhangt welk e ent it eit door d ie identifi er
wordt v oorges teld, i s het noodz ak elijk dat we ondubbelz innig kunnen v as ts tellen
om welk e ent it eit het gaat.
Dit k an a ls v olgt:
Volgens de ALG O L- s y ntax is z ijn een pr ogr amma o f een proc edure body alleen
een bloc k als aan het begin een o f meer dec lar aties s taan, maar w e z ullen i n het
v erv olg ieder pr ogr amma en ieder e proc edure body als een bloc k beschouwen.
Nu behoor t ieder e ent it eit die door een identifi er wor dt voorgesteld b ij een bepaald
block. H e t v erband tussen entiteit en identifi er k an i n de tek s t v an een AL G O L pr ogr amma op d r ie manier en z ijn vastgelegd:
— V o o r s imple v ar iables , ar r ay s , s witc hes en proc edures door een dec lar atie.
De ent it eit behoor t bi_j_het k leins te bloc k waar in die dec lar atie s taat.
-
V o o r een label door het geplaats t z ijn v oor een s tatement, daarv an gescheiden
door een " : " . D e ent it eit behoort b i j het k leins te bloc k waarbinnen de g e la belde s tatement s taat. ( N , B, I s de gelabelde s tatement een proc edure body dan
behoort de label b i j dez e proc edure body . I n het M C - I ALG O L-s y s teem i s ec hter
voor het gev al de proc edure body m e t een dec lar atie begint, een s pr ong naar een
der gelijk e label n ie t toegestaan)
pea-2
— V o o r een f o r m a l par ameter door het v oork omen i n de f o r m a l par ameter lis t .
De ent it eit behoor t b i j d e proc edure body .
In dez e d r ie gev allen i s het z onder m e e r duidelijk welk e entiteit de identifi er v o o r s telt. V e r d e r duidt een identifi er i n de v alue p a r t o f s pec ifi c ation p a r t de g e lijk namige f o r m a l par ameter aan. K o m t nu een identifi er i n de programmatek s t op
een andere w ijz e v oor , dan gaan we na o f b ij het k leins te bloc k waar in deze identifi er v oor k wam een entiteit behoort d ie door een gelijk luidende identifi er w or dt
voorgesteld. Z o j a , dan hebben we de gezochte ent it eit , de identifi er w o r d t loc aal
genoemd; z o nee, dan i s de identifi er niet- loc aal. W e gaan dan na o f een gelijk namige entiteit behoor t b i j h e t k leins te bloc k dat d i t bloc k omv at, en v erv olgens v oor
het bloc k dat dat bloc k weer omv at, en we z etten d i t proc es v oor t totdat we de
gezochte e n t it e it gevonden hebben. W e zoeken dus v an binnen u it naar buiten toe.
Lev er t d i t proc es n ie t een entiteit op, dan k an de identifi er nog een s tandaardfunc tie o f standaardprocedure z ijn . I s ook d it niet het gev al dan i s het pr ogr amma
fout. H e t is eveneens fout als b i j een bloc k twee gelijk namige entiteiten zouden
behoren.
Met d i t proc es i s het a lt ijd mogelijk s tatis c h ( d. w. z, z onder het pr ogr amma u it
te v oeren) v as t t e s tellen welk e ent it eit een identifi er v oor s telt. V o o r een unsigned
integer d ie een label v oor s telt (RR 3 . 5 . 1 , 3. 5. 5) kunnen we op analoge w ijz e v as ts tellen welk e label bedoeld wor dt. H e t i s helaas n ie t a lt ijd mogelijk s tatis c h te
bepalen o f een uns igned integer een label dan w el een ar ithmetic ex pres s ion v oor s telt. I n het Xl- ALG O L- s y s teem ( d. w. z. M C - I I s y s teem v oor tek s ttes ten en M C - I
systeem v oor uitv oer en) i s de unsigned integer a ls label n ie t toegestaan.
Opmerking 1 . I n het offi c iele ALG O L i s dez e hele k wes tie nog iets ingewik k elder
(vgl. h e t "additional bloc k " u i t RR 4 . 7 . 3 . 1 ) . I n de pr ak t ijk is d i t v an geen belang.
Opmerking 2. I n het Xl- ALG O L- s y s teem w or dt i n een f o r s tatememt de s tatement
achter do a lt ijd a ls een bloc k beschouwd.
pca-3
5 H e t proc edure-mec hanis me ( RR 4 . 7 , 5.4)
Een proc edure s tatement wor dt uitgev oerd, en de waarde v an een func tion des ignator w or dt bepaald, door de bijbehorende proc edure H
a
a n ac
t tual
e par
r o
e p e
,
Iedere
ameter
b i j nd e" aanroep
v an de pr oc edur e k omt ov ereen met een
for mal par ameter b i j de proc edure dec lar ation. A a n de f o r ma l par ameter s d ie i n
de v alue par t wor den opgesomd, w or dt b i j aanroep de waar de toegekend die de
overeenkomstige ac tual par ameter op dat moment heeft o f b lijk t t e hebben„ A l le
andere f o r m a l par ameter s wor den ov er al w aar z e ( d . w . z . h u n identifi er s ) i n de
procedure body v oork omen, vervangen door de tek s t v an de overeenkomstige ac tual
parameter. I s dez e geen v ar iable ( RR 3.1) m a a r w el een ex press ion ( RR 3) dan
wordt h i j eer s t tus s en r onde haak jes H
(De
" aldus
e n v er k" r egen
) " proc edure body moet een c or r ec te s tatement z ijn ; deze wor dt
g e p l a a t s t .
uitgevoerd en v erv olgens w or dt het pr ogr amma v oortgez et. I n gev al w e m e t een
function proc edure t e doen hebben, moet tijdens de uitv oer ing een o f meer malen
ex plic iet een waarde worden toegekend aan de pr oc edur e identifi er . D e laats te
aldus toegekende waarde w or dt desgewenst gebr uik t o m de berek ening v an de e x pression waar in de func tion des ignator ( de "aanr oep" v an de func tie proc edure)
voorkwam, v oor t t e z etten. ( N . B. H e t i s n ie t ju is t , binnen de proc edure body de
procedure identifi er i n een ex pres s ion t e gebruik en wanneer men daar me delaats t
toegekende waarde w i l aanduiden. E e n der gelijk e v er melding duidt a lt ijd op een
ex plic iete rec us iev e aanroep v an de proc edure.
Het i s ook toegestaan om een (func tion-) pr oc edur e door een goto s tatement t e
v erlaten, en eveneens o m een func tion-proc edure b i j w ijz e v an pr oc edur e s t atement aan t e r oepen. I n dez e twee gev allen i s de toegekende waar de aan de
procedure identifi er v a n geen belang; i n het eer s te gev al hoeft een der gelijk e t o e kenning z elfs i n het geheel nog niet geschied t e z ijn .
Het gev olg v an bovengenoemd vervangingsproces k an z ijn dat een identifi er w o r d t
binnengevoerd i n een s tuk pr ogr amma waar een gelijk luidende identifi er r eeds
een ander e ent it eit v oor s telt.
Dit is v olk omen c or r ec t; de door het vervangingsproces binnengevoerde identifi er
b lijf t dez elfde ent it eit v oor s tellen als h i j blijk ens het i n par agr aaf 3 beschreven
zoekproces r eeds v oor s telde als ac tual par ameter . M e n k an d i t ook als v olgt i n zien: Wanneer i n een c or r ec t ALG O L- pr ogr amma s y s tematis c h ieder e k eer dat een
identifi er v oor k omt d ie een bepaalde ent it eit v oor s telt, dez e identifi er w o r d t v er v angen door een passend gekozen andere identifi er ( d ie n ie t r eeds i n deze c ontex t een
andere ent it eit v oor s telt) dan v er ander t de betek enis v an het ALG O L- pr ogr amma
niet.
Hieron,
pea-4
Hieronder v olgt een l i j s t mogelijk e ac tual par ameter s , en de ju is t e s pec ifi c atie
(indien aanwezig) v an de f o r m a l par ameter . ( N . B . I n leder v an de genoemde gev allen mag de ac tual par ameter z e lf een f o r ma l par ameter z ijn (het z gn. doorgev en
van de f o r m a l par ameter ) . D i t i s uiter aar d alleen mo g e lijk v oor pr oc edur e- aanr oepen binnen een proc edure body).
actual par ameter :
s p e c i fi e r :
ar ithmetic ex pres s ion
Boolean ex pres s ion
s tring
s
i n t e g e r
V e r m e l d i n g in value par t toegestaan?
of r eal
j
B o o l e a n
t
r
i
designational ex pres s ion
n
switch identifi er
s
w
i
array identifi er
a
r
r
j
g
n
l a b e l
t
c
a
= = =
a
a
e
j
e
a
,
(In het Xl- ALG O L- s y s teem niet)
n
e
e
h
y
n
e
e
voor integer o f r e a l a r r a y ook iat_s _911 ar r ay o f r e a l E a t
voor Boolean a r r a y ook B o o l e a n ar r ay
j
procedure ident ifi er
p r o c e d u r e
n
j
a
a
e
voor integer of r eal procedure ook integer proc edure o f r e a l pr oc edur e
e
n e e
voor Boolean pr oc edur e ook B o o l e a n proc edure
n
e
e
Opmerking. U i t R R 4 . 7 . 5 . 4 z ou men kunnen opmaken dat indien i n een d e r laats te
twee gev allen de ac tual par ameter de proc edure identifi er v a n een func tie- pr oc edure z onder par ameter s i s , v er melding i n de v alue p a r t v an de f o r ma l par ameter
wel i s toegestaan. I n d it gev al i s de s pec ifi er int eger proc edure, r e a l proc edure
of Boolean proc edure ec hter z eer onlogis c h: de ac tual par ameter i s een ex pres s ion
en k an het bes te integer , r e a l r es p. Boolean ges pec ifi c eerd wor den,
cm= ummt . n. . . . mmn
N. B. M e t een f o r ma l par ameter die a ls een s w it c h , (type) a r r a y o f ( t y p e )
procedure i s ges pec ifi c eerd, k an alleen een ac tual par ameter c orres ponderen
die u i t een enk ele identifi er bes taat.
B ij a lle f o r m a l par ameter s d ie i n de v alue par t wor den opgesomd i s v olledige
specificatie v er eis t. V o o r het Xl- ALG O L- s y s teem i s v oor ieder e par ameter enige
specificatie v er plic ht.
Wanneer ' c a l l b y name" w a n n e e r " c a l l by v alue"?
Uit de ops omming i n par agr aaf 5 b lijk t dat b i j enk ele s pec ifi c aties d e " c a ll by
v alue", d.y /. z. d e v er melding i n de v alue par t, i s toegestaan.
In dez e par agr aaf gaan we er v an u it dat we m e t een par ameter t e mak en hebben
waar bij inder daad c a ll by v alue i s toegestaan. I n dat gev al i s de s pec ifi c atie
pea-5
zo v olledig mogelijk : integer , r e a l , Boolean, integer E L I E
, r e a arl r ayE o fmlabel. V o o r s ommige toepassingen is v olledige s pec ifi c atie n ie t
Boolean
.
wens elijk ; c a ll b y v alue i s dan n ie t mogelijk .
.
Wat betek ent nu c a ll by v alue i n ter men v an uitv oer ing v an het pr ogr amma?
In d i t gev al wor den b i j de aanroep v an de proc edure de f o r m a l par ameter s a ls
het w ar e gedec lar eer d v ooraan i n de proc edure body ( ar r ay s m e t dez elfde
bound p a ir waarden, a ls de overeenkomstige ac tuele a r r a y had b i j z i j n dec lar atie) .
Hier in wor dt de waar de geeopieerd v an de ac tual par ameter . Wanneer w e nu de
waarde v an de f o r m a l par ameter v eranderen, w or dt alleen deze " eopie" v er ander d;
de ac tual par ameter w or dt niet beinv loed. Ev enz o, wanner de waarde v an de a c tual par ameter tijdens uitv oer ing v an de proc edure v er ander t, b l i j f t de waarde v an
de f o r m a l par ameter hetz elfde.
We kunnen nu de v olgende gev allen onderscheiden:
De f o r m a l par ameter i s Integer , r e a l o f Boolean ges pec ifi c eerd e n b i j u i t voering v an de proc edure wor dt aan de f or mal par ameter een waarde toegekend, o f de par ameter i s integer a r r a y , r e a l a m a z of Boolean E a u
gespecificeerd e n nu wor dt aan een o f meer v an de elementen een waarde
toegekend.
Is h e t nu de bedoeling dat de ac tual par ameter hier door v an waarde v er ander t
(dat mag i n het gev al in t e g e r , r e a l o f Boolean
dus alleen als de ac tual p a r a T.
meter een v ar iable is ) , dan gebruik en we c a ll b y name ( d . w . z . w e gebruik en
c all by v alue niet) . E e n der gelijk e f o r ma l par ameter kunnen we "output- par ameter " noemen.
Is een der gelijk e waardev erandering daarentegen niet gewenst, o f z elfs ongeoor loofd ( nl. a l s d e ac tual par ameter w e l een ex pres s ion maar geen v ar iable is )
dan moeten w e c a ll by v alue gebruik en.
Tengevolge v an s ide effec ts oftewel neveneffecten v an de pr oc edur e k an de
waarde v an de ac tual par ameter v eranderen. D i t neveneffect i s dan een v e r andering v an de waar de v an een niet- loc ale v ar iable tijdens uitv oer ing v an de
procedure body . I s het de bedoeling dat dan ook de f o r m a l par ameter v an
waarde v er ander t, dan gebruik en we c a ll by name, anders c a ll b y v alue.
Een z eer belangr ijk gev al i s Jensen's dev ic e geheten. H i e r b i j v indt het nev eneffect plaats door middel v an een output- par ameter . Daar mee c orres pondeert
dan een ac tuele v ar iable d ie i n de uitdr uk k ing v oor een andere ac tual par ameter v oor k omt. D ez e laats te i s n ie t v alue ges pec ifi c eerd; door i n de proc edure een
waarde toe t e kennen aan de outputparameter v er ander t de waarde v an deze
parameter mee. I s de ac tual par ameter een s ubs c ripted v ar iable dan k an
zelfs z ijn " ident it eit " v eranderen.
-
D e bepaling v an de waarde v an de ac tual par ameter k an neveneffecten met
zich meebrengen ( de ac tual par ameter i s dan de func tion des ignator o f bev at
de func tion des ignator v an een func tion-proc edure me t neveneffecten).
Z ijn deze effec ten gewenst, dan c a ll by name, anders c a ll b y v alue.
— D e bepaling v an de waarde v an de ac tual par ameter v er gt een niet v er waar loos bare r ek entijd, ma a r v eroorz aak t geen neveneffecten. U i t overwegingen
van effi c ienc y k an c a ll by v alue op z ijn plaats z ijn .
-
D e f o r m a l par ameter i s integer o f integer a r r a y ges pec ifi c eerd, e n het i s v oor
de ju is t e wer k ing v an de proc edure noodz ak elijk dat de par ameter v an ty pe
integer is . Wanneer nu niet met r edelijk e z ek er heid ges teld k an worden dat de
corresponderende ac tual par ameter inderdaad het ty pe integer z al hebben dan
zal c a ll by v alue e r v oor z or gen dat b i j de aanroep tijdens het c opier en v an de
waarde v an de ac tual par ameter z onodig een automatis c he ov ergang v an r e a l
naar integer plaats v indt. O ok in het omgekeerde gev al (ty pe r e a l v er eis t v oor
c orrec te wer k ing, ac tual par ameter mogelijk integer ) k an m e t v r uc ht
c all b y v alue gebr uik t wor den.
Verder z i j nog v er meld dat we b i j ar r ay s c a ll by v alue s lec hts b r u i k e n als
daar een goede r eden v oor is , aangezien dan t egelijk er t ijd de waar v a n de
actuele a r r a y en de waar de v an de ( mogelijk v ers c hillende) c opie daa v an i n de
for mele a r r a y opgeslagen moeten worden. D i t z ou (z onder goede reden) een ov er bodige belas ting v an de geheugenruimte v an de uitv oerende c omputer betekenen.
Daarentegen geldt v oor de andere par ameter s ( v oor label i n minder e mate) w a a r voor c a ll by v alue i s toegestaan, dat w e c a ll by name s lec hts gebr uik en als e r
een goede r eden v oor bes taat. I n de gev allen waar c a ll b y v alue en c a ll b y
name v er s c hillende r es ultaten zouden oplev eren, i s nat uur lijk s lec hts een alter natief i n ov ereens temming m e t onze bedoeling; maar ook i n gev allen waar het r e s u ltaat hetz elfde b l i j f t k an c a ll by v alue een aanz ienlijk e bes paring i n de r ek entijd
geven.
pca- 7
Voorbeelden
Ga i n de v olgende v oorbeelde na om welk e reden(en) c a ll b y v alue o f c a ll b y
name i s gekozen.
procedure PO LtoCART ( x , y , r , fi ) ; v alue r , fl ; r e a l x , y , r , fl ;
comment PO LtoCART tr ans for meer t de poolc oordinaten ( r , fi ) t o t c artes iaans e
coordinaten y ) ;
1
2Aanroep b ijv . P O L t o CART ( X[k ], IT N], mod 4. (1 / k ), a r g / k )
.
9
procedure
TRANSFORM ( i, n , V i) ; v alue n ; Integer i , n ; r e a l V i ;
.
0 I : = 1 E l m 1 u n t i l n do Vi: = 1 - 1 / V i
for
2
Aanroep b ijv . T R A N S F O R M ( j, m , C [ j, j1)
x
:
=
procedure
V U L ( A , m n , input) ; v alue m , n ; integer m , n ; r e a l input; ar r ay A ;
rbegin i n t e g e r i , j ;
x
for l : = 1
1
u n t il m do f o r j: = 1 E t a , 1 u n t il n do AR , j j : = input
c
end
o
sAanroep b ijv . V U L ( A, 1 , r ead, r ead) o f V U L ( A, p , q , 1 / ( p + q))
(Het laats te gev al k an v oor gr ote p en c i effi c ienter :
f
begin r e a l s o m l ;
i
s oml:= 1 / + q) ; VU L ( A, p , sci, s o m l)
)
end
;
y
Dit z ou ov erbodig z ijn als " input " v alue ges pec ifi c eerd was . G a na hoe dan
:
echter
de betek enis v an V U L ( A, 1 , r ead, read) v olk omen v er ander t -aangenomen
=
dat
r r ead de func tion des ignator i s v an een func tie-proc edure d ie de waarde
xaanneemt v an " h e t volgende getal op de getalband" e n die a ls for midabel nev ens
effect het opschuiven v an de band heef t i
,
n
r(eal pr oc edur e DETSOL2 ( A, b , n) ; v alue A ; integer n ; r e a l a r r a y A , b ;
f
comment DETSOL2:= deter minant v an ar r ay A l l : n , 1 : l a en a r r a y Ica_ : n i
l
wordt vervangen door de oplos s ing x v an het lin e a ir e s tels el A x x = b ;
)
DETSOL2:=
DET SO L ( A, b , n)
e
n
Wanneer
men ov er een proc edure DETSO L bes c hik t d ie hetz elfde pr es teer t
d
als i n het c omment v an DETSOL2 beschreven s taat, m a a r d ie z ijn tus s enr es ultaten i n de ar r ay A bewaar t, dan k an men beter DETSOL2 gebr uik en als de
actual par ameter v oor A ongerept moet blijv en, o f als dez e integer a r r a y
gedeclareerd is .
pea- 8
Jensen' d e v i c e
Een v oor beeld v an het gebr uik van Jensen's dev ic e is :
r eal pr oc edur e P I ( k , a , b , ik ) ; v alue a , b ; ! E t m s
. . k , r eal
a ,p i ;
b
;
r e a l
lamia
i
k 1 );
1
for k := a a t a
:=
.Ph=
1 pi
1
u n t i l
end
;
b
b
d
o
p
i uitgedr
:
Mathematisch
uk t: P I = I 1 f k
=
ka
p
B i j de aanroep: P I ( i, 1 , q , 1 + p / i) lu id t de proc edure body na het inv ullen v an
i
de waar de
x v an de ac tual par ameter s " 1 " e n " q " , e n de tek s t v an de ac tual
f
parameters
" 1" e n " 1 + p / I " :
k
t a in _ i n t e g e r a , b ; r e a l p i ;
;
a:= 1 ; b:= q ;
pi:= 1.;
— i: = a Et22 1 u n t il b do pi:= p i x ( 1 + p /
for
PI:= p i
end
to11.1.32.1211
Als de f or mele " k " v er ander t, v er ander t de ac tuele " I " , daar door de ac tuele
"1 + p / i " e n daar mee de for mele " f k " . Sc hematis c h v oorges teld:
Ga na
1. P I
2.
9
3.
o
,
[
I
D
P I
f
o
r
m
e
e
actueel
niv eau
. . > 1 + p
l
n i n de v olgende gev allen wor dt berekend:
wat
i
( i, 1 , q , 1 + p /
v
( I,
e 1
( n,
a 1 , n , n)
e uA
PI
r d
A
I ,
/
i
pea- 9
Recursieve proc edures ( RR 5. 4. 4)
Het i s uiter aar d toegestaan i n een proc edure body een andere proc edure aan t e
roepen. H e t i s i n ALG O L eveneens toegestaan binnen de body v an een proc edure
deze proc edure z e lf aan t e roepen. E e n proc edure d ie z ic hz elf aanroept heet een
rec urs iev e pr oc edur e. O ok een niet r ec ur s ief geschreven proc edure k an r ec ur s ief
gebruik t wor den, n l . wanneer b i j een proc edure de bepaling v an de waarde v an een
actual par ameter d ie c orres pondeert me t een c all- by - name f o r m a l par ameter , een
aanroep v an de pr oc edur e ten gevolge heeft, z oals i n P I ( i, 1
9
In v3 r i j v eel implementaties i s het r ec ur s ief gebr uik v an proc edures n ie t mogelijk .
9
P I
( j ,
1
Zowel i n het X l - a ls i n het X8-ALG O L-s y s teem i s het gebr uik v an r ec ur s iev e p r o 9
3
cedures
aan
es t r ic
9
M geen
E r1
, t ie gebonden.
Een bekend v oor beeld v an een r ec ur s iev e proc edure i s dat v an de func tie-proc edure
voor het berekenen v an de fac ulteit v an een getal:
integer proc edure fac ( n » v alue n ; integer n ;
fac:= i f n = 0 then 1 els e fac ( n - 1) x n
De waar de v an fae (2) w or dt ongeveer a ls v olgt berekend:
fae ( 2)
n:= 2
fac:= i f n = 0 then 1 els e fac ( n - 1) x n
= i f 2 = 0 then 1 els e fac ( n - 1) x n
= i f f a l s e then 1 els e fac ( n - 1) x n
fae ( n - 1) x n
n
9
fac:=
:
=
=
n =
1
=
2
1
=
1
i f n ' = 0 then 1 els e fac ( n - 1) x n '
C M .=
=
C
M
=- 2
S
:
1
=
C
=
1 3 =1 :M .S E =
i f f a l s e t h e n 1 els e fac ( n' - 1) x n '
fae ( n ' - 1) x n '
n" :=n'- 1=1- 1=0
fac:= i f n " = 0 then 1 els e fac ( n" - 1) x n "
= i f 0 = 0 then 1 els e fac ( n" - 1) x n ”
= i f t r u e t h e n 1 els e fac ( n" - 1) x n "
01.C=1.MIS CINS S
=1
= 1 X n
1
=1
= 1 X 1
= 1 X n =
X 2
=2
'
i f 1 = 0 then 1 els e fac ( n' - 1) x n '
pea- 10
Dit i s g e e n g e lu k k ig vo o rb e e ld , i n z o v e r r e d a t h e t g e e n n a vo lg in g v e rd ie n t :
1. o m d a t h e t ze lf d e w e r k s n e l l e r e n m e t m i n d e r g e h e u g e n g e b ru ik ka n wo rd e n g e daan d o o r e e n n i e t -re c u rs i e v e p ro c e d u re .
2. o m d a t v o o r n b i j v . g r o t e r d a n 1 5 h e t re s u lt a a t v a n f a c (n ) w e l g r o t e r z a l z i j n
dan d e g ro o t s t e re p re s e n t e e rb a re in t e g e r, zo d a t d e p ro c e d u re b e t e r a l s e e n
re a l p ro c e d u re g e d e cla re e rd ka n wo rd e n . ( V o o r h e t X l - A L G O L - s y s t e e m g e ld t
d it b e z wa a r n i e t o md a t d e u i t k o ms t v a n e e n in t e g e r p ro c e d u re , a l s d e ze t e
g ro o t i s , d a a r a u t o ma t is c h a l s e e n r e a l w o r d t vo o rg e st e ld ; i n h e t X 8 - A L G O L syste e m e c h t e r i s f a c (1 2 ) = 479001600 g r o t e r d a n d e g ro o t s t e wa a rd e d i e a a n
een in t e g e r v a ri a b l e o f p ro ce d u re i d e n t i fi e r k a n wo rd e n toegekend, n l. 6 7 1 0 8 8 6 3
0
wa a rd o o r d e u it v o e rin g va n h e t p r o g r a m m a v o o rt i j d i g w o rd t b e e in d ig d )
3. o m d a t d e u it v o e rin g va n d e p ro c e d u re n o o it z a l e in d ig e n in d ie n h e t a rg u me n t
d o o r o n vo o rzie n e o msta n d ig h e d e n n e g a tie f i s . B e t e r i s b i j v . t e s c h ri j v e n :
i f n < 0 t h e n g a l a A L A R M ; f a c: =
Voorbeelden v a n h e t ve ra n t wo o rd g e b ru ik va n re c u rs i e v e p ro ce d u re s z i j n me e s t a l
in g e wikke ld e n lig g e n d o o rg a a n s n i e t o p n u me ri e k t e r r e i n . ( E e n g o e d vo o rb e e ld
is e c h t e r d e lo c a le p ro ce d u re I i n d e p ro c e d u re Q A D, z i e A P 2 5 1 )
Een n i e t -n u me ri e k e to e p a ssin g :
Ge vra a g d w o r d t we lk e ve ld e n v a n e e n sch a a kb o rd i n m i n d e r d a n b i j v . 4 ze t t e n b e ze t
kunnen wo rd e n d o o r e e n p a a rd d a t o p h e t v e ld a l s t a a t .
We d e n ke n o n s e e n i a t e m
.de m
y i e v e p ro c e d u re :
re rc ul rs
.
V E L D
p
[ ro1ce d u re P A A R
: D ( x , y , n ) ; va lu e x , y , n ; in t e g e r x , y , n ;
i8f x < 1 , t h e n e ls e i f x > 8 t h e n e ls e
1
if y < 1 t—
h e e l s—e i—
f y > 8 t h e n e ls e
:
8i f V E L D [ x ,J y < n t h e n
g
din t e eg e r d
c x , ld y ;
122 e
a
r
e
e
r
d
,
.
V E L D[ x , y l : = n ;
e
g ia
f o r d x:= - 2 , - 1 , 1 , 2 d o
n
v
e f o r dr y: = i vf a b s (d x ) = 1 t h e n 2 e l s e 1 , - d y d o
o
l
g
e
P
A
A
RD
(
x
+ cbc, y + d y , n - 1 )
n
s
end
I.S S IE MGE 1.2.0 1=Mrg• 412• 10arB M t c o l = m 0
1 . 1 0 5 3 n u m m i 0 = •
tE m l.LE =E 21.E 1
v— .1=K gams
A l l e v e ld e n va n V E L D mo e t e n wo rd e n g e vu ld m e t d e wa a rd e O.
Do o r d e a a n ro e p : P A A R D (1 , 1 , 4 ) w o r d t d a n e e n p o s it ie v e in t e g e r in g e vu ld o p d i e
velden, d i e b in n e n 4 ze t t e n v a n u it v e l d [ 1 , 11, d . w . z . a l , d o o r e e n p a a rd b e r e i k baar zijn . ,
pca- 11
Opgave. V o e r de s tatement PAARD ( 1, 8 , 2) u i t m e t een s c hema als boven i s
opgesteld v oor de berek ening v an fac ( 2) .
Opmerking. V o o r h e t Xl- ALG O L- s y s teem duur t de uitv oer ing v an de s tatement
PAARD ( 1
9 1 , v er gt de aanroep 69 seconden, dat is dus r u i m 3 x z ov eel r ek entijd. W e
worden
4 )
z ien dus hoez eer effi c ienc y -ov erwegingen h ie r c a n by v alue gebieden.
2
0
s e c
o nr ecdur s iev e proc edure gebruik en w e alleen wanneer het for muler en v an een
Een
e n .
niet- r ec ur s iev e oplos s ing z eer ingewik k eld wor dt. B i j het s c hr ijv en v an een r e c u r W
sieve
a
nproc edure i s het gewenst dat men goed nagaat o f e r aan de r ec ur s ie een
eind
k
n
eomt.
e
r
x
,
10
y Sw it c h e s en des ignational expressions ( RR 3 . 5
9e 4 .
3 .
5 ,
5 . 3 )
n
Door
middel v an een s witc h des ignator k an men, aan de hand v an een s ubs c r ipt
n
expression, u i t een l i j s t des ignational expressions e r een k iez en.
n
Als
gedec lar eer d is :
i
sewitc h S:= L , i f p then L els e A , S[a]
t
dan heeft de s tatement " a l l S[nl" v o o r waarden v an de integer v ar iable n binnen
i
het ber eik 1 < n < 3 dez elfde betekenis als :
n
0d
e
.Voor
waarden v an n buiten dat ber eik is de waarde v an de s witc h des ignator Sa ll
1v
ongedefinieerd.
Volgens R R 4 . 3 . 5 moet dan de go t o s tatement equiv alent z ijn
9a
met
een dummy s tatement, d . w . z . h e t pr ogr amma moet ac hter de go t o s tatement
_l
iu
worden
v oortgez et, als of e r nooit geprobeerd was de waarde v an een s witc h des ige
fnator t e bepalen. Wanneer we bedenken dat de n i n S[n] i . p . v . e e n v ar iable ook
np
best
de func tion des ignator z ou kunnen z ijn v an een func tie-proc edure m e t dec la=a
r1ratie:
t
tinteger
aroc edure n ;
hv
begin PR1NTTEXT ( O l t mag niet op papier v e r s c h ijn e 4 ) : n:= 0 end
ee
waar
in PR1NTTEXT een code-procedure i s d ie de a ls ar gument gegeven s t r ing u i t nr
Lm int ( en "4:" e n " $ " d e har dwar e repres entation v oor s t r in g quotes z ijn ) ,
pr
e
e
dan z ien we dat het v olledig implementer en v an dez e r egel t o t gr ote c omplic aties
ll
kan
leiden. Ve r m o e d e lijk is d i t dan ook i n geen enk ele implementatie v an ALG O L
sd
ve olbrac ht: V o o r h e t X l - en het X8-ALG O L-s y s teem i s v er eis t dat de waarde v an
ieen s witc h des ignator, wanneer dez e bepaald wor dt, ook gedefi nieerd i s .
f
n
=
2
t
h
pea- 12
Een eenvoudige ma a r nuttige toepassing v an het s witc h-mec hanis me is :
Ez
. g
2 1i
procedure t ( letter ) ; s tr ing le t t e r ;
. n
begin PRINT T EXT ( letter ) ; ga_t2 EXIT end;
_ l si
_ w
Ee
i i
.A:
. . t ( 4 4 ) ; B: t k b ) ; C : t 4 4 ) ; D : t ( <
r t
.d S ) ;
t
( 4 4 ) ;
G: t ( k E :
e c
L
o
F
:
t
g > t(
) ;4m$)
M:
; N: t (
L h
i(
A
i
S
)
;
H
:
1
e A
f 4t ) (;t s i )0; T :: t ( 4 0 ) ; U : t (4:11>); V: t
S:
W :
t (4w$); X : t ( 4 4 ) ;
ttk
t L
Y:
Z: t ( 4 ) ;
(( t04 (4:y$);
4 ) ;
t F
<
EXIT : P
4 )
:
e A
1
;
end
tV
r B
(Ik 4 :
P
(DeEaanroep
"Letter ( 7) " •
:
' )
;
kw o
2t
T r d4
a< 1
l V
s 7 > 24i then EXI T els e ALFABETE71
Eat
2
t
i
f
7
Q
)v : o 6
l g t
=
A L F(: A B E T [ 7 ]
;u =
i t t4 g e v o e
vr Ad :th
1
(
e
a ,
= G: t e
(44)
>
1
S
l B
n
)
a L o
)E PRINTTEXT
;
u ,
;
.
E
X
I
T
R
Op
e Cpapier
X v er s c hijnt dus de le t t e r " g " .
J: e
n
d
k ,
I
:
t
; D
T
De ev aluatie
v an een s witc h des ignator, z e lf een des ignational ex pres s ion, le v e r t
t(
a ,
e
(
een
v an een s witc h lis t „ dus w eer een des ignational ex pres s ion, d ie
4
l E element
l
<
4
t ,
behalve
s een label ook een c onditionele des ignational ex pres s ion o f weer een s witc h
)4
;
s
e
F
designator
k an z ijn . I n de laats te twee gev allen moet de ev aluatie worden v oor t,
a ,
A
gezet
1
een label wor dt gevonden, d ie dan de waar de v an de oor s pr onk elijk e
o G totdat
L
,
switch
des ignator i s . H e t volgende v oorbeeld toont aan hoe deze v oortgez ette ev ak ,
F
)
; aHt e het
A es s entiele deel v an een pr ogr amma k an uitmak en.
lu
;
B i s een r eek s v an ALG O L-s y mbolen, waaraan een code i s toegekend
,
Gegeven
K
E
I
volgens:Td e volgende tabel:
,
t
code:
J s[y m b o o l :
(
k
9
1
9
4
K
2 +])
;
,
;
3
L
L
4
,
:
M 0
5
t 1 2 3 4 5 6 7 8 9
,
( n nu een proc edure s c hr ijv en d ie c ontr oleer t o f de r eek s ALG O L- s y mWe w ille
N
t
bolen
een r i j c or r ec te ALG O L- getallen is , w aar bij d e k omma als s c heider tus s en
,
l
O getallen k an dienen.
twee
i
,
)
P
;
,
-, E l
l
a
G
pea- 13
Correc t i s b i j v . :
+2-3 ,+
io
Inc orrec t daarentegen:
+2 - 0
91 0
We v er onder s tellen dat i n0een
i n t , 9 1 : C O D E v a n S Y M B O O L [ 1 : n ] de codes
-. 0
van de achtereenvolgende 0ALG
O L- s y mbolen s taan.
0 7
,9 :
De pr oc edur e dec lar atie luidt
5+
Boolean r o e e d u r e Getalreeks
(k, lengte, SYMB); value lengte; i l l t m s - k, lengrte, SYMB;
33
0 t / m 9;
comment s y mbool+
1
:=0 fout f o u t
, Punt [s ], Tien[s]9 Integer [s fout ;
-switch Tek en
7
, Punt[s ] Tien [s I, integer [s I , einde;
. Integer [s ], Teken[s]
9fout
9 fout
,
fout
fout , F r actie [s 1 fout ;
+
9
F r ac tie
fout
Tien[s]0 F r ac tie[s ], einde;
Integer[s]
+
9
T ie n
fout
Tekenexp[s], fout
, fout E x p [ s ]
3 fout
T e k e
fout
Tekenexp:= fout f o u t
fout - E x p [ s ]
, fout ;
n [ s ]
Ex p i n t e g e r [ s ] , Teken[s]
, fout
0einde;
, fout , Ex p[s ]
switch Integer
switch Punt
switch
switch
switch
switch
latmez_ procedure s ;
12
.Getalreeks:= t r u e ; k := 0 ; gs_f =
1 l r ie ne kt se: =
g efals
r [e;1 ] ;
fout: G e9t9_
ta
2
einde:
Ln
end
k
:
De aanr oep
is nu: G e t a lr e e k s ( i n , CODEvanSYMBOOL[i])
=
k
Opgave: +
Vo e r de pr oc edur e u it v oor de bovenstaande symboolreeksen.
1 enis k an aan de waarde v an de output- par ameter i n a afl oop wor den
Welke betek
;
toegekend, indien de waarde v an de func tion des ignator fals e is ?
s
:
=
i
f
k
>
l
e
n
g
t
e
t
h
e
n
6
e
l
s
e
pca- 14
11 B o o l e a n e r e s s io n s en l o •sche v ar iabelen ( RR 3.4)
Een Boolean ex pres s ion i s alles w at i n een i f c laus e tus s en i f en then mag s taan.
J uis t als v an een ar ithmetic ex pres s ion de ev aluatie w or dt v oortgez et totdat een
numeriek e waarde i s gevonden, en de ev aluatie v an een des ignational ex pres s ion
uiteindelijk een label moet lev er en, z o wor dt ook een Boolean ex pres s ion geev alueer d totdat een der logis c he waarden tr ue o f fals e i s v er k r egen. D e waarde b ijv .
van de Boolean ex pres s ion " 2 < 0 " i s fals e d i e v an " 3 x 3 + 4 x 4 = 5 x 5 "
is t r u e .
Met behulp v an de ar ithmetic oper ator s + , - , x / , : e n /IÊ» k an worden aangegeven
hoe u i t een o f twee getallen een der de getal moet worden berek end, en de r elational
operators < , < , = , > , > en + gev en aan hoe b i j twee getallen een logis c he waarde
moet wor den berekend. O p s oor tgelijk e w ijz e i s het mogelijk b i j een o f twee l o gische waarden een derde logis c he waar de t e laten berekenen, n l. m e t behulp v an
een d e r logic al oper ator s 1 , A , V , 1 en = , e n w el v olgens de r egels d ie i n
RR 3 . 4 . 5 gegeven worden. Ev enals v oor de ar ithmetic al oper ator s gelden v oor
de lo g ic a l oper ator s pr ior iteits r egels 0 D e v olgor de is : 1 , A , V ,
We gev en als v oor beeld de ev aluatie v an " t r u e 1 1 3 x 3 = 9 V 1 > 1 "
true 1-19 = 9 V 1 > 1
true
tr ue V 1 > 1
— 1 1—
true 1 fals e V 1 > 1
true 1 fals e V tr ue
true 1 1E12R
true
Opgave. G a m e t behulp v an R R 3 . 3 . 1 e n 3 . 4 . 7 na, dat nooit twee ar ithmetic al
operators naas t elk aar mogen s taan, ma a r dat w e l de logic al oper ator 1 door
ieder e andere logic al oper ator mag worden voorafgegaan.
Een berekende logis c he waarde k an onthouden wor den door toek enning aan een
logis c he v ar iabele, d ie dan Boolean gedec lareerd moet z ijn . Ev enz o z ijn e r
Boolean ar r ay en Boolean proc edure.
Het v olgende i s een v oorbeeld v an het gebr uik v an een Boolean ar r ay . I n de
ar r ay PR I EM w or dt m e t de " z eef v an Eratos thenes " o p de k - de plaats de waar de
ingev uld v an de uits pr aak " k is een pr iemgetal" .
pca- 15
begin i n t e g e r k , p ;
Boolean ar r ay PRIEMI1 : 1600];
PRIEM[1]:= fals e;
for k := 2 E l m 1 u n t il 1600 d o PRIEM[k ]:= t r ue;
for k : = 2 2122 1 u n t il 40 d o
begin i f PRIEM[k ] then
for p:= k x k ,§_tfp
.
end;
_ k u n t i l
Rest v an het pr ogr amma
1 6 0 0
end
d
o
P R I E
M expressions v oor s tellen, dan kunnen we i . p . v . 1 A evengoed
Als A en B Boolean
[ p ] : =
s c hrijv en: i f A then
f falsae els e t r u e , e n v er der ( mit s de ev aluatie v an B geen
neveneffecten v eroorz
aak
l
s t):
e e i.p.v . A A B
i f A then B els e fals
1 .0 0 .2 .1 .1 0
tE I S C M = K M to3 0 .0 1 2 .1 1 M M E M I Z I P E N I E M U ntr E IMME IZIK O
IK EMME) t r W s Z n a l a r a l M O
= M E M O R M E l t .
.1.• 0221..1.=0
i f A then
ue els
— tr—
—e B i . p . v . A V B
i f A then
ue i . p . v . A — B els
— e t r—
1Indien
B de ber ek ening van B v eel t i j d v er eis t, k an door een der gelijk e s c hr ijfw ijz e
soms een bes paring i n de r ek entijd v erk regen worden. Be la n g r ijk e r is , dat het
voor een bepaalde waar de v an A ongewenst k an z ijn dat B geev alueerd wor dt.
Werken we bijv oor beeld met een implementatie waarv an de ar it met iek b i j deling
door 0 een n ie t gedefi nieerd r es ultaat lev er t, dan z etten we i . p . v . " a / b < eps 1"
w ellic ht lie v e r iet s a ls " b + 0 A a / b < eps 1". Wanneer deling door 0 z elfs a ls
een f out beschouwd wor dt, dan moeten we hier v oor w e l s c hr ijv en:
" i f b = 0 then
— fals
—e els
—e a / b < eps 1".
own ( RR 5 5 . 2 . 5 )
Als tijdens de uitv oer ing v an een pr ogr amma een bloc k wor dt binnengegaan, z ijn de
waarden v an de daar gedec lareerde s imple v ar iables en ar r ay s nog ongedefi nieerd.
D it geldt ook indien het bloc k reeds eer der i s door lopen en dez e grrootheden toen
wel een waarde hebben gekregen. Beginnen hun dec lar aties ec hter me t het s y mbool
own, dan b l i j f t hun waarde behouden. V o o r s imp le v ar iables en ar r ay s waar v an de
bound p a ir ex pres s ies constanten z ijn , k an men d it opvatten als of z i j i n het buitens te
bloc k gedec lareerd z ijn (afgezien v an de mogelijk heid dat b i j het buitens te bloc k
reeds een gelijk namige entiteit behoort). I ndien het bloc k w aar bij de own gedec lar eer de s imple v ar iable o f ar r ay behoor t i n een proc edure body s taat, i s het mogel i j k nog andere inter pr etaties aan own t e geven, m e t name a ls het een proc edure
betr eft die r ec ur s ief gebr uik t wor dt.
pea- 16
In d e zogenaamde dynamische opv atting, waar mee i n de MC- r f- ALG O L- v er taler g e ex perimenteerd is , bes taat v oor ie d e r r ec ur s ie- niv eau een eigen s et own s imple
v ariables en ar r ay s . Volgens een andere dynamische inter pr etatie bes taat een d e r gelijk e s et v oor elk e plaats i n het pr ogr m m a waar de proc edure wor dt aangeroepen,
als of de pr oc edur e body steeds v oor z o'n proc edure aanroep ges ubs titueerd wor dt
(body r eplac ement) . W i j beschouwen h ie r ec hter s lec hts de s tatis c he inter pr etatie,
waar bij v an elk e own gr ootheid ten hoogste 1 waar de bekend is .
Men k an z ic h afv ragen i n welk e omstandigheden het z inv ol i s een gr ootheid own te
dec lareren i . p . v . dez e gewoon i n het buitens te o f althans een omv attend bloc k te
dec lareren.
Voor s imple v ar iables e n ar r ay s m e t v as te bound p a ir waarden heeft d it alleen z in
in een pr oc edur e, n l . v o o r die grootheden waarv an alleen binnen de proc edure de
waarde bepaald o f gevraagd wor dt, w aar bij toc h deze waarde v an de ene aanroep tot
de ander e behouden moet blijv en: i n d it gev al z ou dec lar atie i n een buitenbloek t ot
gevolg hebben dat de proc edure n ie t a ls een z elfs tandige eenheid beschouwd k an w o r den. E e n gr ootheid als wagenstand (hoeveel s y mbolen s taan e r a l op de r egel) e n
c as e-defi nitie ( hoofdletter s o f k leine letter s ) i n een proc edure d ie aangeboden s y mbolen omz et i n ponsingen v oor een F lex owr iter band, kunnen daar het bes te own gedec lareerd wor den. W e moeten e r w e l op een o f andere w ijz e v oor z or gen dat d ie
grootheden eer der een waarde k r ijg e n dan e r naar hun waarde gev raagd wor dt.
Dynamische own ar r ay s , me t v ar iabele bound p a ir waarden dus , kunnen gebr uik t
worden om geheugenruimte t e bes paren i n het gev al dat de s ubs c r ipt expressions
in pr inc ipe ov er een gr oot ber eik kunnen v ar ier en, t e r w ijl toc h steeds ov er een
beperk t ber eik tegelijk de waarden onthouden behoeven te wor den. (BUNT. e e n c y c lis c h
magaz ijn o f e e n zogenaamde s tapel) I n het X8- ALG O L- s y s teem z ijn op het ogenb lik own ar r ay s nog niet geimplementeer d. B i j de mees te implementaties , waaronder
het Xl- ALG O L- s y s teem, z i j n dynamische own ar r ay s n ie t toegestaan. D i t i s w e l het
geval b i j de MC - I I - v er t aler .
13 f o r s tatements ( RR 4.6)
In een f o r s tatement moet de s tatement ac hter do worden uitgev oer d met die waarden
van d e lopende v ar iabele, d ie door de f o r l i s t elements wor den bepaald.
Er z i j n d r ie s oor ten f o r l i s t elements :
1. A r i t h m e t i c ex pres s ion.
2. St e p - u n t il- e le m e n t . I n v eel implementaties w ijk t de wer k ing op onderdelen a f
van de w er k ing beschreven i n R R 4.604.2. O m d ie r eden v er mijden we gev allen w aar in b ijv . d e ev aluatie v an de stapwaarde neveneffecten geeft.
3. W h ile - e le m e n t .
Deze d r i e mogen door elk aar i n een f o r l i s t gebr uik t worden.
pca- 17
Enige v oorbeelden:
1. f o r z := - ar c tan
/
a) , s in ( z ) , 1 - z it% 2 do p r in t (z)
TIE E K .E 3
2. I n v u lle n v an een codetabel:
wijz er :=
for code:= 32, 1 , 2 , 19, 4 , 21, 22, 7 , 8 , 25 do
begin V E R T A A L [ c o d e l : = w ijz er : = w ijz e r + 1 ;
CODE[wijz er]:= c ode
end
3. j moet de getallen 1 t / m n doorlopen m a a r het getal i ( w aar bij 1 < i < n)
overslaan.
for j: = 1 E l m 1 u n t il i - I , i + 1E t p 2 1 u n t il n do
4, c moet de c ijf e r s 0 t / m 9 c y c lis c h doorlopen, t e beginnen b i j c ijf e r cO.
for c := c 0 Et22
. 1
u n t i l
5. O p l o s s i n g v an x = f (x) m e t x 0 a ls begins c hatting, w aar bij I f q x ) I < 10
9
,
x:= x 0;
0
.
for
s 1z2=2 f 2(x) w h ile abs ( z - x ) > - 5 x ohs (z ) do x := z
.
1
u
n
t
i
l
c
0
1
d
o
M a r .1 .3 0
M
M
E
N
.
M
.
S
T
I
N
.
pca- 18
14 H o e w or dt e e n - k t i _ _ _ o ra
n _ 1 _ 1 a
ite
u
vo
rd
?
m
M
,
O
t
a
M
M
t
Men z ou kunnen denken dat een rek enmac hine b i j de uitv oer ing v an een ALG O La
.
t
g
pr ogr amma de i n z ijn geheugen opgeslagen ALG O L- tek s t door loopt, en b i j het
r
n
vinden v an een identifi er s teeds w eer bepaalt welk e entiteit bedoeld w or dt, etc .
D it i s n ie t e r g effi c ient: v e e l dat eens e n v oor a l gedaan k an wor den, gebeur t
b ij dez e aanpak s teeds opnieuw, hetgeen onnodig v eel t i j d k os t.
In d e pr ak tijk gaat men dan ook anders t e wer k : me n gebr uik t een c ompiler o f
v er taler , dat w i l zeggen een pr ogr amma dat a ls input een ALG O L- pr ogr amma
heeft en als output een pr ogr amma i n de c ode v an de mac hine, het z gn. o b je c t pr ogr amma. D i t objec tpr ogr amma wor dt dan uitgev oer d.
Men k an v oor een mac hine v er s c hillende v er taler s c ons trueren: de ene z a l s n e lle r wer k en en min d e r geheugenruimte bes laan, de ander e z a l een effi c ienter
objec tprogramma lev er en.
Door v er s c hillende v er taler s z a l bijv oor beeld de s tatement " x : = a X b + c / d "
v er s c hillend v er taald kunnen worden. I n ALG O L beschreven z ijn dan twee mogelijk e v er talingen er v an ( waar bij ieder e s tatement een machinecode-opdracht is ) :
1, b E g l a r eal F , S i , S2, 53;
.
F:= a ; Sl: = F ;
2 t a r e aF:=l b ; 52:=
F F,;
2
F
S F i
F:= S i ; F : = F x S23 SJ := F ;
;
.
:
12
=
a;
:
=
F x b;
S
l
:
=
F;
F:= c ; 52:= F ;
F
:
=
c;
F:= d ; S3:= F ;
F
:
=
F / d;
F:= S2 ; F : = F / S3; S2:= F ;
F
:
=
F + Si;
F:= S i ; 1
1
F:= S i ; x := F
e
n
d
:=
F
end
+
S 2
In h e t objec;tpr ogr ar nma z ullen steeds s ter eotiepe opeenvolgingen v an mac hineS
i
code-opdrachten v oork omen, c orres ponderend m e t een bepaalde "ac tie- eenheid",
:
bijv oor beeid= het ALG O L- s y mbool " * " . O m nu het objec tpr ogr amma k o r t t e houden, i s het 1nuttig dat de v er taler i n plaats v an z otn opeenv olging een opdrac ht
s c hr ijft, d ie1 een (parameterloz e) machinecodeprocedure aanroept, d ie dan bes taat
;
x
:
=
F
pca- 19
uit de s ter eotiepe opeenvolging v an opdrachten. M e t n
azou
b sbijv
" oor
i beeld
n
d aanroep
e
A
L Gc orres
O Lponderen
een
kunnen
v an de ( h ie r i n ALG O L
t e k s t
beschreven) machinecodeprocedure
proc edure ABS;
begin F : = S i;
i f > 0 then
—
g2
.
1
2 FL ;
L: S I :1 =
:
end
=
F v an machinecodeprocedures dat het objec tpr ogr amma c ompleteer t
Het ar s enaal
;
heet het c omplex . H e t objec tpr ogr amma u it het v oorbeeld k an me t behulp v an
een c omplex als v olgt ger ealis eer d worden:
12
.
2g
2
i
n
t
e
g
e
r
i
;
r
e
a
l
F
;
r
e
a
l
I
r
end
z
a
S
t
l
:
1
0
0
1
comment c omplex ;
procedure ST APEL; begin S[i]:= F ; i: = i + 1 end;
a s t s a l m O NTSTAPEL; begin i: = i - 1 ; F : = SR] end;
EE2c edur e M U L ; begin O NT ST APEL; F := F x S[ i -
S [ i
- 11:= F end;
pLocedure DrV;122E121:= I - 1; O NTSTAPEL; F:= F / S[i + 1]; STAPEL end;
am
p
A
comment
objec tpr ogr amma; i: = 1 ;
t
12202
Ea
.
t o 6 , 8
t
6
P
A
r e
F:= a ; ST APEL;
D
a l
D
F:= b ; ST APEL;
x
;
,
MUL;
b
a
F:= c ; ST APEL;
e
,
g
F:= d ; ST APEL;
b
i
DIV;
,
n
c
ADD;
O
,
N
O NTSTAPEL; x := F
d
T
end
;
S
T
A
P
E
L
;
F
:
=
F
pea- 20
De c omplex proc edures z ullen i n het algemeen c orres ponderen me t eenvoudige a c tie-eenheden. Sommige mac hines hebben z odanig aan ALG O L aangepaste opdrac hten,
dat eenheden als " M U L " , " D r y " e n " AD D " u i t 1 opdr ac ht bestaan, z odat z e n ie t
meer i n het c omplex behoeven t e wor den opgenomen: i n plaats v an de aanroep
van d e proc edure z et men dan lie v e r de opdrac ht z elf . Dez e mac hines kunnen
een ALG O L- pr ogr amma s neller en me t minder geheugengebruik uitv oer en dan andere mac hines . Z o duur t op de X1 een ALG O L- pr ogr amma 10 t o t 20 ma a l z o
lang als een z or gv uldig me t de hand geschreven equiv alent mac hinec odeprogramma.
B i j de X8, m e t z i j n meer op ALG O L toeges pits te opdrachten, bedraagt dez e
fac tor 2 t o t 3 .
Waar om wer k t n u b i j een v er taler het objeetpr ogr amma langz amer dan noodz ak elijk ?
In h e t algemeen omdat ook i n de eenvoudigste gev allen r ek ening gehouden wor dt
met de groots te c omplex iteit die k an optreden:
- - Komt i n een ar ithmetic ex pres s ion een f o r m a l par ameter v oor , dan k an
evaluatie daarv an een r ec ur s iev e aanroep v an de proc edure m e t z ic h brengen,
maar i n v er r eweg de mees te gev allen z al dat n ie t z o z ijn .
- - B ij een f o r s tatement k an tijdens uitv oer ing de lopende v ar iabele v an identiteit
veranderen, a l gebeur t dat mees tal niet .
— Een go t o s tatement k an buiten het bloc k v oeren, m a a r doet dat v aak niet .
De c ompiler geeft dus steeds een algemene v er taling, e n het c omplex bev at de
meest algemene r outines .
15 _Ti•ds duur e n l a a t s r u i m t e van het r o r a mma
Hoelang uitv oer ing van een ALG O L-programma duur t, en hoev eel r u im t e het p r o gr amma i n z al nemen, hangt s ter k a f v an het gebr uik te v er taler s y s teem. W e
z ullen h ie r dus n ie t een v olledige handleiding geven v oor het berek enen v an
de benodigde plaats e n t i j d v oor het gehele pr ogr amma.
Wel i s h e t nuttig, t e kunnen bepalen v oor k or te s tuk k en ALG O L- pr ogr amma,
wat u i t een oogpunt v an effi c ienc y de bes te f or muler ing is .
In r u w e benadering k an men de tijds duur r es p. lengt e v an een s tatement
schatten door de tijds duur r es p r u imt e v an delimiter s e n identifi er s o p t e
tellen. V o o r de X1 e n de X8 bedragen plaats e n r u imt e (De gegevens v oor de
X8 z i j n tentatief, uits luitend v oor de v er gelijk ing v er meld) :
pca- 21
X1 s y s teem
integers 1
.5 ms ec
1 plaats 2 . 5 mms ec
1 plaats
1 msec
3 plaats en 12.5 mms ec
1 plaats
.5 ms ec
1 plaats
1 msec
1 plaats 4 0 m m s e c
1 plaats
1 msec
1 plaats 1 9 1 m m s e c
2 plaats en
1 msec
1 plaats
2 plaats en
x
r eals
X8 s y s teem
1 plaats
5
5
mmsec
mmsec
1 plaats
1.5 ms ec
1 plaats 2 . 5 mms ec
-
1 plaats
2.5 ms ec
1 plaats
x, /
1 plaats
iN 2
3 plaats en 10 m s e c
3
msec
5
mmsec
1 plaats 6 5 m m s e c
Booleans b
2 plaats en
:=, A , 1 , > etc
1 plaats
1 msec
sul
3 plaats en
3 msec
53 m m s e c
[11, 121 5 plaats en
5 msec
53 + 8 6 mms ec
[11, 12, 131 7 plaats en
7 msec
53 + 172 mms ec
[
i
l
l
.5 ms ec
Voor de X1 geldt nog het volgende:
- - Het ingaan en v erv olgens w eer v er laten v an een bloc k v er gt 4 ms ec .
- - De c ons tr uc tie " f o r —
u n t i l
d o " neemt 13 geheugenplaatsen in .
- - De c ons tr uc tie " i f . . . t h e n . — —
else" neemt 3 plaats en i n en v er gt 1 ms ec .
- - De f o r s tatement me t een s impele lopende integer v ar iabele, e n c onstanten o f s imple v ar iables a ls beginwaarde, stapgrrootte en eindgrens
vergt 7 . 5 ms ec p e r s lag.
"g2 J 2 L A B E L " v er gt een verwaarloosbare t ijd en neemt nor maal 1 plaats in.
Een la b e l v oor een s tatement neemt geen plaats i n .
voorbeeld Loont het de moeite v oor het X1 s y s teem de f o r s tatement u i t t e
schrijven?
" for 1:= 1 tt,92 1 u n t il 1000 do" v er gt v olgens het bovenstaande
7.5 seconden en 22 plaats en.
11
1:
neemt 22 plaats en i n en v er gt 6 . 5 seconden.
=
( Bij nauwk eurige meting z ijn de t ijden r es p 7 . 6 e n 5 . 8 seconden).
1
In
; het algemeen loont het n ie t de moeite, v oor z o'n k leine t i j d wins
B t de ov er z ic htelijk heid v an het pr ogr amma op t e offer en.
B
:
i
pea- 22 •
voorbeeld O p een bepaald punt i n het pr ogr amma moet v aak wor den uitgerek end,
voor v er s c hillende waarden v an i , j en k :
s i + A [ i, j , k l ; 1 + 1 , 5 + 1 + 2 „ 5 + 1 + 7 = 14 ms ec
s2;-- s 2 + A[1, j , k l x A [ i , j , k ] 1 4 + 3 + 1 + 7 = 25 ms ec
Op de X1 duur t d i t per k eer ongev eer 39 ms ec , Sc hr ijv en we ec hter :
a;=! A f t , j , k
]
al + a 1 + 1 . 5 + 1 + 2 0 5 + 1 = 7 m s e c
1
+
s2 + a x a
7
+
3
+
1
=
11 m s e c
1
0
dan duur 5
t de +
berek ening 2805 ms ec .
Voor d e 1
X8 z+i j n dez e t ijd e n . 8 2 e n „ 25 ms ec . B lijk b a a r lo o n t het b i j
7
=
sommige mac hines i n s ommige gev allen de moeite o m de waar den v an
1
een ar r ay0- element, waar naar enige malen gev raagd z a l wor den, aan een
hulpv ariabele
.
t oe t e kennen.
5
m
Opvallend is , dat de X1 n ie t alleen v eel langz amer i s dan de X8 , m a a r dat de
s
tijden v oor de v er sec hillende X1 oper aties n ie t v eel v an elk aar v er s c hillen,
t e r w ijl b i j de X8 wce l degelijk aanmer k elijk v er s c hil i n t i j d is tus s en de
operatoren onder ling
.B i j de X1 neemt het eigenlijk e r ek enwer k minder t i j d i n bes lag dan de daar v oor
v er eis te adminis tr atie. B i j d e X8 i s de adminis tr atie mees tal v eel ger inger
( Bij s ubs c ripted v ar iables , w aar de adminis tr atie v r i j uitgebr eid is , i s
de s nelheids v erhouding v an de twee mac hines dan ook duidelijk minder gr oot) ,
Het X 1 e n het X8 s y s teem v or men h ie r in twee ex tr emen, ander e s y s temen b e vinden z ic h daartus s en, o f niet v e r daarvandaan.
U it bovenstaande c ijf e r s b lijk t dat ov er igens equiv alente s c hr ijfw ijz en v aak
een v er s c hillende duur v an uitv oer ing hebben, bijv oor beeld " a x a " k an
equiv alent z ijn m e t " a /I\ 2" m a a r de t ijd e n hoeven niet g e lijk t e z i j n ( X1
5 ms ec r es p 11 ms ee) .
Blijk baar i s het mogelijk , door het Mez en v an een ges c hik te s c hr ijfw ijz e
een pr ogr amma enigz ins t e v er s nellen. H oew el v er s c hillende s y s temen duidelijk
v ers c hillende eigenschappen hebben, i s h e t toc h mogelijk hier v oor enk ele
suggesties t e gev en, d ie een grotendeels algemene geldigheid z ullen hebben.
Een gev olg v an d it v er s nellen k an z ijn dat de c ons tr uc tie v an het pr ogr amma
minder ov er z ic htelijk wor dt, M e n moet z ic h e r s teeds rekenschap v an geven
of d i t v er lips aan elegantie en het ex tr a benodigde denk werk opwegen tegen
de t e behalen tijdw ins t. Bes teed dus d e mees te ener gie aan het optimalis er en
van d ie s tuk k en pr ogr amma d ie het mees t worden door lopen, bijv oor beeld
binnen (geneste) f o r s tatements .
pea- 23
st_lamttLe Laat geen wer k dubbel doen„
Wordt naar de waarde v an een bepaald a r r a y element enk ele malen g e vraagd, k en hem dan toe aan een hulpv ar iabele. Hebben enige ex pr es sies s ubex pres s ies gemeen, k en d ie dan toe aan een hulpv ar iabele,
Maak b i j proc edure dec lar ation, daar v oor i n aanmer k ing komende p a r a meters v alue.
st_ltamtLe Binnen geneste f o r s tatements : r ek en een v an een o f meer lopende
v ariabelen afhangend tus s enres ultaat u i t z o gauw dat k an. S t e l de
berekening niet u it t o i n de " k er n" v an de f o r s tatements .
suggestie B i j de mees te ALG O L s y s temen s taan codeprocedures t e r bes c hik k ing,
die aanmer k elijk s neller wer k en dan de corresponderende ALG O L pr oc edures. G ebr uik d ie proc edures dan ook .
mgy s lle
.
enter pr oc es .
V a a
sjime_slia Maak n ie t onnodig een v aak doorlopen compound s tatement t o t bloc k ,
k
door e r een dec lar atie t e laten plaats v inden. E e n compound s tatement
g e
e f t
binnen een f o r s tatement i s n ie t noodz ak elijk een bloc k . W e l i s de
e
body v an een proc edure i n de mees te s y s temen een bloc k . S c h r ijf
e
desnoods een proc edure aanroep i n een v eeldoorlopen tr ajec t u it .
n
e e
n v
voorbeeld
Berek end moet worden "( ex p (x ) - e x
o
u
Ingewikkelde s tandaardroutines a ls " s in " , " ar c tan" e n " ex p" dur en
d (i - x ) )
p
/
( e x p
erg lang. W e kunnen de uitdr uk k ing her s c hr ijv en t ot
g
e
(
x
)
+
m
e
x "1 - p2 / (ex p ( 2( X x )- + 1) " , welk e uitdr uk k ing dr iemaal z o s nel
a
t)
x
berekend
)
"
wor dt.
h
e
voorbeeld Stel, i n het gebr uik te s y s teem hebben we de bes c hik k ing ov er de s tanm
daardprocedures SOM en INTEG RAAL, met voor de hand liggende betekenis.
a
t
i
s
"SOM (1, 1 , n , SOM ( j, 1 , m , INT EG RAAL ( x , x 0, x l ,
c
h
SW x P ( j) X Q (1, j ) x R (1, j , x ) , toler antie) ) ) "
e
is beter t e berekenen a ls
h
e
"SOM ( I , 1 , n , S (1) x SOM ( j, 1 , m , P ( j) x ( i , j )
r
INTEG RAAL ( x , x 0, x l , R ( i, j , x ) , toler antie) ) ) ".
s
Bovendien loont het b i j gr ote n waar s c hijnlijk de mc eite de waarden
c
van P i n een hulpar r ay op t e s laan, omdat z e anders v oor ieder e
h
r
waarde v an 1 opnieuw berekend moeten wor den.
i
j
v
i
n
g
e
e
n
pca- 24
Over geheugengebruik v alt algemeen het volgende t e zeggen:
Tijdens uitv oer ing v an het pr ogr amma moet het geheugen bev atten
— het c omplex
— h e t objec tpr ogr amma
de r u im t e v oor de v ar iables
- - de w er k r uimte v oor de adminis tr atie.
De lengte v an het c omplex heeft de pr ogr ammeur n ie t i n de hand. D e benodigde
wer k r uimte s peelt alleen een r o l b i j een pr ogr amma dat uitgebr eid gebr uik
maakt v an r ec ur s iv iteit. O m het objec tprogramrna noemenswaardig k or ter t e
maken z ou de pr ogr ammeur a l v r i j gr ote wijz igingen i n z ijn pr ogr amme aan
moeten brengen. B l i j f t ov er de r u im t e v oor de v ar iables , z owel s implii't als s ubs c ripted v ar iables . H e t aantal s imple v ar iables z a l noon gr oot z ijn , a l was het
maar omdat de pr ogr ammeur z e s tuk v oor s tuk moet dec lar er en e n ar r ay
daarentegen v an 10 000 elementen k an de pr ogr ammeur m e t n ie t meer 'moeite
dec lareren dan een v an nul elementen.
Komt een pr ogr amma i n r uimtenood, dan moet de pr ogr ammeur i n eer s te ins tantie proberen r uimte te winnen door de benodigde r uimte voor array s t e v erminderen.
H ij k an ov erbodig geworden ar r ay s v er wijder en door blok v er lating, v oor dat
h ij nieuwe dec lar eer t, o f een ar r ay op v er s c hillende plaats en v er s c hillende
functies laten v er v ullen. Integer ar r ay s v an k leine integer s k an h i j "pak k en",
dat w i l zeggen me e r dan een integer i n een ar r ay plaats opbergen. I n het a l gemeen moet h i j een equiv alente s c hr ijfw ijz e v an het pr ogr amma v inden, d ie
minder ar r ay r uimt e v er eis t.
In h e t er gs te gev al k an het pr ogr amma idie
n naa uelk
t aar
o n gedr
o maaid
e worden, w aar bij ieder deel een k or ter objec tpr ogr ams t u k k e n
ma en mis s c hien minder geheugenbehoefte heeft.
g e s
p l i t s
t
w
o
r
d
e
n
,
pea- 2 5
16 N o g lets ov er t ild e n en effi c ienc y
De tijds duur v an de standaardfuncties v oor het X l - en het X8- ALG O L- s y s teem
(tijden v oor de X 8 nog met defi nitief) '
X1
X
8
scirt
4
4 ms ec
in 2 6 , 7 ms ec
3 6 5 mms ec
5 9 1 mms ec
exp
cos
2 4
2 8
7 ms ec 7 4 0 mms ec
2 ms ee 6 4 0 mms ec
sin
2
6 ms ec
6 7 0
mms ec
arctan 1 0 9 2 ms ec
7 2 8
mms ec
4
T er v er geli Jong
3 14 2
9 ms ec
1
5
mms ec
Als b i
e$x p r e s s
z ond
-zowel
i n t i j d a ls i n geheugengebrulk aanz ienlijk effi elenter k a n z ijn
,ee rs h e
Het
t l ekenen b:Jv v a n m -I- n x ( n - 1) v er gt o p de X8 ongev eer 120 mms ec en
i daIn
w
a
rv8 plaats
b i j en V o o r ( n - x n m i s d i t ongeveer 90 mms ec e n 4 plaats en W e
a
z o d it begr ijpen als w e weten hoe beide ex pres s ies v er taald wor den
kunnen
vn eIn 4
eh l = n::
e
m
o
n
St = F
F
=
, F - 1,:
gt
ex
X
l i(
F = F
i8 k n
x
F + m
dn ;
n
es
1
y
.F 1 , „
e
)
es tF x
ne
(
F F +
ve
n
Dit k-an biwoor beeld b i l de berek ening v an een poly noom v an gr oot beiang Zi311
om
uka0 + 1x x ( a l + x x (a2 + x x (a3 x x ( a4 + x x a5))))' + 495 mms ec ,' 29 plaats en
da
) x x + a4) x x a 3 ) x x + a2) x x + a l ) x x + aO + 360 mms ec ; 11 plaats en
lq(a5
in
x
v
aar d s c hr ijv en we niet,
gUiter
n
ee
a0 + +a l x x + a2 x * 2 + a3 x x 4 3 + a4 x x 4 4 + 25 .
sr5( m
s .
+ 2 0 0 0
um
m ,m
s
e
c
:
be
4
1
elp
l
a
a
t
s
e
n
xd
pw
ro
er
pea- 26
Nog een v oorbeeld:
We w i l l e n de r es t t er m berekenen die onts taat wanneer we de T ay lor r eek s v oor
s in (x ) n a de t e r m m e t x * 9 afbrek en:
s in (x ) = x
- x 41/4 3 / fac (3) + x * 5 / fac (5) x * 7 / fac (7) + x * 9 / fae (9) + R (x)
r eal RE222aumt I t ( x ) ; v alue x ; r eal x ;
begin r e a l x 2;
x2:= x x x ;
R:= s in (x) - ((((x2 / 72 - ) X X2 / 42 + 1) x x2 / 20 - 1) x x2 / 6 + 1) x x
end
Opmerking. D e t ijd e n i n het voorafgaande z ijn v er meld o m een indr uk t e gev en v an
de tijds v er houdingen tus s en v ers c hillende oper aties e . d. W e gebr uik en z e daar om
niet o m de effi c ients te t e bepalen v an twee v er s ies , indien dat niet op het oog k an.
Indien het v er s c hil i n tijds duur n ie t onmiddellijk t e z ien v alt z a l d i t w aar s c hijnlijk
te k le in z ijn o m de moeite v an het narekenen t e belonen. H e t gemak v an ALG O L,
ni
, ommeren, z ou h ie r b ij v er lor en gaan.
bek
d
Men k an het z ic h ook , ten koste v an de effi c ienc y , t e m o e ilijk mak en, door ie t s i n
a
tALG O L t e oms c hr ijv en wat daar in ook rec hts treek s k an worden uitgedr uk t.
d1. W e s c hr ijv en
e
niet i f x < 0 then
-x —
els e x m a a r a b s (x )
—
p
niet e x p ( in (a) x b)
m
a
a
r
a * b
r
niet e : = 2. 718; z := e 4 q
m a a r
z : = ex p (q)
o
g
niet a * (1 / 2)
m
a
a
r
s c i r t (a)
r
niet 1 . 5 x 10 4 (-3)
m
a
a
r
5
a
1niet
0 (-1) x r
m
a
a
r
- r
m
- 3
niet i f s t h e n tr ue els e fals e m a a r s 0
m
e2. V e r d e r bedenken we dat het geen z in heeft de waarde v an een ex pres s ie aan
u
een v ar iabele toe t e kennen, indien de waarde v an deze v ar iabele v erv olgens
r
slechts 1 k e e r gebr uik t wor dt. M e n s c hr ijv e dus niet :
z
i
p:= Z ER O ( n, b , e , f n, p r )
c
om v er v olgens p alleen t e gebr uik en v oor : p r i n t ( p) .
h
We s c hr ijv en dan: p r i n t (ZERO ( n, b , e , f n , pr ) ) .
n
Ook niet:
t
:
=
entier ( k x f ) ; n:= k x k - 1
i
e
als v erv olgens t en n alleen gebr uik t wor den in : q : = t n .
t
Men s c hr ijv e dan:
q : =
e n t ie r ( k x f ) : ( k x k - 1) .
o
m
Nog
a
,
Beter
is :
a
b
s
( f / p) ; m:= n x q 4 (1 / d)
d
e
en nog beter nu: m : = n x abs ( f / p) 4 (1 / d) .
m
e
i
n
n
v
i
o
s
o
pea- 27
3. F o r s tatements d ie dez elfde f o r l i s t hebben en w aar bij de ene n ie t op het
res ultaat v an de gehele andere f o r s tatement behoeft te wachten, kunnen s amengetrokken wor den. I n plaats v an:
for j : = 1 s :
.for j : = 1 Et 9
1
. en w e beter :
s c hrijv
.2
for
j : = 1 Ets
9
. 1
.
en nu
u znien
t iw e
l dat w e nog beter kunnen s c hr ijv en:
E
2
m
for j : = 1 s l m 1 u n t il m do C [ j, j] : = 1 - 1 C [ i o j1
. 11
o
4. E r zd
uijnnntwee
t t i il v aak voorkomende gev allen aan t e geven w aar bij het n ie t z inv ol i s
C
een m
lIa r r a y t e gebr uik en o f waar bij althans een der indic es ov er bodig is .
d
o
m
jDe eer
] s te ov erbodige ar r ay - s oor t i s d ie , w aar bij n a toekenning v an een
1
d
waarde
:
= aan een element de waarden v an de eer der berekende elementen
.o
1niet m e e r gebr uik t worden.
2
2 k
C
a
[C
Als wj e bijv oor beeld 1 / 1 + 1 / 2 + 1/ 3 + • + 1 / n w ille n berekenen als v olgt:
C
,[
A[0]:= 0 ;
O
jj
for j : = 1 5
,]
,
. ]
we de ar r ay A door een s imple v ar iable vervangen:
j:dan kunnen
j
2
2
1
:=
= 0;
A:=
]
u
n t i
1
for
j : - 1 E l m 1 u n t il n do A: = 1 / j + A
l
/
Van nde tweede ov erbodige ar r ay - s oor t k omen de elementen steeds v oor m e t
C
d
[als index
- ex pr es s ie een getal. H ie r b ij i s de ar r ay een v er z ameling op z ic ho
jz elf staande v ar iabelen, geen ges truc tureerde v er z ameling.
A
,
Voorbeeld
[
j
]
j
:
=
A[1]:= r ead; A[2]:= A[ 1 ] + 1 ; A[3]:= A[ 1 ] / A[2];
]
A
;
for k : = 4 , 5 do A[k ]:= l n ( A[k - 2]) ;
C [
jz:= b x A[ 4 ] / A[2] + c x A[ 5 ] / A[ 3 ] ;
[
w:=
a x A[ 1 ] + b x A[ 4 ] /1Ê» 2 + c x A[ 5 ] 4\ 2
j
1 uik en h ie r lie v e r 5 s imp le v ar iables :
,
We
gebr
]
j
A:= r ead; B:= A + 1 ; C:= A / B ;
+
]
1D:= l n ( B ) ; E : = I n ( C ) ;
:
/z : = b X D / B i - c x E / C ;
=
jw : = a x A + b x D x D + c x E x E
1
Wanneer i n d it tweede gev al naas t de ov erbodige index ook z inv olle indic es
C
[voorkomen, b ijv , r e a l a r m _ PARAM[1 : 5 , 1 : k , 1 : n ] , dan dec lar er en
jwe natuur lijk : r e a l array_ PA,' PB, PC , PD , PE( 1 : k , 1 :
,
j
Als v oor beeld v an het ov erbodig gebr uik v an ar r ay s e n v an nog enk ele ander e
]
genoemdee fouten z ullen we een pr ogr amma geven v oor het berekenen v an e en 1 / e .
n
d
pea- 28
Zoals bekend:
e
= 1 + 1 / fae (1) + 1 / fac ( 2) + 1 / fac (3) +
1/e = 1 - 1 / fac (1) + 1 / fac (2) - 1 / fac (3) +
We z u lle n eer s t ov erbodige ar r ay s gebr uik en en het pr ogr amma v erv olgens s tap
voor s tap v er beter en. G a na hoe mees tal een v er beter ing pas dank z i j de v or ige
stap mo g e lijk wor dt.
begin i n t e g e r n ; n:= r ead;
begin i n t e g e r k ; r e a l p ; r e a l a r r a y A , B[1 : 2, 0 : ni, FAC[0 :
FAC[0]:= 1 ;
for k := 1 2 1
.
A[1,
0]:= A[ 2 , 0]:= 1 ;
22
for k := 1 a t m
. 1
. 1 B [ 1 , l a = 1 / F AC[k ];
begin
u n t i l
u n t i l
n
B[2, l a = ( - 1) 4 k / F AC[k ];
n
d
o A[1, l a = A[ 1, k - 1 ] + 13[1, k b
d
o
F A C
A[2, l a = A[ 2 , k - 1 ] + B[ 2 , I d
[ k ]
:ends=
F
for k := 1 Lt2p
A
. 1 NLCR; p r in t ( A[1, l a ; p r in t ( A[2, l a end;
begin
C
u n t i l
NLCR;
[n
k p:= A[ 1 , n i x A[ 2 , n ] ; p r in t (p)
end
-d
o
1
end
]
We z ie n i n het pr ogr amma
x d r ie p a r a lle lle for statements: f or k := 1 E l m 1 until n do
We tr ek k en dez e s amen en
k schrappen tevens de v ar iabele p , waarv an de waarde
9 g 1 . 2 . 1 4 .1
; dt gebr uik t.
immer s s lec hts 1 k eer wor
begin i n t e g e r n ; n:= r ead;
begin
integer k ; r e a l a r r a y A , B[1 : 2 , 0 : n ] , F AC[0 : n i ;
FAC[0]:= 1 ;
[
1
,
6
3
P E e , , o i 2.13
for k := 1 a t
.1 2
2
. 2 1 B[1, l a = 1 / F AC[k ];
u
e n t i l
B[2, l a = ( - 1) * k / F AC[k ];
n
.
d
o A[1, k ]:= A[ 1 . k - 11 + 13E1, k b
pa
end
end
F
A[2, l a = A[ 2 , k - i i + B[2, k ] ;
A
NLCR; p r in t ( A[1, l a ; p r in t ( A[2, k l)
C
end;
[
NLCR;
p r in t ( A[1, n ] x A[ 2 n ] )
l
a
=
F
A
C
[
k
pca- 29
In bovenstaande tweede v er s ie z ien we dat de a r r a y F AC t o t de eer s te s oor t d e r
overbodige ar r ay s behoor t: Heeft FAC[k ] eenmaal een waarde, dan worden FAC[k - 11
en de daaraan voorafgaande elementen v an F AC n ie t meer gebruik to D e index v an
FAC k an dus ac hterwege blijv en. Hetz elfde geldt v oor de tweede index v an A en B.
begin i n t e g e r n ; n:= r ead;
begin ! E l a m k ; r e a l F AC ; r e a l a r r a y A , 13[1 : 2 ] ;
A[1]:= A[2]:= 1 ;
for k := 1 s tep 1 u n t il n do
begin F A C : = F AC x k ;
B[1]:- 1 / F AC ;
13[2]:= ( - 1) it% k / F AC ;
A[1]:= A[ 1 ] + B[ 1 ] ;
A[2]:= A[ 2 ] + B[ 2 ] ;
NLCR; p r in t ( A[1]) ; p r in t ( A[2])
end;
NLCR; p r in t ( A[1] x A[2])
end
end
We z ie n nu dat de ar r ay s A en B t o t ov erbodige ar r ay s v an de tweede s oor t
z ijn geworden: alleen A[1], A[2], B[ 1 ] en B[ 2] v er s c hijnen i n de tek s t. ( I n feite
was d e eer s te index v an A en B a l v anaf het begin ov erbodig). W e nemen dus
liev er v ie r v ar iabelen: e l , e2, t e r m l e n ter m2. V e r d e r i s het nu onnodig •een apar t
binnenblock t e intr oduc er en
,
begin i n t e g e r n , k ; r e a l F AC , e l , e2, t e r m l , t e r m2 ;
n:= r ead; F AC:= e l : = e2:= 1 ;
for k := 1 2122 1 u n t i l n do
begin F A C :
-t e r m l: = 1 / F AC ; ter m2:= ( - 1) ilk k / F AC ;
el:= e l + t e r m l ; e2:= e2 + t er m2;
F A C
NLCR; p r in t ( e l) ; p r in t (e2)
x
k
;
end;
NLCR; p r in t ( e l x e2)
end
pea- 30
De uitdr uk k ing ( - 1) 4 k z or gt v o t r het alter ner end tek en v an ter m2. D i t k an v eel
effi c ienter d o o r t er m2 s teeds t e vervangen door - t e r m 2 / k , waar door F AC o v e r bodig wor dt.
begin
integer n , k ; r e a l e l , e 2
9
n:= tr eea rd ;me i;: = e2:= t er m: = 1 ;
for k := 1 a L e i 1 u n t il n do
begin t e r m : = - t e r m / k ;
el: = e l + abs ( ter m) ;
e2:= e2 + t e r m ;
NLCR; p r in t ( e l) ; p r in t (e2)
end;
NLCR; p r in t ( e l x e2)
end
pea- 31
17 E l t i s i m s x
.
ma
T ot nu toe i s s teeds gesproken ov er effi c ienc y i n detailpunten: s teeds w er d getoond
hoe een bepaald proc es op effi c ienter e w ijz e k on worden geschreven, V a n hoger
belang is , dat het proc es z e lf effi c ient i s e n i n het volgende z ullen we aanwijz ingen
en v oorbeelden i n die r ic hting geven.
Voorbeeld,. L a t e n we het pr obleem aanpakken v an het naar gr ootte rangs c hik k en v an
de elementen v an een ar r ay . E e r s t z etten we het gr oots te element v an de a r r a y op
de laats te plaats , v erv olgens het op 1 n a groots te op de op 1 n a laats te plaats , enz,We k r ijg e n het gr oots te element ac hteraan door v an v or en a f e lk tweetal elementen
te v er wis s elen a ls het niet i n de ju is t e v olgor de s taat,
m e e d u r e SORT1 ( A , n) ; v alue n ; i n t s z y n',! ar r ay
.b eAt a; i n t e g a
. k ,
j ;lv = n s te2 - 1 u n t il 2 do
for
r e a l
for j: = 2 s tep 1 u n t il k do
z
;
be i f A( j1 <
11 then
m m a lm r ..0 .0 O S O m a t a '
12
.
91
end
1
We k unnen d it pr oc es effi c, ienter mak en door min d e r v er wis s elingen t e doen'
z
i, p . v , e l k v er k eer d geordend
tweetal opeenvolgende elementen t e v er wis s elen
kunnen w e ineens het max7imum v an de r eek s zoeken, e n d it gr oots te element m e t
=
het laats te v er wis s elen. ZAo k r ijgen w e'
procedure SORT2f ( A, n ) ; v alue n ; i n t s
j
.be i r
1
r.
for k := n; sten, - 1 u n t il 2 d o
a
A m
m
ain rj mr Aaax ;y= 1 ; Amax := A( jmax L,
e r n ;
E j: = 2 s t a
.k
A
; for
j.b e1n i f A U j i > Amax then
,
1 n t i l
u
j
becrin j m a x
:k
,
=end; o .
d
j
-A[jmax1:=, =A lkj ] ;; A[k ]:= Am a x
m
A m a
1
a
end
x
1
xend
.
=
,
;
j
A c ienterA k a fn wor
Dat h e t proc
es nog v eel effi
den inger ic ht b lijk t u i t de pr oc edur e
r
m
a
e ( Comm, A C M[ 8 (1965)x 11,
Quicker,sort
1 Alg o r it h m 271),
j
a
e
1
l
n
1
A
d
.
m
=
a
z
x
e
;
n
end
V 42.11.8.11IN G
pea- 32
T er v er gelijk ing de t ijd e n v oor het Xl- ALG O L- s y s teem v oor een a r r a y v an 50
elementen:
SORT1 ( A , 50)
4
5
s ec
SORT2 ( A , 50)
2
6
s ec
1 0
s ec
Quic k ers ort ( A, 50)
Hier b lijk t dat h e t goed is v oor d i t s tandaardprobleem een oplos s ing u i t de l i t e r a tuur t e nemen. D i t geldt ook v oor v eel numer iek e pr oblemen, z oals het v inden v an
een nulpunt, h e t benaderen v an een func tie door een pol3rnoom enz .
Voorbeeld. W e beschouwen de integr atie v an een r eele func tie f( x ) ov er het inter v al
a <_ x—< b. W e v er delen het inter v al i n s tuk jes v an lengte h , bepalen de integr aal
over ie d e r s tuk je m e t een benaderings formule, e n v inden een benadering v an de
totale integr aal door de s om v an deze waarden t e nemen. A l s benaderings formule
v oor de integr aal v an x 0 t o t x 0+h kunnen we nemen:
1. blok jes methode
2, t r apez iumr egel
h
x f( x 0)
h / 2
x (f(x0) + f(x 0 + h))
3, r e g e l v an Simps on h / 6 x (1(x0) + 4 x f( x 0 + h/2) + f(x 0 + h))
We pas s en deze for mules toe o m 1 / x t e integr er en ov er 1 < x < 2 , hetgeen als
r es ultaat In(2) = .693147180560 moet oplev er en. W e bepalen het antwoord i n een
bepaalde pr ec is ie m e t de v er s c hillende methoden, e n k ijk en dan hoe effi c ient z e
z ijn. E e n goede maats taf v oor de effi c ienc y geeft het aantal malen dat de integr andfunc tie berek end moet worden.
We k r ijg e n dan de v olgende tabel:
aantal ev aluaties benodigd b i j
aantal dec imalen
tr apez ium-
regel v an
4
regel
2
Simpson
3
2
37
4
3
3
361
11
5
4
3607
32
7
5
+36000
96
11
6
302
17
7
951
27
8
+3000
49
9
+9500
83
r elatiev e pr ec is ie
1
blok jes methode
10
147
11
247
Uit dez e tabel b l i j k t w el duidelijk dat de r egel v an Simps on v er r eweg het effi c ientste pr oc es geeft, en dat de blok jes methode n ie t pr ak tis c h br uik baar i s .
pca- 33
In h e t v olgende v oor beeld wor dt een v eel eenv oudiger en effi c ienter pr oc es v e r k r e gen door een f or mule iets anders t e s c hr ijv en. G ev raagd w or dt gemiddelde en
s pr eiding t e berek enen v an getallen x ( 1] t / m x [n], d ie op een getalband s taan, v oor afgegaan door de waar de v an n . D i t k an als v olgt:
l a t a 2 E n; r e a l gemiddelde, s pr eiding;
n:= r ead;
122
.
sx:= 0 ;
gir l
for i: = 1 p_t_22
1
.begin
1
x [i]:= r ead; s x := s x + x { i] end;
2
u n t i l
1
gemiddelde:= s x / n ; s := 0 ;
n
1
for
d i : =o 1 L t 9
2
.s preiding:= s c irt ( s / ( n - 1))
.
2
end;
a
. 1
m
u n t i l
i
end
n
;
d
Nu i s ( x [ i] - gemiddelde)
4, 2 =ox t i ] it\ 2 - 2 x g e m i d d e l d e + gemiddelde 4, 2.
r
s
:
Wanneer we dus reeeds tijdens het lez en ook nog de s om v an de x [ i l /1\ 2 opbouwen,
=
a
kunnen we de s pr eiding acshter af z onder s ommatie berekenen en is het n ie t nodig
l
+ onder lijk e x [ i ] tegelijk t e onthouden:
de ( mogelijk z eers v ele) afz
(
x
be i s I 2 , g a r
[
i
sn:= r e a d ; s x := s x 2:
. i ,
]
n ;
,x
for 1:= 1 -21
r e a ;=l 0 ;
g
e
.r
x := r ead; s x := s x + x ; s x 2:= s x 2 + x x x end;
x
, 122E12
m
i
ye
s
x gemiddelde:=
s
d
d x / n ; s preiding:= s qr t ((sx2 - gemiddelde x s x ) / ( n - 1));
.a
,
e
l
p
s
x l
end
d
e
. 1
2
, a
)
ur n t i l
g
e
m
2
n
i d
dr
;
d
e
l da
oy
e
,
s
p x
r
e [
1
i
d
,
i
n
g
; :
0
•
0
0
0
0
0
•
0
•
•
0
0
9
0
0
0
0
pea- 34
18 E f fi c i e n c d o o r betrouwbaarheid
Doordat de pr ogr ammeer taal ALG O L i n v er gelijk ing me t eer der e pr ogr ammeer talen
v oor de pr ogr ammeur een v eel gemak k elijk er hanteerbaar ins tr ument is , i s het l o nend geworden pr ogr amma's t e s c hr ijv en die s lec hts enk ele malen o f z elfs eenmaal
behoeven t e wor den uitgev oerd v oor pr oblemen d ie v r oeger m e t een tafelr ek enmachine zouden z ijn opgelos t. V o o r z ulk e pr ogr amma's i s het a l w einig z inv ol v eel
moeite t e bes teden aan het v er k or ten v an de t ijd , benodigd v oor uitv oer ing v an het
pr ogr amma; h ie r i s v oor al v an belang hoev eel t i j d v er s t r ijk t tus s en de oor s pr onk elijk e f o r mu le r in g v an het pr obleem e n het gereed k omen v an de r es ultaten.
In d e pr ak tijk b lijk t dat deze t i j d b ijn a a lt ijd v eel gr ot er i s dan nodig z ou z ijn ,
doordat e r z ov eel fouten gemaak t worden. Wanneer we door een bepaalde manier
van pr ogr ammer en minder fouten zouden mak en, o f minder t i j d nodig zouden hebben
om een gemaak te fout op t e s poren, k an daar v oor ger us t iets wor den prijs gegev en
van de s nelheid v an het pr ogr amma. I n feite geldt ditz elfde ook v oor pr oduk tiepr ogr amma's , d ie v aak uitgev oerd moeten worden: de r es ultaten z ijn n ie t meer waar d
dan d e mate w aar in w i j o p hun juis theid mogen v ertrouwen, e n helaas i s het nooit
mogelijk v oor 100 pr oc ent de c or r ec theid v an een pr ogr amma t e garanderen ( wat
al b l i j k t u it het f e it dat ook na lange t i j d nog fouten worden ontdek t i n goed getes te
en v aak gebr uik te pr ogr amma's ) .
De belangr ijk s te d r ie s oor ten fouten z ijn w el:
— f o u t e n tegen ALG O L
— v e r g is s in g e n en v er s c hr ijv ingen
— onv oldoende geldigheid v an het proc es
Op de eer s te s oor t fouten z a l h ie r n ie t v er der wor den ingegaan.
De bes te r emedie tegen v ergis s ingen en v er s c hr ijv ingen i s v er moedelijk het v er hogen v an de lees baar heid v an de pr ogr ammatek s t, z odat de fouten eer der opv allen.
Wat de laats te s oor t fouten betr eft: Alle r e e r s t moet getr ac ht wor den steeds een
proces t e k iez en en t e pr ogr ammer en dat z o algemeen mogelijk e geldigheid heeft,
waar bij dus v oor de toepasbaarheid v an het proc es geen r es tr ic ties gelden; als dat
niet lu k t moet d u id e lijk omschreven worden welk e de r es tr ic ties z i j n en moet het
pr ogr amma nagaan o f aan de v oorwaarden v oor de toepas baarheid v oldaan is .
pea- 35
19 L e e sbaarheid
Een goede lay - out k an v eel bijdr agen t o t de ov er z ic htelijk heid en lees baarheid v an
het pr ogr amma. St e r k aanbevolen wor dt de volgende r egel, d ie de s tr uc tuur v an
het pr ogr amma i n de lay - out t o t uitdr uk k ing br engt:
Wanneer een s y mbool l a s t i l en het bijbehorende s y mbool end niet op dez elfde r egel
staan, z org dan dat l i s g a rec ht bov en end k omt t e s taan, en dat het stuk programma
daartussen r ec hts v an de k olom tus s en begin en end k omt ( als of na het s y mbool
begin de k a n t lijn ongeveer 8 plaats en ops c huift, e n v oor het s y mbool end w eer 8
plaatsen teruggaat). S c h r ijf labels (gev olgd door " : " ) i n de k olom tus s en 12221,11 en
end v an het bloc k w aar bij z e behoren ( z ie par agr aaf 4) .
Bijv oor beeld:
12trai
.
r e
a l
a
;
S
T
A
R
T
:
v
o s v
12s
.begin i
ga.
•
•
•
•
•
•
•
•
•ZOEK:
e
n
dend;
;
V
0
0
0
0
0
0
a e o e
s l a s b;
6 0 0 9
o
a
* a
begin
• to a
t o e .
•
•
O O O O O
0
• • • •
end;
S O 0 0 0 c i c t e e t
begin
•
•
1 1 •
0 0 0 1 P
.
b
e
......•••.
g
i
n
end
•
9
•
e
a
0
e
a
•
9
I ?
e
n
EINDE:
d
;
end
H ier bij s taan
o
f
end dus aan het begin v an een r egeL G es c hik te punten o m
een r e g e l a f t e br ek en z ijn dan ook : v oor 1291
2
een
" ; " , do, els e o f then. ( Pr obeer dus n ie t els e r ec ht onder het bijbehorende then
i2, e n d
o f
e
e
n
te plaats en) .
l a b e l ,
e
n
v
e
r
d
e
r
n
a
pca- 36
Een r edelijk e s patier ing tussen de s y mbolen is ook v an gr oot belang voor de lay - out.
Hier v oor kunnen de volgende r egels gebr uik t worden, d ie welis waar enigz ins w i l l e k eur ig z ijn , m a a r waarv an het konsekwent gebr uik een r us tige tek s t garandeert:
Geef tus s en ieder tweetal s y mbolen een s patie, behalv e
-
t u s s e n de afz onder lijk e s y mbolen v an een identifi er o f een getal.
-
t u s s e n een a r r a y o f s witc h identifi er e n het s y mbool " [ " .
t u s s e n een label identifi er e n " : " .
- t u s s e n de unair e oper ator en "-F
T
- l i n k s v an ; , : = )
]
' e n
" - r e c h t s v an ( e n [
1
In
v oorhbeelde k omen
a lle uitz onder ingen v oor :
' h e t evolgende
n
t
o p e r az : =n P d( - A[0],
,
VOORBEELD:
3.14
10
-2);
In ALG O L bes taat een gr ote v r ijh e id v oor de keuz e v an de identifi er s . D o o r h ie r
verstandig gebr uik v an t e mak en kunnen we de k ans o p v er s c hr ijv ingen reduc eren.
In h e t volgende s tuk je pr ogr amma:
122zta I
.
E t a g
for k := 1 E l m 1 u n t il m do F g[k ]:= SUM ( j, 1 , n, I l k , j ] ) / n ;
a
a r
end y
m
.zal een v er wis s eling tussen m en n v eel minder opv allen dan wanneer we ( gebr uik
m
makend v an onz e k ennis v an wat m e n n betekenen) s c hr ijv en:
,
be
1 l a t
.:
9
n 1 2 E for le t t e r : = 1
1
u n t il nletter s do
a
] r
Fgem[letter ]:= SUM (auteur, 1 , nauteurs , F r eq[letter , auteur ]) / nauteurs ;
r; j
zr
:eend
n
l
a
Mees
e
t tal z a l het n ie t m o e ilijk z ijn een geschikte naam t e k iez en. W e l moeten w e
l
bedenken,
dat v oor een ar r ay v aak beter een naam gekozen k an worden d ie k ar ak tE e
rm isstiek i s v oor de afz onder lijk e elementen dan v oor het geheel, dus
ter
,zniet
maar COORDINAAT[l : 3 ] ,
PUNT [l : 3 ]
1
F
maar VELD[1 : 8 , 1 : 8 ] ,
:gniet BORD[1 : 8 , 1 : 81
n
[niet WOORD[1 : lengte] maar LET T ER [ l : lengte],
a
1aangezien b ijv . L E T T E R [ i ] een le t t e r , en niet een woor d v oor s telt.
u
:
tm
e
l
u
;
r
s
O0
2
O,
1
1
,
0
0
0
V
0
0
0
,
1
0
.
0
0
8
0
0
0
.
X
9
0
0
0
.
V
0
1
9
.
0
9
C
.
.
V O
0
0
pea- 37
2_111_
,..
14E
We
. . s mo e t e n p ro b e re n vo o r onze p ro ce sse n e e n f o r m u l e r i n g t e vin d e n d ie z o a lg e me e n
r o sgae Llijk
mo
l g e ld ig i s , zo d a t d e ze lfd e f o r m u l e r i n g i n p rin c ip e o o k g e sch ikt i s in d ie n
e
s o mmig e d e t a ils v a n h e t p ro b le e m ve ra n d e re n . W e mo e t e n d u s g e e n g e b ru ik ma ke n
.
van
o e2v2a llig e e ig e n sch a p p e n v a n o n ze g e g e ve n s, d i e n i e t u i t d e p ro b le e ms t e llin g
y l i at 1
1 _lg, ecn1. W i l l e n w e b ijv o o rb e e ld e e n p ro c e s f o r m u l e r e n v o o r h e t vin d e n v a n d e kle in st e
vo
u it e e n r i j g e t a lle n wa a rv a n w e ve rwa ch t e n d a t e r w e l e e n g e t a l k l e i n e r i s d a n 1 0
6
, zo u d e n w e ku n n e n s c h rijv e n :
dan
min : = 1 0
; e d i t s t u k j e p r o g r a m m a e e n k e e r g e b ru ike n v o o r e e n re e k s g e t a lle n d i e
ma a r a l s6 w
f o r
a lle g r o t ke r z: i j n d a n 1 0
6
=re v e rz a me lin g :
vo, o rd i ead en
g a a It
d
i
tmin
s :=
t M[ 1 ] ; f o r k:= 2 E t a
.
1
i el e e n o f a n d e re re d e n e e n me th o d e mo e t e n g e b ru ike n d ie n i e t
p
r
o
c
Wa n n e e r ew e tpo cueh no mt d
n
d
o
s
in a l l e d e1
n kb a re
mo g e lijkh e d e n v o o rz i e t d a n mo e t e n we :
i
f
m
i u
s
—
V a rdI e n [wa akro n d
] e r d e me t h o d e g e ld ig i s i n e e n c o mme n t a a r v e rme ld e n .
. d e v oIno rwa
<
D
e
— i n h ett p r oi g r a m m a e r o p t e st e n o f a a n d e vo o rwa a rd e n vo ld a a n i s .
n
v
o m
gi
l e ln
V o o rb e e ld
t
h
e
e
n n d
e
,
-f r eoa l n
p
ro
r
c
e
d
m
u
re f ( z ) ; v a lu e z ; r e a l z ;
d
m
u
l
e
r
o n t Het i i s v e r e ins t d a t z > 0 ;
co mme
i
n :i g
if z =
i
f 0 t h e n t t g l a re a l w ; w: = s q r t ( z ) ; f : = s i n ( w ) / w e n d e ls e
s
M
12EM
g
:In d i[[t evo o rb e ekld w o rd t g e b ru ik g e ma a kt v a n st a n d a a rd p ro ce d u re s v a n h e t
l
W 2 ]kd
X 8 -] A
i
gLGOLN
.
LsDey sr <it j e geem
t a lle n X [ 1 : i n ] mo e t m e t e e n zo d a n ig g e t a l v e rme n ig v u ld ig d wo rd e n ,
m
C
dat X [ q ] g e l i j k a a n 1 w o r d t , w a a r b i j ci e e n v a n d e b a n d t e le z e n g e t a l i s .
i
R
E
e
rst
ne , f o u t ie ve o p lo ssin g :
;
t
P
mo s e d u re s c a l m u l t ( A , n , la b d a );
h
R
value la b d a ; in t: E n ; r e a l la b d a ; r e a l E m r
e
I
.. A ;
n
N
m
T
fo r i: = 1 E t a
i
T
. 1
end;
n
E
u n t i l
:
X
s c a lmu lt ( X , m 1 / X [ re a d i)
n
T
end =
d
o
M
(
A
U
tHet b[ e z wa a r h ie rt e g e n i s , d a t in d ie n d o o r e e n le e sf o u t o f d o o r e e n f o u t o p d e
L
D
ain vo ekrb a n d h e t g e le ze n g e t a l n i e t i n h e t b e r e i k 1 t / m m l i g t , d a t d a n h e t
=
]
r
A
l
gre su lt a a t va n d it st u kje p r o g r a m m a o n g e d e fin ie e rd i s , w a t o n d e r m e e r w i l zeggen
i
]
udat e l k e imp le me n t a t ie v a n A L G O L h i e r w e e r v e rs c h ille n d o p k a n re a g e re n .
x
m
In d e vo lg e n d e o pllo ssin a
g g e ld t d i t b e zwa a r n i e t m e e r :
e
b
d
n
a
t
v
t...0 0 1 3 =P
1 2
,
6 1
1 2
i
l
l
a
Z
a
pea- 38
begin i 2 t 2 E s z q;
procedure s c almult ( A, n , labda) ;
value labda; l a t s z a n; r e a l labda; r e a l a r r a y A ;
1
for 1:= 1 Ets2, 1 u n t il n do A[ i] : = A [ i ] X labda
2end;
2
1q:= r ead;
1 1 < ct A ci < m then s c almult ( X, m , 1 X [ c i ] ) els e
if
1
begin N LC R ; PRIN'r T EXT (4c1 niet ju is t *) ; EXI T end
2
end
.
Mer k op idat v oor de par ameter labda v er melding i n de v alue l i s t abs oluut
n
noodzakelijk
is : de waarde v an X[ q ] en dus ook die v an 1 X [ q ] wor dt tijdens
t
de aanroep v an s ealmult g e lijk aan 1 .
e
Er moet nietg alleen ges treefd worden naar "algemene geldigheid" v an het gehele
programma; e
we moeten e r ook v oor z or gen dat het onwaar s c hijnlijk is dat een der
r
deelprocessen n ie t c or r ec t z ou blijv en func tioneren als elder s i n het pr ogr amma een
I
wijz iging wor; dt aangebr ac ht algemene geldigheid dus ook v oor de delen v an het
programma. I n d ie n bijv oor beeld bovenstaande procedure s c almult geschreven z ou z ijn
voor een gev al w aar in de ac tual par ameter v oor labda een s imple v ar iable is , dan
zou toc h opneming i n de v alue l i s t u i t oogpunt v an betrouwbaarheid gewenst z ijn .
Voorbeeld.
In een pr ogr amma w or dt me t een aantal s y mbolen gewer k t, d ie a ls integer s z i j n
voorgesteld me t de volgende c odetabel:
symbool:
code:
1
0
2
1
3
2
9
3
6
4
2
5
13
6
7
7
8
9
8 4 1 1
?
, 10
1 14 10
+
5 1 5 0
De v r aag o f nu een s y mbool een der s y mbolen 10
, +toev
, alligheid
odat f ju is t dei codes
s v an deze s y mbolen een v ijfv oud z ijn , a ls v olgt
de
k
a
n
m
e
t
worden ges teld: c ode : 5 x 5 = c ode.
b
e
h
u
l
p
Het
ju is t enr t e v ragen: c ode = 10 V code = 5 V code = 15 V code = 10.
v i s ec hter
a
Het bes te i s ec hter v ooraan i n het pr ogr amma te s c hr ijv en:
integer n u l, een, twee, d r ie , v ie r , v ijf , z es , z ev en, ac ht, negen, v raagtek en, k omma,
tientje, plus , m in , punt;
nul:= 12; een:= 3 ; twee:= 9 ; dr ie:= 6 ; v ier := 2 ; v ijf : = 13; z es := 73
zeven:= 8 ; ac ht:= 4 ; negen:= 11; vraagteken:= 1 ; k omma:= 14; tientje:= 10;
plus:= 5 ; min:= 15; punt:= 0 ;
en dan t e v r agen: c o d e = t ient je V code = plus V code = m i n V code = punt.
Blijk t nu dat w e het pr ogr amma met een andere c odetabel w ille n gebruik en, dan
hoeft ma a r op een plaats i n het pr ogr amma iets v er ander d t e wor den.
pea- 39
De v oor de algemene geldigheid wens elijk e r elatiev e z elfs tandigheid v an een deelproces k an men v aak bereik en door het i n de v or m v an een bloc k o f z elfs v an een
procedure t e s c hr ilv en. Daar door k an men er v oor z or gen dat de hulpgrootheden v an
het deelpr oc es , die voor de r es t v an het pr ogr amma niet t e r z ak e doen, gedec lareerd
worden op de plaats w aar z e nodig z ijn . H e t is dan gemak k elijk er na t e gaan o f een
grootheid w e l gedec lar eer d is , en de kans dat men ten onrec hte een identifi er i n
twee betekenissen gebr uik t, i s aanz ienlijk v er minder d.
Er z ijn v e le r le i r edenen die het wens elijk kunnen doen z ijn een bepaald proc es i n
de v or m v an een pr oc edur e t e s c hr ijv en, waaronder het volgende d r ie t a l:
1. H e t proces k o m t meer malen v oor : w e gebruik en de proc edure b i j w ijz e v an
afk orting.
2. H e t proc es i s een conceptuele eenheid, d ie als bouwsteen z ou kunnen dienen
voor andere progrrammays.
Wanneer w e r eeds ov er een acceptabele procedure beschikken die het gevraagde
proces v er r ic ht , gebruik en we uiter aar d die proc edure: n ie t alleen bes paart ons
dal de moeite v an het pr ogr ammer en, maar ook het r is ic o dat w e daar bij een
fout mak en. D i t geldt des t e meer v oor bibliotheek -proc edures , waarv an w e
niet alleen r edelijk er w ijs mogen v er onder s tellen dat z e effi c ient z i j n , maar
ook dat z e gr ondig getes t z ijn .
30 H e t proc es le v e r t een gr ootheid a f waarmee w e v er der w ille n rek enen. I n d it
geval gebr uik en we een func tion proc edure z odat de func tion des ignator als
pr imar y i n een ar ithmetic ex pres s ion gebr uik t k an worden.
Natuur lijk k an e r me e r dan een r eden t egelijk gelden: v oor de r e a l p m c
.SUM ( i, a , b
a l tfim)
In gev al w e de pr oc edur e lout er gebruik en als afk or ting, i s het toc h vaak z inv ol een
.b i j v o
algemenere s c hr ijfw ijz e t e bez igen door gebr uik t e mak en v an de fac iliteiten die een
o r b e e
procedure
ons n u eenmaal biedt. M e t name moeten we z ov eel mo g e lijk het gebr uik
l d
a nietl loc ale namen v er mijden door hulpgrootheden binnen de proc edure t e dec lavan
l
e
reren en andere grootheden als par ameter mee t e geven. ( H e t gebr uik en v an n ie t d
r
locale
i
ehulpgrootheden geeft ju is t b i j een proc edure, door de implic ietheid v an het
b
o b i j de aanroep, gemak k elijk aanleiding t o t v ergis s ingen)
gebruik
vAl d e
i t geldt des t e s ter k er v oor een bouwsteen-procedure. A ile e n als het o m een
n
s
t
speciale r eden gewens t is gebr uik en we een niet- loc ale naam, en daar v an mak en we
a
a
dan
i n een c ommentaar b i j de proc edure heading.
n melding
d
e
r
Het i s goed hier er v oor te waarschuwen dat v ele numer iek e processen, ook beproefde
e
standaardprocessen,
s lec hts geldig z ijn onder bepaalde v oorwaarden d ie v aak mo e id
lijk
e t e for muler en z ijn en waaraan doorgaans w e l, ma a r s oms onverwachts n ie t i s
n
voldaan.
e
n
.
pea- 40
Zo i s het i n pr inc ipe n ie t mogelijk een waterdic hte
r eal pL2cedure INT EG RAAL ( x , a , b , f x , eps ilon) t e s c hr ijv en:
om de integr aal t e bepalen z al een der gelijk e pr oc edur e v oor een gegeven func tie
de par ameter f x ev alueren v oor een eindig aantal waarden v an x op het inter v al
a < x < b . D e dan v ir or de integr aal afgelev erde waar de is uiter aar d g e lijk aan de
waarde d ie wor dt afgelev er d v oor ieder e func tie d ie i n d ie basispunten x dez elfde
functiewaarden i x heeft. H e t is ec hter mo g e lijk een func tie t e c ons trueren waarvan
de gr afi ek door a l d ie punten ( x , fx ) gaat, maar waarv an de integr aal ov er het
inter v al a < x < b s ter k v er s c hilt v an d ie v an de oor s pr onk elijk e func tie. Aangez ien
nu de pr oc edur e INT EG RAAL v oor beide func ties dez elfde waar de lev er t , z al d ie
voor tenmins te een v an de twee func ties onjuis t z ijn .
Voorbeeld v oor de proc edure Q AD ( AP 251):
B ij de aanroep Q AD ( x , 0 , 1
9
x . 05 0, , 1x =0 . 7 5 e n x 1 ; de waarde v an de func tion des ignator w or dt dan 00
- 1 2 )
Hetzelfde r es ultaat z al ook worden gelev er d v oor ieder e func tie d ie i n d ie v i j f
w o r d t
basispunten
g e lijk aan 0 i s , z oals s in ( 4 x 3014159265359 x x ) 4 2„
f
x
gQADe ( x ,e 0 , v1 , sain (l 4 xu 3.14159265359 x x ) 4 2, 1 0
e- 1 2e) g
r iend eplaats
f t v an
i ndedwaarde
e r d0.50.
a a d
waarde
0
v( n a o g e o n o e g )
rd
e
x het begin v an dez e par agr aaf is e r a l o p gewezen dat we i n een pr ogr amma tes ts
In
0
horen i n t e bouwen om z ov eel mogelijk na te gaan o f aan a lle nodige e n bekende
,
voorwaarden voldaan is . O m het belang hier v an t e onders trepen v olgt een ops omming
x
van
= v oordelen v an het gr ondig z elf- tes ten v an een pr ogr amma:
.- B e s p a r i n g v an mac hine- tijd doordat de ultv oer ing van een pr ogr amma waar in een
2
5
fout i s ontdek
t w or dt beeindigd0
,
- H e t opsporen v an fouten w or dt gemak k elijk er door dat de fout z o dic ht mogelijk
b ij d e br on w or dt opgespoord en doordat de f out wor dt ges pec ifi c eerd.
-
D e r es ultaten v an een pr ogr amma me t tes ts z i j n betrouwbaarder dan die v an
hetzelfde pr ogr amma z onder tes ts .
Het i s geblek en dat onderstaande proc edure goed v oldoet v oor
, h e t a io n l a s s e n
v
a
n
t
e
s=
t
s
:
Boolean fout; sILing_ diagnose; r e a l indic atie; i
2
) fout then
if
cL
bfgin
N L C R ; PRINT T EXT ( tr out: 4) ; PRINT T EXT (diagnose);
tc
_l
SPACE ( 1) ; PRINT ( indic atie) ; EXI T
u
r
end
e_
e
r
r
o
r
(
f
pea- 41
Het v oor beeld i n het begin v an deze par agr aaf wor dt, b i j gebr uik v an de proc edure:
r eal pr oc edur e I ( z ) ; v alue z ;
begin r e a l w ;
er r or ( z < 0, • t
a r gs cuirm
w:=
t (ez )n; tf : = s in (w) / w
v a n
end
I
i
s
n
i
e
t k (RR 3. 3. 6)
21 R e a l- a r it m e t ie
p o s
i
t i e f
Door het R R worden
:
helaas geen r egels gegeven v oor het rek enen m e t r eal- gr oot heden, z odat v oor, een r eal- gr ootheid x niet k an wor den afgeleid
1
> x.
z
We z ullen i n het v olgende toc h gebr uik moeten mak en v an een aantal r egels d ie
)
voor v ele implementaties
, waaronder het X8- ALG O L- s y s teem, w el gelden. ( Vo o r
;
het Xl- ALG O L- s y s teem gelden niet a lle gegeven r egels )
Als de implementatie w aar in onze pr ogr amma's wor den uitgev oer d v oor de ber ek eningen me t r eal- gr ootheden een r elatiev e nauwk eurigheid v an b ijv . 1 2 dec imalen
heeft, dan z ullen de r es ultaten doorgaans ook z onder s pec iale maatr egelen wel een
nauwkeurigheid v an 5 dec imalen hebben. W e kunnen bijv oor beeld a l honderd biljoen
getallen me t elk aar v ermenigv uldigen ( v oor de X8 nog a lt ijd een w er k v an eeuwen)
voor w e hoeven t e verwachten dat het door de gez amenlijk e afrondings fouten z ov er
k omt. T o c h is een s ummier e analy s e v an de afrondings fouten bes lis t n ie t ov erbodig.
Voorbeeld: We pr ober en de func tie j1(z ) s i n ( z ) / 7 4 2 - c os (z )/z t e berekenen m e t
behulp v an de r e a l pr oc edur e j1 ( z ) ; v alue z ; r e a l z ; j1:= ( s in (z ) / z - c os (z )) / z .
We hoev en dan n ie t t e verwachten dat ev aluatie v an de func tion des ignator " i l ( 1 0
-een
6 waarde oplev er t waarv an z elfs m a a r de eer s te dec imaal c or r ec t is : tengev olge
)
van afrondings fouten i s de r elatiev e nauwk eurigheid t o t 0 dec imalen teruggelopen.
u
De afrondings fouten b i j het rek enen m e t r eal- gr ootheden ontstaan door dat n ie t a lle
reele waarden a ls r e a l v oor s telbaar z ijn ( d . w . z . d o o r een r eal- gr ootheid kunnen
worden aangenomen)„
Het r es ultaat v an een r eal- ar itmetis c he bewerk ing, bijv oor beeld een r e a l
-v uldiging,
v e r m eknani gals
- v olgt worden v erk regen:
1. D e operanden worden volgens de r egels v an de r eal- ar it met iek geev alueerd,
zodat hier v oor een r eele waarde v er k r egen i s d ie als r e a l v oor s telbaar
2. H e t exacte mathematis c he r es ultaat v an de bewerk ing wor dt gev or md.
3. D e z e waarde w or dt afgerond t ot een a ls r e a l v oor s telbar e waar de.
Wanneer w e het r es ultaat v an de afr onding v an x v oor s tellen als R(x ), dan kunnen
we de volgende r egels ops tellen waaraan de func tie R onder m e e r moet v oldoen:
pea- 42
1. R ( Et( x ) ) = Ft(x), d . w . z • r eeds a ls r e a l v oor s telbar e waarden wor den niet me e r
afgerond.
2. A l s
>
y dan li( x ) > 11(y).
3. V o o r integerwaarden i binnen de Integer c apac itelt ( d. w . z . waar den die door een
i_n_t_sa-grootheid kunnen worden aangenomen): It(1) =
(In v r i j v eel s y s temen wor dt het r eal- getal 0 apar t behandeld, z odat bijv oor beeld
zou kunnen gelden: ( 3.14 - 3.14) x 2 4 O. B i j d e X8 k omt h ie r w e l degelijk 0 u it )
Uit de gegeven r elaties i s a l t e leiden: 3 . 1 4 - 3 . 1 4 = 0 A 3.14 / 3.14 = 1 .
Niet a f t e leiden v a lt 1 / 3 x 3 = 1 ; d i t z al dan ook doorgaans n ie t opgaan.
Voor het X8- ALG O L- s y s teem geldt v er der nog:
- Als 10
-604
en I It(x) - x I < I R(y) - 1 ( a f r o n d in g naar dic hts tbijz ijnde r eal- waar de) .
<
- R ( x ) = 0 indien en s lec hts indien x O .
l x 1
-< V o o r integerwaarden i waar v oor 11 I < 1 099 511 627 776 = 2 it% 40, geldt R( i) =
1
- V0 o o r het r es ultaat v an de standaardfuncties kan n ie t wor den gegarandeerd dat z e
6 2voor
8 de v o ile 12 dec imalen ju is t z ijn .
,
De oper atie a 4 b ( b r eal) w or dt berek end als ex p ( in (a) x b) e n z al dus ook
d
a
niet a lt ijd i n 12 dec imalen nauwk eurig z ijn.
n
Als a en b ec hter a ls r eal- v oor s telbar e waarden z ijn ( d. w . z . 11(a) = a en
i
Et(b) = b) , en i n mathematis c he z in geldt f(a) - b , w aar bij f een der s tandaar ds
functies
i s , dan geldt ook v oor het X8- ALG O L- s y s teem f (a) = b .
1
1
1
Hier uit v alt a f t e leiden: ex p (0) = 1 A s gr t (4) 2 A 3.14 4 ( 3.14 - 3.14) = 1 .
(
x
Niet alleidbaar is : i n (exp (1)) = 1 V s c irt (2) x s c ir t (2) = 2 ,
)
x
Een
gr oot v er lies i n r elatiev e nauwk eurigheid onts taat a lt ijd door het v an elk aar
iaftrekken v an ongev eer ev en gr ote getallen:
<
exacte waar de
v
o
o
r
de X8 r e l a t i e v e fout
1
s0 i n ( 1 0
-cos
6 (
)1/01 0
v ers c hil . 0 0 0 0 0 0 000 000 333 333 33 . 0 0 0 0 0 0 000 000 909 494 70 1 . 7
-2
-6
6)
.9
xIn plaats v an j 1 (
9
9
I9
1 0 de X8 . 000 000 909 494 70 berek end. V o o r nog k leiner e waarden v an het ar gudoor
9
x- 6 )
9
=
.
9
ment
z k an niet alleen de r elatiev e, m a a r ook de abs olute fout z eer gr oot worden:
I9
0 0 0
9
,0
voor
9
0j1 ( 0
9
1
9 0d i t 3gev al3k unnen we v oor k leine waarden v an z de onnauwkeurigheid opheffen door
3
In
-9
9
32 0 ) 3
de
b9
9 ifunc
j v tie t e benaderen door een poly noom. W e z ullen onderzoeken i n welk gebied
3
we
o9
9
r eb benadering nodig hebben. L a t e n we er v an uitgaan dat v oor ons pr obleem
3 odez
9
e3
9 dec
e limalen
d
6
voldoende nauwk eurig is . W e bepalen nu de onnauwkeurigheid v an de
9
koors
9
r
w pronk
o elijk e methode als func tie v an z :
i9
r9 j d
t
g8
5
e
m
n3
0
e
3
w
0
t
3
pea- 43
De fout i n s in (z) i s r e la t ie f ongeveer 1 0
-door
1 2 . 7 zHa l e- aangenomen
t
dat z ex ac t wor dt v oor ges teld- dez elfde r elatiev e fout
m a t h e m a t i s c h e
van - 1 2 hebben. D e afr onding naar een r e a l getal le v e r t nog eens een fout v an
r
e
s
u
l
t
a
a
t
1
0
n
a
-lute
d1 foute 2
l
i
n
g
2
,
1absoluut
0
n
10-12• D e aftr ek k ing s in (z) / z c o s (z ) geeft dan ten hoogste
t- 1 2
-een
1 2abs olute fout v an 3
xe
x1 0
bare
fout 1 0
1z1
--a1122 . x ( D e
=is de abs olute fout tens lotte 3
m s f i rn o n d i n
(2a
10 9
fout
ez ) / z
(ng
10 2 / z .
O m d a t
1-vVoor
a e waarden
n
welk
v an z i s d i t k lein genoeg?
-n
j- 1 121 /2 (
z
)
d
i
t
2
c.9
on s g
e
v
e
e
4o
r1 2 z. e ) s
u
l
(D
1
rWe w ille n de polynoombenadering dus gebruik en i n het gebied - 3
t ,a
a
t
)e0
z0
/
3
10
g
De
T
ay
lor
e
r
eek
s v oor j1( z ) is : j1( z ) = z / 3 - 4 3 / 3 0 + 4 5 / 8 4 0 - .o
o
f---i 3 n< s z
,
e
f na det eer s te< t e r m a3f , dan mak en we een abs olute fout v an ongeveer
1
g
Breken
e
we
o
1
s
1ie 0
vu2
e0 , e n dus een
2
d
4
3
/
3
e
r elatiev e v an 4 2 / 1 0 . A l s I z I < 3
-e 3
e
r
t./dus
r 0 voldoende
1
e
l nauwk
a eurig.
t H e t v ols taat h ie r dus de eer s te t e r m t e nemen.
n
1
iA
-4 3 ie s
v z ie
<
va besete grens
r waarde
w
v oor de oms c hak eling v an de ene op de ander e for mule
0
nDe
2
a1w e door
r
n
-ca
vinden
d le fouten aan elk aar g e lijk te s tellen: 9
<
o
o
s
2
1
og
Dit0 lev er t ons w eer nagenoeg + 3
xs-e
4 2 / 1 0 0
0
11
0 2 / 4 2r eal r o c= e d u r e j 1
( z ) ; v alue z ; r e a l z ;
z
7
(-- 3 .
D e
Az= i f abs (z ) < 3
4
zi6
u i t e i n d e l i j k e
e
10
2
)Nog
:p
rme eor voorbeelden:
c
e
d
u
r
t h e n
/in
I- s c i r t -( 3
e
a x a + a) - a : een wor tel v an ) 42 + 2x ax x - a = O. V o o r gr ote waarden
z
3
sszw
o
r
d
van a/ is mathematis c h scirt (a x a + a) - a ongeveer 0. 50, ma a r v oor a > 1 . 6
)riIt
1 0b i 3j de X 8 a x a i - a .
N
is
en
>
d
a
2
l ersblijf t .
a
-1
l(3
veel ev an ov
n
z
e
d
- a Xa
z o d a t
a1
Als w( e s tellen:
)t0
iz = 1 / x k r ijgen we de v er gelijk ing 742 - 2x z - 1 / a = 0 ,
e
w
e s
ni
weor telt z s c i r t (1 / a + 1) + 1
li/nmet een
9 d (ogr
u ote
s ewaarden
z xv
iez3
h
Voor
vean a is dez e for mule numer iek heel w at beter .
v
1
)
/
n
f*- Dne ex pr es s ie 2 / s in (2 X x ) - 1 / s in (x) i s v oor waarden v an x dic ht b i j 0
g
t( s/ c ei r t
oo
o
(
ze 1 onbrulk
d
vnumeriek
r
w baar.
a B e t e r i s s in (x) / cos (x ) / (1 + c os (x )).
n
o
t
e
n s inh (ax ) ; v alue x ; r e a l x ; ar s inh:= i n (s c irt x x + 1) + x )
-gr Dc/e r echa l EmesS_ture
ar
k
+
o
o
d
e
is v oor gr ote negatiev e waarden v an x in abs olute z in z eer onnauwkeurig, e n
s
)t
rvl
a1
voor
waarden
v an x dic ht b i j 0 i n r elatiev e z in .
e
+
(
ze
d
a
1 eer
z s te )punt
los s en
. we eenvoudig op door gebr uik t e mak en v an de r e la t ie
aHet
r
ei
n
)
)
r
ar s inh (-x ) - a r s i n h (x). D e tweede moeilijk heid k omt doordat b i j d e berek ening
e
/
1
van s c irt ( x x x + 1) + x de r elatiev e pr ec is ie grotendeels v er lor en gaat.
z
z
0
-o
1n
2g
,e
dv
pea- 44
Wel kunnen we berekenen h s c i r t ( x x x +
+
x - 1 i n de v oile r elatiev e
pr ec is ie, n a me lijk met h:= x x x / ( s gr t ( x x x + 1) +1) + x . H o e berekenen
we n u i n (h + 1) i n v oile r elatiev e pr ec is ie? Zogauw we immer s h + 1 berek enen
z ijn we w eer alles k w ijt .
Indien h
1 dic ht b i j r lig t , dan i s i n ( r ) een benadering v oor I n ( h + 1) ,
maar v oor h < 3 . 9 i s de waarde gevonden door lin e a ir e in t e r - o f ex tr apolatie
in i n ( x + 1) tus s en x
0
e n x = r - 1, n a me lijk y = h / ( r - 1) x i n ( r ) , een
betere benadering. ( We nemen aan dat h > 0) . V o o r r nemen we dan It( h + 1) ,
het r eal- get al waar op h + 1 w or dt afgerond. V o o r h > 3 . 9 w or dt de fout b i j
toepassing v an de c or r ec tie z o a l dan toc h nauwelijk s gr ot er dan de fout d ie
toch a l aanwez ig is . W e nemen dus v oor i n ( h + 1) s teeds h / ( r - 1) x i n ( r ) ,
behalve nat uur lijk als r
1 .
-r eal pr oc edur e ar s inh (x ); v alue x ; r e a l x ;
122F
2
h:- x x x / ( s qr t ( x x x + 1) + 1) + abs ( x ) ; r : = h + 1 ;
Ln
ars inh:= s ign (x ) x ( i f r 1 then h els e h / ( r - 1) x i n ( r ) )
r
end
e
a l
h
,
22 I t e r a tri e v e E 2 2 , e s ,
a
;
ms
Een s oor t proc es d a t v aak v oork omt is h e t oplossen v an een v er gelijk ing door
middel v an it e r a t ie , d . wo z. d o o r opeenvolgende v erbeteringen v an een s c hatting v an
de oplos s ing. Uitgaande v an een begins c hatting x [0] berekenen we x [1]:= f(x[01),
dan x [2]:= f(x [1]) enz . E e n iter aties tap bes taat dan u it x[11:= f( x [i- 1]) .
Wanneer nu de waar den x [ i] naar de l i m i e t x c onv ergeren, en f is c ontinu i n x ,
dan is x een w or t el v an de v er gelijk ing x = f( x ) .
Doorgaans w or dt b i j een iter aties tap de s c hatting v an een aantal grootheden v er beterd, z oals in :
12101 x [ 1 ] : = f ( x [ i
9 y [ i y 1 1 , [
z [i]:= h (x [i
z
E ii
end
]
In W I gev
1 al z 1
ijn de
; ten
: ) lim ie
x f ( x , =y , z ) A y
Het bekendste itergatiepr oc es
(
sqrt (a), m e t f(x ) x ( x + a /
[
i
1
]
,
y
[
- 1]
- 1 ] , yEt - 11, z [ i x , y en z de oplos s ing v an de v er gelijk ing:
g
(x, y , z) A z = h (x, y , z).
i s w e l de methode v an Newton v oor het berekenen v an
x ) / 2.
pea- 45
Kiezen we bijv oor beeld x [ 0 1 = 1
9
=
4 ,
x[1]-a
d
a
n
=
dit s nel c onv ergeert. Z ouden we door een v er gis s ing a = - 4 genomen hebben, dan
k2 . r i j g e n
kwr ijgen we:
e x [ 1 ] = - 1.50000, x [ 2 1 = .58333, x[31 = - 3.13690, x [4]= - .93088 enz .
5 0
a
c geval
h t convergeert
e r e ehetn proc es n ie t . Zouden we n a i n het pr ogr amma het proc es
In
0 0dit
v0 , o l g e n s :
pas beeindigen, z odr a twee opeenvolgende waarden van x minder dan 1 0
-xv5ersvc hillen,
a n dan
e lz ou
k door
a a dez
r e v er gis s ing het pr ogr amma n ie t beeindigd worden.
[
2(Het v er s c hil i s telk ens mins tens 2) . N u is i n d it v oorbeeld de berek ening v an de
1
functie
f weinig tijdr ov end, ma a r i n de pr ak t ijk k omen hier v oor v aak func ties v oor
=
waarvan de berek ening per k eer v eel t i j d k os t. I n z o n gev al z ou pas n a lange t i j d
2
bemerk t worden dat het pr ogr amma niet goed wer k t. W e moeten e r dus v oor z or gen
.
dat
0 i n het pr ogr amma de c onv ergentie gec ontroleerd wor dt. W e moeten e r ook op
5
letten dat we geen gr oter e pr ec is ie eis en dan gez ien de pr ec is ie v an de gegevens
0zinvol i s .
0
We
0 kunnen nu d e v olgende d r ie tests ops tellen d ie i n een iter atiepr oc es moeten w o r ,
den
opgenomen:
x1. B e e i n d i g i n g v an het proc es z odr a het aantal iter aties tappen een z ek er max imum,
[
bijv . 100, z ou ov er s c hr ijden. D i t I s een s oor t noodrem d ie a f en toe nuttige
3
diensten k an bewijz en.
1
=2. T e s t op de c onv ergentie.
2
De c onv ergentie v an het iter atiepr oc es kunnen we v aak beschouwen aan de hand
.
van de v olgende s telling:
0
Als op een z ek er inter v al a < x < b de func tie f(x ) v oldoet aan:
0
0
1. a < f(x ) < b
6
2. I f ( x 1 ) - f(x2)1 < lx 1 x 2 1 ( x l e n x 2 op het inter v al [ a , I A x l + x 2)
1
dan c onv ergeert de reek s x [ i ] f ( x [ i - 11) ( met begPinschatting x [0] op het in t e r ,
x
val) naar een l i m i e t x (op het inter v al) d ie v oldoet aan: f(x ) = x .
[
De tweede v oorwaarde i s es s entieel (z oals het n ie t convergerende geval f(x) = - x
4
aantoont). I n het pr ogr amma tes ten we daar om o f abs ( x [ i + 11 - x[11) <
]
=
ohs (x[11 - x [ i - 11), anders beeindigen we het proc es . D ez e v oorwaarde l i g t
2
numeriek e r g m o e ilijk ; n ie t er aan v oldaan z ijn hoeft n ie t op een fout t e wijz en.
.
Neem bijv oor beeld een ar itmetiek waar in die getallen repres enteerbaar z ijn d ie
0
in dec imale v oor s telling ac hter de punt 5 c ijf e r s hebben en v er der nullen, en
0
0
met de afr onding naar de dic hts tbijz ijnde mogelijk e waarde. Bes c houw nu
0
f(x) = . 6 x ( 1 - x ) . H e t iter atiepr oc es moet dan c onv ergeren naar . 375.
0
Mathematisch geldt: I f ( x i ) - f(x2)1 - . 6 x 1x 1 - x21 < 1x1 - x 21.
.
H Neem n u x i = .37499, x 2 = .37501. Ev aluat ie v an f ( x l) en f(x 2) geeft:
e
t
i
LIOTHEEK MA THE MMJ S CH 6 c i
,
AMSTERDAM
s
61
d
u
i
pca- 46
f( x i) = R ( . 6 x R(1 - .37499)) -4 R ( .6 x R(.62501)) = R ( .6 x 062501) = R(.375006) . 3 7 5 0 1 = x 2,
f(x2) = R (
0
11(.374994) = .37499 = x i ,
6 x
Komen
R
( 1 we n u me t het iter atiepr oc es i n een v an de punten x l o f x 2 ter ec ht, dan
-convergeert het proc es n ie t l a n g e r . H e t i s dus niet voldoende langs mathema0 3 weg
7
tische
t e bewijz en dat I f ( x i) f ( x 2 ) 1 < 1x 1 - x 21; het b l i j f t nodig hier op
5 0 1
in het pr ogr amma z elf t e tes ten. I s aan de ongelijk heid n ie t meer v oldaan
) )
=dan beeindigen we het pr oc es ; is het v er s c hil n ie t a l t e gr oot dan hebben we
R
de oplos s ing, anders i s e r iet s fout.
(Voor het gev al w e d r ie v er gelijk ingen t egelijk oplossen moet de uitdr uk k ing
.
6lx1 - x21 v er v angen worden door een func tie d ( ( x l, y l , z 1) , ( x 2, y 2, z 2) ) ,
bijv
x . s c ir t ( ( x l x 2 ) A 2 + ( y l - y 2) 4 2 + (z 1 - z 2) 2 )
9
f
1maxo1(1x1
- x 21, 1 y l - y 21, 1z1 - z 21), a ls m a a r geldt:
(
.
d ( ( x i, y l , z 1) , ( x 2, y 2, z 2) ) = 0 indien en s lec hts indien
6
2
x9 l = x 2 A y l ,-- y 2 A z i = z 2.
4
92. d) ( ( x l, y l , z 1) , ( x 2, y 2, y 2) ) <
)
d ( ( x l, y l , z 1) , ( x 3, y 3, z 3) ) + d ( (x2, y 2, z 2) , ( x 3, y 3, z 3) ) v oor a lle
=
mogelijk e waarden v an x l , y l enzo ( een der gelijk e func tie d heet metr iek )
1
1Vaak k an de c onv ergentie v an het proc es op een ander e w ijz e bewezen wor den,
(bijv oor beeld als e r een monotone func tie F bes taat zodat de waarden F( x [I])
.
met toenemende i k leiner worden, m a a r toc h nooit negatief kunnen wor den,
6
xter w ijl de x [ i ] i n een z ek er ges loten gebied z ullen liggen. I n d i t gev al tes ten we
.of d e F ( x [ ip inder daad dalen en de x [ i ] inderdaad i n dat gebied liggen.
6Als de bedoeling v an het iter atiepr oc es ju is t is F ( x ) z o k lein mogelijk te k r ijgen
2
4z ijn de v oorwaarden v an monotonie en dat ges loten gebied n ie t nodig; we z ijn
9dan tev reden a ls de waarden F ( x [i]) naar een min imu m c onv ergeren,
3. G 9
e w e n s t e pr ec is ie.
)
Stel dat het door meetonnauwkeurigheden i n gegevens n ie t mogelijk is de ex ac te
waarde v an f( x ) t e bepalen, maar dat h ie r b ij een z ek ere fout eps gemaak t wor dt.
I . p . v . f( x ) w or dt dus f( x ) + eps ber ek end
.proces
V e reen
o nv an
d eder waarden
s t e l x [ i] ju is t de waarde x is waar v oor x = f( x ) .
n
u
d
a
t
We k r ijgen dan x [ i + 11 = f( x [i]) + eps = f(x ) + eps x + eps ; me t andere woor b
i
j
den:
een efout i n xt t e r gr ootte v an eps wor dt tens lotte w el ongev eer gemaak t.
h
i sttoppen
e dus
r a lsa de tfout i l x -e x [ i l-l < eps , w aar bij x de l i m i e t v oor s telt
We
.Hoe bepalen w e d ie fout i n x [i]? We nemen aan dat de fout b i j ieder e s tap
een fac tor r k leiner w or dt, W e hebben dan: x [ i - 2 ] = x + d ; x [ i - i i =
x + r x d ; x [ i]
x
+ r 42 X d . H ie r u it kunnen we x schatten, en dus ook de
: IL.:
AMSTERDAM
pea- 47
fout I x - x [1]1. O mdat het h ie r ma a r o m een s c hatting gaat i s het v r i j r is k ant
de eer s te de bes te k eer dat I x - x L ill < eps het proc es t e beeindigen; lie v e r
wachten we nog ev en o m t e z ien o f dat z o b lijf t . G e ld t d it dan bijv oor beeld d r ie
maal ac htereen dan beeindigen we als nog het proc es .
Als v oor beeld wor dt h ie r een proc edure v oor k l e i n s t e - k
-Bij de meetpunten x [1] t / m x [n] z ijn de waarden y [1] t / m y [ n] gemeten, m e t v ermoeWadratenaanpassing
delijk e meetfout eps[11 t / m eps [n]. W e w ille n nu de par ameter s p[11 t / m pEml, die g e g e g e v e n .
br uik t worden in de berekening van een theoretische func tie f(x, p) m e t par tic le afgeleiden naar p[k i: par tafg ( x p , k ) , z o bepalen dat de uitdr uk k ing
U = s q r t (SUM ( I , 1
9
n ,
( v( an
f de proc edure z ou hier v oor kunnen Widen:
De aanroep
( x [ 1 ] ,
Least Squares (1, n , x[119 y Ell, eps [il, k , m , p[k i, x , I ( x , p) , par tafg ( x , p , k )).
p
)
De
s x[11, y[11 en eps[1] hangen v ia Jensen's dev ic e a f v an i (1 t / m n )
- inputpar ameter
y
,p[k]
[
1hangt
. v1
)
ia Jensen's
dev ic e a f v an k (1 t / m m ) e n heeft de volgende func ties :
/1. in p u t p a r a m e t e r d ie b i j de aanroep gev uld moet z ijn me t een begins ehatting.
e
p
s
2,
a r a me t e r d ie na de aanroep de bes te gevonden benadering bev at.
[ o u ti p u t pD
3.
2 p a r a m e t e r w aar f( x , p) e n par tafg ( x , p , k ) v an afhangen.
)De par ameter f ( x , p) h a n g t v ia Jensen's dev ic e a f v an x en p[11 t / m p[ m] .
/
De parameter partafg (x, p, k) hangt v ia Jensen's dev ic e a f v an x , k en p[1] t / m p[m].
n
De
) par ameter s overeenkomend met 1, k , x en p[k ] moeten v an de v o r m <v ar iable>
zmijn. H ei t i s dus n ie t mogelijk i . p . v . p [ k ] te s c hr ijv en: i f k 1 then A els e r ,
n
i
m
a
Het
iter
atiepr
oc es w or dt h ie r beeindigd z odr a aan een der volgende v oorwaarden
a
l
voldaan
is :
i
s1. U wor dt b i j een iter aties tap niet k leiner .
,
2. U < 1 . ( I n dat gev al z ijn de benaderingsfouten z o gr oot als de meetfouten)
3. D r i e maal ac htereen is een s c hatting v an de l i m i e t v an U hoogstens 10 pr oc ent
lager dan de r eeds behaalde waar de.
4. E r z ijn r eeds 100 iter aties tappen v er r ic ht.
Least Squares i s een Boolean proc edure. Wo r d t de proc edure beeindigd door dat U
in niet onaanz ienlijk e mate s t ijg t , dan is het r es ultaat fals e, ander s t r ue.
Een v oor beeld v an een aanroep: aanpassing v an A X (ex p ( r x x ) - 1) aan 25 gemeten waar den y .
p[1]:= 1 ; p[2]:= . 7 ; c omment s c hattingen v an A en r ;
Least Squares (1, 25, x [ i 1, y[11, eps [i], ko 2 , P[k l, Nit
P[1] ( e x p (13[2] x
-
1) ,
i f k = 1 then ex p (pf21 x >
Tot s lo t #de proc edure:
7,) 1
e l s e
p
[
1
]
x
x
pea- 48
Boolean E r
.
comment
gebr uik t de niet- loc ale proc edures SYMDET2 e n SYMSOL2 ( A1
2
9
3
2 2n ,8 npar
/ 2 2; integer
9 ) ;
value
i , n , k , npar ; r e a l x i, y i , eps i, pk , x , I x
.
, d f x d p k ;
12
.
r eal s m a ll, minwfac , ma x r e le r r , s s q, s s q l, d l , d2, des fr ac ;
2c I u r e r eal a r r a y X , Y , W [ l : n1, F , par o, d e lt a [ l : npar ],
2L e a
S i ( n p a r + 1) x npar : 21;
•s t
6S q
2u a r t in r ie s
-maxcount:= 100; c o m m e n t s m a ll en minwfae z i j n z o gekozen dat
l(
3 ;
minwfac
it, 2 >> r elatiev e pr ec is ie en
i
s
k,
(s mall X minwfac ) it% 4 >> k leins te pos itiev e r-eal- get al'
m
Ln
a l
e,
l :
begin r e a l h , max , m in ;
sx
=
max:= s m a ll;
.i
1
c,
0
for 1:= 1 2122 1 u n t il n do
oy
in X [ 1 1 ] : = x i ; Y[ i] : =
ui
1
W[1]:= h : = abs ( eps i) ; i f h > max then max : = h
n,
0
te
end;
0
,p
;
min: = ma x x minwfac ;
m
s
m
for i : = 1 s 1 2 2 1 u n t il n do
ai
i
x,
bs gla h:= WR ]; W[1]:= 1 / ( if h < m in then m in els e h) end
n
ck
end;
w
o,
fdesfrac:= ( 2 - des frac ) x des r ac ; e:= t i m ; Leas t Squares:= t r u e ;
un
a
np
c
ta
for
c ount:= 1 E t t a 1 u n t il max c ount do
:
,r
=
begin f o r k := ( npar + 1) x npar : 2 s t e g - 1 u n t il 1 d o S[k1:= 0 ;
c,
1
for k := 1 ,
,p
0
sforl ei i: = 1 s tep 1 u n t il n do
tk
1
i,
3
122
u n t i
m
x
;
.
x:= X [ i ] ; w:= W M ; dy := (Y111 - Ix ) x w ;
l
,
m
01,
n
p
ssq:= d y x dy + s s q; t : = 0 ;
jf
a
t
a
r
;x
x
for k := 1 s l m 1 u n t il npar do
;
d
,
r
r
begin d f : = F [k ]:= w x dfx dpk ;
o
d
e
e
delta[k]:= delta[k ] + d f X dy ;
d e l
f
l
a
t a
for j : = 1 E
x
e
l
[ k ]
l'122e1 t:= t 1 ; S[t]:= SEt1
d
r
d
x
c if end
:
=
m
1
p
r
f
end
0
u n t i l
k
:
,
end;
;
k
)
=
d
s
d
;
1
y
s
o
0
,
q
w
:
pca- 49
if s s q < n then a l l ex it;
i f c ount > I then
begin d l : = s s q l - s s q;
if d l < 0 then
begin i f d l < 0 then f o r k := 5 2 2 1 u n t il npar do
pk: = par o[k l;
Leas t Squares:= s s q < ( 1 + max r eler r ) x s s q l;
end;
i f c ount
begin i
end;
d2:= d l
end;
g
o
> 2 then
t
f d l d l > (d2 - d l ) x des fr ac
o
c:= t i m els e
e
if c > I then c := c - 1 els e g 2
x.
i 1I e x i t
1
t
SYMDET2 ( S, npar , 1) ; SYMSOL2 ( S, npar , 1
9 d e l t a ) ;
for k : - 1 EL92 1 u n t il npar do
" mar l paro[k ]:= pk ; pk := par o[k ] + deltatk i end;
s s ql:= s s q
end;
x s s q then
pea- 50
0
2.
Pr ogr amma, compound s tatement en bloc k
Declaraties
3.
Procedure dec lar ation
1
4.
Scope
1
5.
Het proc edure-mec hanis me
3
G.
4
7.
Wanneer " c a ll by name", wanneer " c a ll b y v alue"?
Voorbeelden
8.
Jensen's dev ic e
8
9.
Recursieve procedures
9
1.
0
7
10.
Switches en des ignational ex pres s ions
11
11.
14
12.
Boolean ex pres s ion en logis c he v ar iabelen
own
13,
for s tatements
16
14.
Hoe w or dt een ALG O L- pr ogr amma uitgev oerd?
18
15.
Tijds duur en plaats r uimte v an het pr ogr amma
20
16.
Nog lets ov er t ijden en effi c ienc y
25
17.,
Efficiency v an het proc es
31
18.
Efficiency door betrouwbaarheid
Leesbaarheid
34
37
21.
Algemene geldigheid
Real- ar itmetiek
22.
Iteratiev e processen
44
19.
20„
15
35
41
Download