1. MATRICE 2x2

Proprietà: Una matrice 2x2 è costituita da 4 numeri reali (elementi) in forma tabellare, 2 righe e 2 colonne (struttura) senza vincoli tra essi e quindi con dominio RxRxRxR.

Le operazioni sono:

Set(), Get()Nulla(), Identità(), Opposta(), Trasposta(), Determinante()Somma(), Prodotto(), ...

Specifica:

Interfaccia: procedure somma(m1, m2: Mat2x2; Var m3: Mat2x2);Prerequisiti: nessunoEffetti: in m3 la somma matriciale tra m1 e m2Esempi d'uso: Siano m1 = (1, 2, 3, 4) e m2 = (0, 1, 0, 2) allora m3 = (1, 3, 3, 6) ...

Interfaccia: procedure Set(Var m: Mat2x2; i, j: Byte; R: Real);Prerequisiti: i, j = 1, 2Effetti: R viene assegnato alla posizione (i, j)Esempi d'uso: Siano m = (1, 2, 3, 4) allora dopo Set(m, 2, 1, 0.5) si avrà m = (1, 2, 0.5, 4)

Interfaccia: function DeterminanteM(m: Mat2x2): Real;Prerequisiti: nessunoEffetti: se m = (a, b, c, d) restituisce ad-bcEsempi d'uso: Siano m = (1, 2, 3, 4) allora det = 1*4-2*3 = 4-6 = -2

Rappresentazione fisica:

Scelgo il vettore a 2 dimensioni...

Type
   Mat2x2 = Array[1..2, 1..2] of Real;

Codifica:

function Get(Var m: Mat2x2; i,j: Byte): Real;
begin
   Get:=m[i,j];
end;
procedure Set(Var m: Mat2x2; i,j: Byte; R: Real);
begin
   m[i,j]:=R;
end;
function determinante(m: Mat2x2): Real;
begin
   determinante:=Get(m,1,1)*Get(m,2,2)-Get(m,1,2)*Get(m,2,1);
                 (* m[1,1]*m[2,2]-m[1,2]*m[2,1] *)
end;
procedure somma(m1, m2: Mat2x2; Var m3: Mat2x2);
begin
   for i:=1 to 2 do
     for j:=1 to 2 do
        Set(m3, i, j, Get(m1,i,j)+Get(m2,i,j));
        (* m3[i,j]:=m1[i,j]+m2[i,j])
end;

2. Somma da file

Si visita il file e ad ogni passo si utilizza l'operazione di somma tra m (la risposta) e X (l'elemento nel file)

procedure sommafile(Var f: fMat2x2; var m: Mat2x2);
Var
   X: Mat2x2;
begin
   Nulla(m); (* setta m a matrice nulla *)
   Reset(f);
   while(Not Eof(f)) do
      begin
         Read(f, X);
somma(m, X, m);
end;
   close(f);
end;

- ApPuNtIdIuNiNfOrMaTiCo