TYPE (* регистры машины *) Register* = RECORD ind1* : SHORTINT; ind2* : SHORTINT; int* : LONGINT; result* : LONGINT; END; TYPE (* процедурные типы для переключателей процедур *) ProcType1* = PROCEDURE (i: SHORTINT; j: SHORTINT): LONGINT; ProcType2* = PROCEDURE (i: SHORTINT): LONGINT; VAR (* абстрактные процедуры для разных вариантов *) PascalTriangle* : ProcType1; Fibonacci* : ProcType2; CONST MaxPasINDEX = 31; (* 0..31 *) MaxFibINDEX = 45; (* 0..45 *) MaxFactINDEX = 12; (* 0..12 *) PasCOUNT = ((MaxPasINDEX DIV 2)-1) * ((MaxPasINDEX-1) DIV 2); (* 210 *) FibCOUNT = 32; VAR r* : Register; primeDesc: PrimeDesc; isPrime : POINTER TO ARRAY OF SET; pas : ARRAY PasCOUNT OF LONGINT; fib : ARRAY FibCOUNT OF LONGINT;