Sunteți pe pagina 1din 7

1 Laboratoare la disciplina Structuri de date i algoritmi Laborator 1 Structuri de date elementare i de nivel jos Tema 1 (1 or) Declararea i utilizarea

scalarilor n limbajele de programare Sarcina: 1. Declararea variabilelor de tip predefinit n limbajele C++, Pascal, Perl, Visual Basic. 2. Declararea tipurilor proprii n limbajele C++, Pascal, Perl, Visual Basic. 3. Determinarea zonei de memorie ocupat de diferite tipuri. Tema 2 (1 or) Declararea i utilizarea structurilor de nivel jos Sarcina: 1. Declararea unui masiv de rangul M cu N elemente n limbajele C++, Pascal, Perl, Visual Basic. 2. Efectuarea operaiilor standard (adugare, inserare, tergere, citire elemente i calculul nr. de elemente semnificative) asupra lui. 3. Declararea irurilor n limbajele C++, Pascal; efectuarea operaiilor de adugare, citire, concatenare, copiere. Laborator 2 Utilizarea variabile dinamice n limbajele de programare Tema 3 (2 ore) Pointeri i referine Sarcina: 1. Citirea adresei de memorie pentru scalari de diferite tipuri n limbajele C++, Pascal, Perl, Visual Basic 2. Lucrul cu variabile de tip pointer i referin n limbajele C++, Pascal: - declararea lor; - crearea i alocarea memoriei; - nscrierea valorilor n zona de memorie alocat i citirea lor; - eliberarea memoriei. 3. Formarea i lucrul cu liste dinamice n limbajele C++, Pascal - Declararea unei structuri ce conine referin la structur similar. - Formarea unei liste FIFO; efectuarea operaiilor de adugare, inserare, eliminare a elementelor; parcurgerea listei. - Formarea unei liste FILO; efectuarea operaiilor de adugare, inserare, eliminare a elementelor; parcurgerea listei. Laborator 3 Lucru cu structurile arborescente Tema 3 (4 ore) Arbori binari Sarcina: 1. Construirea uni arbore binar complet de nivelul 3, n limbajele C++, Pascal 2. Parcurgerea arborelui prin metoda preordine, inordine i postordine. Laborator 4 Utilizarea tehnicilor de sortare a datelor Tema 4 (4 ore) Algoritmi de sortare intern Sarcina: 3. Elaborarea algoritmilor i sortarea ascendent a unui masiv liniar de N elemente utiliznd metodele: bulelor, inseriei, seleciei, sortare rapid, n limbajele C++, Pascal, Perl, Visual Basic 4. Analiza performanelor algoritmilor de sortare.

1 Exemplificare: Tema 1 Declararea i utilizarea scalarilor n limbajele de programare


1.Tipuri de date in C si memoria ocupata : int - 2 bytes char - 1 bytes float - 4 bytes double - 8 bytes ... 2.Tipuri de date in Pascal si memoria ocupata : integer 2 bytes string maxim 256 simboluri char 1 bytes ... 3.Tipuri de date in Visual Basic si memoria ocupata : ... 4.Tipuri de date in Perl : ...

Pascal Program def_scalari; type intreg=integer; caracter=char; cu_virgula=real; var a:integer; b:char; c:real; d:byte; e: word; f:intreg;g:caracter;h:cu_virgula; begin a:=1; b:=C; c:=23.5; d:=23h; e:=45.6; readln(f); readln(g); readln(h); writeln (variabile de tip integer,a, ,intreg); writeln (variabile de tip caracterial,b, ,caracter); writeln (variabila de tip word,e); ... end. C ++ #define intreg int; #define character char; void main(void) { int a; char b; float c; double d; intreg f; caracter g; a=1; b=C; c=23.5;

2 d=23456.67 gets(f); gets(g); printf(variabile de tip intreg %a %f\n,a,f); ... } Tema 2 Declararea i utilizarea structurilor de nivel jos Pascal var a:array [1..5,1..2] of integer; i,j:integer; c:string; begin writeln(adaugarea elementelor); for j:=1 to 2 do for i:=1 to 5 do begin write(introducem elementul din rindul,j, coloana,i); readln (a[j,i]); end; writeln(citirea elementelor); for j:=1 to 2 do begin write (rindul,j); for i:=1 to 5 do write(a[j,i]); writeln; end; ... write(citira unui sir:); readln(c); writeln(sirul c are valoarea:c); end. C++ #include <stdio.h> #include <conio.h> #define m 2 #define n 5 void main(void) { int a[n][m]; int i,j; clrscr(); printf("Dati datele in tabel :\n"); for(i=0; i<n; i++) for(j=0; j<m; j++) { printf("t[%d][%d]= ",i,j); scanf("%d",&a[i][j]); } printf("Datele din tabel sint :\n"); for(i=0; i<n; i++)

