202
uit twee richtingen worden berekend. Het zijn weer alleen de indices
van de richtingen, de nummers van de punten dus waarop de
richtingen zijn betrokken, die verschillen voor de twee hoeken.
Men kan nu ook het berekenen van een hoek uit zijn twee rich
tingen in een procedure vastleggen. Dit is vooral zinvol omdat ook
bij het berekenen van de sluittermen y1y4 veelvuldig van uit
richtingen berekende hoeken gebruik wordt gemaakt. De procedure
verklaring komt er als volgt uit te zien:
real procedure a(j, i, k)integer i, j, k\a r\i, k] r[i,j](2.21)
Men kan nu deze verklaring binnen de verklaring van de proce
dure v opnemen, want ook een blok (dat begint met één of meer
procedures of andere verklaringen) kan als procedurelichaam
fungeren.
Het volgende geheel wordt dan verkregen
real procedure v(j, i, k)integer i, j, k
begin real procedure a(j, i, k)integer i, j, k\
a (r[i, k] r[i, j])/63.662o;
v sin(a(k, j, i))/sin(a(i, k, j))
end (2.22)
Deze oplossing is echter niet verstandig. Immers een verklaring,
ook van een procedure, geldt niet buiten het blok waarbinnen hij
wordt afgelegd. De procedure a kan dus alleen maar gebruikt
worden binnen de procedure v en is dus onbruikbaar voor het
berekenen van driehoekssluittermen.
Daarom is het beter de procedure a te verklaren buiten de
procedure v. Gebruiken we a dan tevens voor het berekenen van
de driehoekssluittermen en vatten we verder (2.14) (2.21)
samen, dan krijgen we het volgende resultaat:
begin array r[i :5, 1:5], y [1:5]real pi
pi 3.141593;
begin real procedure a(j, i, kinteger i, j, k
begin a (r[i, k~\ r\i 6620)
if a o then a a 2 x pi
end;
real procedure v (j, i, kinteger i, j, k
v sin (a(k,j, t))/sin(a(f, k,j))\
y[i] :=pi—a(2,i,3)— «(1,3,2)— «(3,2,1)
y[2] :=pi—a(3,i,4)—«(1,4,3)—0(4,3,1) i
^[3] :=pi—«(3.4.5)— «(4.5.3)— «(5.3,4)
«(3.5.2)—«(5,2,3)—«(2,3,5)
^[5]: i—«(1.3.2) xw(4,3,i) xv(5,3,4)xw(2,3,5);
end
end