Laborator 1 [PDF]

  • 0 0 0
  • Gefällt Ihnen dieses papier und der download? Sie können Ihre eigene PDF-Datei in wenigen Minuten kostenlos online veröffentlichen! Anmelden
Datei wird geladen, bitte warten...
Zitiervorschau

RAPORT LUCRARE DE LABORATOR NR. 1 LA DISCIPLINA „PROGRAMAREA ORIENTATĂ PE OBIECTE” Tema: Structura

– mecanism de abstractizare V6

Realizat: Dogaru Dinu , RM-191 Verificat: Lisnic Inga

2020

Scopul lucrării:  Studierea programării prin abstractizarea datelor;  Studierea regulilor de definire şi utilizare a structurilor de date;  Crearea variabilelor de tip structură, accesarea componentelor unei structuri. Întrebări de control:

1.Definiţi noţiunea – tip abstract de date. Un Tip Abstract de Date (TAD) este o specificare a unui set de date de un anumit tip, împreună cu un set de operaţii care pot fi executate cu aceste date 2.Cum se defineşte o structură? struct Book{ // definirea elementelor structurii char *author; char *title; int year; int pages; }; 3.Prin ce se deosebeşte structura de alte tipuri de date? Structură de date este o metodă sistematică de stocare a informațiilor și datelor într-un calculator, în așa fel încât ele să poată fi folosite în mod eficient. Deseori o alegere bine făcută a structurii de date va permite și implementarea unui algoritm eficient. Structura de date aleasă este derivată de multe ori dintr-un tip de dată abstract. O structură de date bine concepută permite efectuarea unei varietăți de operații de bază, utilizând puține resurse (ca de exemplu memoria necesară și timpul de execuție). Structurile de date se implementează utilizând tipuri de date, referințe și operații asupra acestora, toate facilitate de către un limbaj de programare. (aici nu sunt sigur) 4.Cum se defineşte o variabilă de tip structură? Pentru definirea variabilelor este suficientă utilizarea numelui de structură la fel ca tipurile predefinite: Book b1, b2; 5.Cînd se utilizează punctul, cînd - săgeata? Accesarea indirectă a structurilor (şi a claselor) este foarte frecventă înprogramare, fiind singura lor modalitate de accesare în cazul alocării dinamice, limbajul afost prevăzut cu operatorul de accesare indirectă, “operatorul săgeată”, definit astfel: dacă p este un pointer către o structură care are un membru x, atunci expresia p->x estesintactic echivalentă cu (*p).x (adică la compilare prima este tradusă în a doua).Utilizarea operatorului săgeată simplifică foarte mult scrierea şi măreşte lizibilitateacodului. Punctul se foloseste la pointere catre structure (aici nu sunt sigur) 6.Care sunt deosebirile între structura din limbajul C şi C++? In C++, o structura este, de fapt,  o clasa ai carei membri sunt declarati, in mod implicit, public. In consecinta in C++, la declararea unei variabile de tip structura nu mai este obligatorie precizarea cuvantului cheie struct. Exemplu: a)      descrierea unei structuri in C      b) descrierea unei structuri in C++ typedef struct                                      struct tip_student   {                                                          {      int matricola;                                       int matricola;

     char nume[20];                                    char nume[20];      int nr_note;                                          int nr_note;      double nota[15];                                 double nota[15];      double media;                                    double media;   }tip_student;                                       } Iar declararea de variabile de tipul structurii de mai sus, in C si in C++ se face astfel: a) struct tip_student s1,s2,student;   b)    tip_student s1,s2, student; 7.O structură poate oare să conţină altă structură? -Da, cu conditia ca structura inclusa este declarata mai sus 8.O structură poate oare să conţină pointer spre ea însăşi? -Desigur, la fel cum poate contine un pointer spre alte structure sau elemente, poate contine si adresa ei; 9.Poate oare să fie creată dinamic o variabilă de tip structură? -Da, prin urmarea functiei NEW pentru creare si DELETE pentru eliberarea memoriei. 10.Explicaţi cum are loc apelul prin referinţă. Prin referinta putem manipula structura fara a fi nevoie de transmis prin functii delete propriu zise a structurii,doar prin referinta putem manipula datele din memorie, fara a fi nevoie de a fi reutilizare

-Codul #include using namespace std; struct vector { double *tab; int nr_elem; }; void initializare(vector *V) { cout > V->nr_elem; V->tab = new double[V->nr_elem]; if (!V->tab) cout tab; delete V; } void afisare(vector *V) { for (int i = 0; i < V->nr_elem; i++) { cout tab[i] tab = new double[V->nr_elem]; } void suma(vector *V) { double suma = 0; for (int i = 0; i < V->nr_elem; i++) { if (V->tab[i] > 0) { suma = suma + V->tab[i]; } } cout