3 for(j=0; j<m; j++) printf("a[%d][%d]= %d\n",i,j,a[i][j]); getch(); } Visual basic Sub FillArray() Const N=5 Dim dList(5, 2) As Integer Randomize Introducerea aleator For i = 1 To 2 For j = 1 To 5 dList(i) = Format(Rnd(),"0.0000") Next j Next i Afisarea For i = 1 To 2 For j = 1 To 5 Debug.Print Format(dlist(i),"0.0000") Next j Next i End Sub Tema 3 Pointeri i referine Pascal { Crearea si parcurgerea unei liste bidirectionale } type AdresaCelula=^Celula; Celula=record Info : string; Urm, Prec : AdresaCelula; end; var P, { adresa de baza } V : AdresaCelula; { adresa virfului } procedure Creare; var R : AdresaCelula; begin P:=nil; V:=nil; . writeln('Dafi Jista;'); while not eof do begin new(R); readln(R^.Info); R^.Prec:=nil; R^.Urm:=nil; if P=nil then begin P:=R; V:=R end else begin V^.Urm:=R; R^.Prec:=V; V:=R end; end; end; { Creare } procedure Afisarea; var R : AdresaCelula; begin writeln('Afisarea de la baza la virf;'); R:=P; while R<>nil do begin

4 writeln(R^.Info); R:=R^.Urm; end; writeln{'Afisarea de la virf la baza;'); R:=V; while R<>nil do begin writeln(R^.Info); R:=R^.Prec; end; readln; end; { Afisarea } begin Creare; Afisarea; end. Tema 4 Arbori binari Pascal { Parcurgerea arborelui binar } type Arbore=^Nod; Nod=record Info : string; Stg, Dr ; Arbore end; var T : Arbore; { radacina } function Arb : Arbore; { crearea arborelui binar } var R : Arbore; s : string; begin readln(s); if s=" then Arb:=nil else begin new(R); R^.Info:=s; write('Dati descendentul sting'); writeln{' al nodului ', s, ':'); R^,Stg:=Arb; write('Dafi descendentul drept'); writeln{' al nodului ', s, ':'); R^.Dr:=Arb; Arb:=R; end; end; { Arb } procedure AfisArb(T : Arbore; nivel : integer); { afigarea arborelui binar } var i : integer; begin if T<>nil then begin AfisArb(T^.Stg, nivel+l); for i:=l to nivel do write(' '); writeln(T^.Info); AfisArb(T^.Dr, nivel+l); end; end; { AfisareArb } procedure Preordine(T : Arbore); { traversare RSD } begin if T<>nil then begin writeln(T^.Info); Preordine (T^.Stg); Preordine{T^.Dr) end;

5 end; { Preordine } procedure Inordine(T : Arbore); { traversare SRD } begin if T<>nil then begin Inordine(T^.Stg); writeln(T^.Info); Inordine(T^.Dr) end; end; ( Preordine } procedure Postordine(T : Arbore); { traversare SDR } begin if T<>nil then begin Postordine(T^.Stg); Postordine{T^.Dr); writeln{T^.Info) end; end; { Postordine } begin writeln ( 'Aafi radacina:'} ; T:=Arb; AfisArb(T, 0); readln; writeln('Parcurgere in preordine;'); Preordine(T); readln; writeln('Parcurgere in inordine:'); Inordine(T); readln; writeln{'Parcurgere in postordine:'); Postordine(T); readln; end.

2.C++
# include <iostream.h> #include <conio.h> #include <stdio.h> struct arb{ int data;arb *stang, *drept; }; arb *creare(arb *p,int c) { if (p==NULL) {p=new arb; p->data=c; p->stang=p->drept=NULL; } else if(c<p->data) p->stang=creare(p->stang,c); else p->drept=creare(p->drept,c); return p; } void inordine(arb* p) {if (p!=NULL)

{inordine(p->stang); cout<<p->data<<endl; inordine(p->drept); } } void preordine(arb* p) {if(p!=NULL) {cout<<p->data<<endl; preordine(p->stang); preordine(p->drept); } } void postordine(arb* p) {if(p!=NULL) {postordine(p->lift); postordine(p->drept0; cout<<p->data<<endl; } } arb *rad=NULL; char c; void main() {cout<<"Dati numarul ('$') pentru terminare FII\n"; while(scanf("%d",&c)==1) rad=creare(rad,c); cout<<"Inordine\n"; inordine(rad); cout<<endl<<endl; getch(); cout<<"Preordine"<<endl; preordine(rad); cout<<endl<<endl;getch(); cout<<"Postordine"<<endl; postordine(rad); cout<<endl<<endl; getch(); }