MODULE MatrixWerteParam; FROM InOut IMPORT WriteString, WriteInt, WriteLn; TYPE MATRIX = ARRAY [1..2], [1..2] OF INTEGER; VAR A, B, C : MATRIX; PROCEDURE InitMat( VAR mat : MATRIX; ul, ur, ll, lr : INTEGER); BEGIN mat[1, 1] := ul; mat[1, 2] := ur; mat[2, 1] := ll; mat[2, 2] := lr END InitMat; PROCEDURE M( X, Y : MATRIX; (* Eingabe: Werte-Param. *) VAR Z : MATRIX); (* Ergebnis: Variablen/Referenz-Param. *) BEGIN Z[1, 1] := X[1, 1] * Y[1, 1] + X[1, 2] * Y[2, 1]; Z[1, 2] := X[1, 1] * Y[1, 2] + X[1, 2] * Y[2, 2]; Z[2, 1] := X[2, 1] * Y[1, 1] + X[2, 2] * Y[2, 1]; Z[2, 2] := X[2, 1] * Y[1, 2] + X[2, 2] * Y[2, 2] END M; PROCEDURE PrintMat( mat : MATRIX); BEGIN WriteString("mat[] = "); WriteInt(mat[1, 1], 3); WriteString(", "); WriteInt(mat[1, 2], 3); WriteLn; WriteString(" "); WriteInt(mat[2, 1], 3); WriteString(", "); WriteInt(mat[2, 2], 3); WriteLn; WriteLn END PrintMat; BEGIN (* -- set 1 -- *) InitMat(A, 2, 1, -1, 3); InitMat(B, 3, -1, 1, 2); InitMat(C, 0, 0, 0, 0); WriteString("*** Test 1 ***"); WriteLn; WriteLn; M(A, B, C); WriteString("Resultat in Matrix C :"); WriteLn; PrintMat(C); M(A, B, A); WriteString("Resultat in Matrix A :"); WriteLn; PrintMat(A); (* -- set 2 -- *) InitMat(A, 2, 1, -1, 3); InitMat(B, 3, -1, 1, 2); InitMat(C, 0, 0, 0, 0); WriteString("*** Test 2 ***"); WriteLn; WriteLn; M(A, B, C); WriteString("Resultat in Matrix C :"); WriteLn; PrintMat(C); M(A, B, B); WriteString("Resultat in Matrix B :"); WriteLn; PrintMat(B) END MatrixWerteParam.