Sunteți pe pagina 1din 10

Liceul Teoretic Jean Bart Sulina

Calcul determinant de ordin 3 prin regula lui Sarrus


Atestat informatic

Profesor ndrumtor: Dobre Ana-Maria

Elev: Clasa a XII-a A

2008 CUPRINS
1.

Limbajul Pascal................................................................................... 3

2. Determinant de ordin 3........................................................................ 4 3. Codul programului............................................................................... 4 4. Explicatia programului........................................................................ 8 Bibliografie........................................................................................ 10

1. Limbajul Pascal
Pascal este un limbaj de programare dezvoltat n anul 1970 de Niklaus Wirth ca un exemplu de limbaj potrivit pentru programarea structurat. Limbajul de programare Pascal este bazat pe limbajul de programare ALGOL i a fost numit n onoarea matematicianului i filozofului Blaise Pascal. Wirth a mai dezvoltat alte dou limbaje de programare asemntoare cu Pascal: Modula-2 si Oberon. Primul compilator Pascal a fost construit n Zurich pentru computerul CDC 6000 i a devenit operaional n 1970. n 1980 Anders Hejlsberg a programat compilatorul Blue Label Pascal pentru Nascom2. O reimplementare a acestui compilator pentru PC-urile IBM a fost fcuta sub numele Compas Pascal i PolyPascal nainte ca acesta s fie achiziionat de Borland. Redenumit Turbo Pascal a devenit foarte popular, n mare parte datorit strategiei agresive de preuri. n 1986 Anders a implementat Turbo Pascal i pe Macintosh i a introdus extensiile Apple's Object Pascal n Turbo Pascal. Aceste extensii au fost atunci adugate i n versiunea pentru PC a Turbo Pascal version 5.5. Compilatorul Borland a avut o mare influen asupra comunitii programatorilor Pascal care ncepuse s se concentreze n special asupra IBM PC n anii 80. Au fost importate o serie de concepte din C pentru a permite programatorilor Pascal sa foloseasca direct API-ul sistemelor de operare din familia Windows (API=Application programming interface). Aceste concepte includ pointeri aritmetici, functii pointeri, etc. Oricum, Borland a decis mai trziu c vroiau un limbaj mai elaborat bazat pe programarea orientat pe obiecte, i au nceput Delphi folosind standardul Object Pascal propus de Apple ca baz. Borland iniial denumise acest nou limbaj Object Pascal, dar mai trziu l-au schimbat n Delphi Programming Language. Turbo Pascal i ali derivai cu concepte de unituri sau module sunt limbaje modulare. Super Pascal a fost o alt variant, ce propunea multiple imbuntiri, din pcate proiectul nu a fost continuat. Astzi, exist i compilatoare gratis, un exemplu este Free Pascal.
3

2. Determinant de ordin 3
Ne propunem s scriem un program ce va calcula determinantul unei matrice de ordin 3 cu ajutorul regulii lui Sarrus. Acesta va avea i posibilitatea calculrii determinanilor matricelor de ordin inferior.

3. Codul programului
program determinant; type adr=^cerc; cerc=record info:byte; leg:adr; end; var matr:array[1..3,1..3] of integer; n,i,j:byte; cap,sf:adr; det:longint;

procedure creare_aux(var cap,sf:adr; nr:byte); var crt:adr; begin new(crt); crt^.info:=nr; if cap=nil then cap:=crt else sf^.leg:=crt; crt^.leg:=nil; sf:=crt; end; procedure grad_unu; begin
4

write('a[1,1]= '); readln(matr[1,1]); writeln; writeln(' det M = ',matr[1,1]); end; procedure grad_doi; begin for i:=1 to 2 do for j:=1 to 2 do begin write('a[',i,',',j,']= '); readln(matr[i,j]); end; det:=matr[1,1]*matr[2,2] - matr[2,1]*matr[1,2]; writeln; writeln(' det M = ',det); end; procedure initializare_matr(n:byte); begin writeln; for i:=1 to n do for j:=1 to n do begin write('a[',i,',',j,']= '); readln(matr[i,j]); end; end; procedure afisare_matr(n:byte); begin writeln; for i:=1 to n do begin write('| '); for j:=1 to n do write(matr[i,j],' '); writeln('|'); end;
5

end; procedure calcul_determinant_3(cap:adr; nr:byte); var x:longint; aux:adr; begin for i:=1 to nr do begin x:=1; aux:=cap; for j:=1 to nr do begin x:=x*matr[aux^.info,j]; aux:=aux^.leg; end; det:=det + x; cap:=cap^.leg; end; for i:=1 to nr do begin x:=1; aux:=cap; for j:=nr downto 1 do begin x:=x*matr[aux^.info,j]; aux:=aux^.leg; end; det:=det - x; cap:=cap^.leg; end; end; begin writeln('CALCUL DETERMINANT':48); writeln; write('Dati ordinul matricei(n<=3): '); readln(n); case n of 1:grad_unu; 2:grad_doi; 3: begin for i:=1 to n do
6

creare_aux(cap,sf,i); sf^.leg:=cap; writeln; initializare_matr(n); afisare_matr(n); calcul_determinant_3(cap,n); writeln; writeln('det M = ',det); end; else writeln('Ordin incorect!'); end; readln; end.

4. Explicaia programului

Codul surs al executabilului a fost scris n limbajul Pascal i a fost compilat de Free Pascal Compiler. Se poate observa uor c exist o relaie ntre indicii matricei. Astfel nu a fost nevoie de construirea a dou linii adiionale n matrice, pentru calculul efectiv al determinantului. Era nevoie de un vector unidimensional care s conin anumii indici ai matricei, dar, pentru c o astfel de implementare ar fi fost ineficient din punct de vedere al ocuprii memoriei interne, am folosit o list circular ce reduce aproape la jumtate memoria folosit, chiar i timpii de calcul.

n momentul execuiei programului va aprea un mesaj n care se cere s specificai ordinul matricei.

Dup ce a fost dat ordinul matricei va urma introducerea elementelor n funcie de linii i coloane.

Dup introducerea datelor, programul va calcula determinantul i va afia rezultatul.

Pentru a iei din program apsai pe tasta ENTER sau pe un caracter.

Bibliografie

Daniela Oprescu, Liana Bejan Ienulescu, Viorica Ptracu, Informatic, manual pentru clasa a XI-a, varianta Pascal, editura Niculescu, Bucureti, 2004 L. Livoschi, H. Georgescu, Bazele informaticii. Algoritmi, Universitatea Bucureti, Facultatea de Matematic, 1985

10

S-ar putea să vă placă și