(* Compute Fibbonacci numbers. *) PROGRAM IS TYPE IARRAY IS ARRAY OF INTEGER; VAR N := 40; I := 0; fibbs := IARRAY []; j := 0; n := 0; PROCEDURE init(a : IARRAY) IS VAR i : INTEGER := 0; BEGIN a[0] := 1; a[1] := 1; FOR i := 2 TO N - 1 DO a[i] := I; END; END; PROCEDURE fibb(i: INTEGER) : INTEGER IS BEGIN IF fibbs[i] = I THEN fibbs[i] := fibb(i-2) + fibb(i-1); END; RETURN fibbs[i]; END; BEGIN init(fibbs); WRITE("Enter indices of eight fibbonacci numbers:"); FOR j := 0 TO 7 DO READ(n); IF n > N THEN (* A bug -- should be >= N *) WRITE("Maximum index is ", N); ELSE WRITE(n, " ", fibb(n)); END; END; END;