251
Ook zal men erin opnemen de formule
<l>ik <f>ij V-jlk (5-3)
Gebruik van (5.3) betekent dan dat de procedure voor het
berekenen van ajuc moet worden aangeroepen. Dat geeft ook geen
bezwaar. Maar hoe wordt dan fa verkregen? Het kan immers
zijn dat <f>ij uit coördinaten moet worden berekend. Deze berekening
vindt plaats volgens (5.2), maar nu is juist (5.2) als onderdeel van
de procedure poe gedacht. Dit wil dus zeggen dat de procedure
voor fa zichzelf moet kunnen aanroepen. Ook dit is in principe
geen bezwaar daar dit zgn. recursief gebruik van een procedure
in ALGOL is toegestaan. De mogelijkheid van recursief gebruik
van procedures is echter niet bij alle ALGOL-vertalers gerealiseerd.
Zo is dat niet het geval bij de ALGOL-vertaler van de TR4, de
rekenautomaat die in het bezit is van de T.H.
Daarom moest naar een andere oplossing worden omgezien om
een hoge graad van automatisering in het programmeren van
problemen uit de puntsbepaling te bereiken. Een uiteenzetting
van de gevonden oplossing kan het beste worden gegeven aan de
hand van de ALGOL-procedure zelf. Daarom wordt nu eerst een
protocol weergegeven van het proceduresysteem. Bij de daarop
volgende bespreking wordt telkens verwezen naar de regels van
het protocol.
Het protocol van het ALGOL-procednresysteem (Het verschil in lettertype t.o.v.
de voorgaande ALGOL-tekst heeft geen onderscheidende betekenis.)
reg el
1 BEGIN INTEGER AZ, iVLAM, API; REAL RHO; RHO: 63.661977237;
READ(A'Z, AT AM, API)
BEGIN INTEGER /LAM, /PI,
BOOLEAN G, GA, GB, GC;
INTEGER ARRAY ALAM [i:jVLAMJ, API [i :.VPI]
6 ARRAY SLAM Ti :2 x ALAM], SPI [1:2 x APT,
SZ[i:2, 1:2 x NZ];
INTEGER PROCEDURE A(I,K,P,NINTEGER I,K,N,P;
BEGIN INTEGER CA,CB,C; G=GA FALSE;
CA 1000000 x P 1000 xI K; CB 1000000 x P+
1000 xK+I;
FOR C: 1 STEP 1 UNTIL /LAM DO
BEGIN IF CA A LAM[C1 THEN
BEGIN G: TRUE;
A :=C; GOTO LAB 1
END;
IFP=i VP 2V((P 3VS 4)AA=i) THEN
BEGIN IF CS ALAM[C] THEN
BEGIN GA TRUE; G: TRUE;
A :=C, GOTO LAB 1
END
END
END; A: 1;
END A;
16
21
LAB 1: