Sunteți pe pagina 1din 5

Programare Orientat Obiect = Tema 1 =

Scop general: - recapitularea cunotinelor de programare n limbaj C; - utilizarea mediului de dezvoltare Visual Studio; Scop specific: - deprinderea cu particularitile lucrului n mediul de dezvoltare Visual C++: lucrul cu proiecte, utilizare editor/compilator, depanarea aplicaiilor prin execuie pas cu pas, inspectarea variabilelor; - deprinderea cu utilizarea MSDN pentru regsirea informaiilor utile; - lucrul cu vectori i matrici de date; structurarea codului cu funcii, organizarea codului n fiiere, structuri de date; - lucrul cu iruri de caractere; memorarea irurilor de caractere cu terminator \0; structuri de date; Documentaie specific: - carte C/C++; recomandarea noastr: H. Schildt, The complet reference C++, 3rd edition, ed. McGrow Hill, 1999, ISBN 0-07-882476-1; - Microsoft MSDN 6, 2CD sau web site; - lucrri de laborator la disciplina PCLP 1 & 2 i POO, Fac. ETTI Iai; Cerine: - tema conine dou probleme. Enunul fiecrei probleme permite o rezolvare cu o complexitate ce crete gradual (preciznd o soluie minimal); enunul i modalitatea de rezolvare a fost discutat n sptmna II; - pentru fiecare problem va fi completat o fi de verificare dovedind cunoaterea soluiei; - notarea este proporional cu complexitatea i corectitudinea soluiei furnizate pe baza informaiei din fia de verificare; - soluia realizat va putea fi utilizat ulterior n cadrul proiectului la disciplina POO; - tema se rezolv personal prin verificarea codului surs pe calculator pentru date de intrare specifice; - tema se pred semnat, scris de mn sau tiprit fa-verso, perforat i ndosariat n dosar cu in. Tema conine tot codul surs indicnd i numele fiierelor i este nsoit de fia de verificare. Tema se poate verifica prin ntrebri la predare sau pn la definitivarea notei la disciplina POO; Temele se vor pstra intr-un dosar; - termen de predare: n sptmna V, la nceputul laboratorului;

Problema I
Cerine minimale: Pentru un vector cu elemente ntregi de dimensiune n (n<=100) ale crui elemente se citesc de la consol i apoi se afieaz cate 5 pe linie, se cere: a. calculul sumei i produsului elementelor sale; b. determinarea elementului maxim, a elementului minim i a poziiilor pe care se afl acestea; c. ordonarea elementelor sale cresctor/ descresctor. Pentru 2 vectori X i Y cu n elemente s se calculeze i s se afieze: d. vectorul sum S= X + Y i vectorul produs P = X .* Y; e. produsul scalar al celor 2 vectori X si Y; f. X*Y (interpretnd X ca fiind vector coloan (n x 1) i Y ca vector linie (1x n)). Pentru o matrice de dimensiuni mxn (m,n preluai de la consol) s se calculeze: a. suma i produsul elementelor matricii; b. elementul maxim, elementul minim i poziiile acestora; c. numrul elementelor negative, numrul celor nule i numrul celor pozitive; Pentru dou matrici A,B cu dimensiuni preluate de la consola: d. s calculeze suma elementelor de pe diagonala principal a unei matrici ptratice; e. s se calculeze i afieze matricea sum C=A+B (cele trei matrici au aceleai dimensiuni mxn,); f. s se calculeze i afieze matricea produs C=A(mxn)*B(nxp). Cerine n completare (1):
Codul s se organizeze cu funcii pentru citirea respectiv afiarea datelor. Se vor implementa funcii pentru operaiile solicitate i se vor apela corespunztor.

Cerine n completare (2): Se vor defini structuri de date pentru Vector i respectiv pentru Matrice. Funciile de citire/calcul i afiare se vor proiecta corespunztor.

Indicaie: n structura de date se pot reuni: datele, dimensiunea lor, un ir de caractere cu numele variabilei, un indicator pentru date valide.

Cerine n completare (3): Datele din structurile de date pentru Vector i Matrice se vor aloca dinamic. Funciile de citire/calcul i afiare se vor implementa corespunztor. Vor fi proiectate funcii pentru iniializarea structurilor de date, pentru alocare i pentru eliberarea memoriei.
Indicaie: n structura de date se pot reuni: datele alocate dinamic (pointer la date), dimensiunea lor, un ir de caractere cu numele variabilei, un indicator pentru memorie alocat, un indicator pentru date valide. Un exemplu de alocare de memorie pentu matrici este n lucrrile de laborator pentru POO, de exemplu: Laborator 2: Alocarea dinamic a memoriei (02_Lab02.pdf)

Problema I (fia de verificare)


Descriere implementare:

Soluia implementeaz: Cerina autoevaluare numai cerina minimal funciile pentru citirea/afiarea vectorilor n fiierul prin funciile funciile pentru citirea/afiarea de matrici n fiierul prin funciile . funciile pentru calcul cu vectori n fiierul .. prin funciile . funciile pentru calcul cu matrici n fiierul prin funciile structurile de date pentru vectori cu numele declarate n fiierul funciile referitoare la vectori utilizeaz structuri de date implementarea structurii de date pentru vectori i a funciilor ........ pentru vectori sunt cu alocare dinamic exist funcii pentru alocarea/eliberarea memoriei n cazul vectorilor structurile de date pentru matrici cu numele declarate n fiierul funciile referitoare la matrici utilizeaz structuri de date implementarea structurii de date pentru matrici i a funciilor pentru matrici sunt cu alocare dinamic exista funcii pentru alocarea/eliberarea memoriei n cazul matricilor Implementarea conine: operaii de intrare / ieire cu scanf / printf operaii de intrare / ieire cu cin / cout i << / >> fiiere header.h cu protecie la dubl includere declararea structurilor de date cu typedef i struct alocare dinamic cu malloc / free alocare dinamic cu new / delete alocarea dinamic pentru matrici se face cu 2 apeluri de malloc/new alocarea dinamic pentru matrici se face cu 1 apel de malloc/new Despre aplicaie: Proiectul este fr erori de compilare/linkeditare Programul a fost testat cu seturi de date acoperitoare Operaiile de intrare se fac cu verificare Programul ruleaz fr erori Programul ruleaz i ntreaga memorie alocata este dealocata

evaluare

Problema II
Cerine minimale: Se preiau de la consol doua iruri de caractere: sir_1, sir_2 memorate n modul specific C pentru iruri de caractere. a. S se calculeze lungimea irurilor introduse; b. S se compare (n sens lexicografic) sir_1 cu sir_2 specificndu-se prin 0 c cele dou iruri sunt egale, printr-o valoare pozitiva c sir1_1>sir_2 i printr-o valoare negativ c sir_1<sir_2 i tiprind un mesaj n acest sens; c. S se copie sir_1 ntr-un ir nou, sir_3; d. S se copie maxim n caractere din sir_1 n sir_3; e. S se concateneze sir_1 cu sir_2 i s se memoreze noul ir n sir_3;
Indicaie: un ir de caractere se pstreaz ntr-o zon de memorie organizat ca tablou unidimensional de tip char. Dup ultimul caracter al irului se pstreaz caracterul NULL ('\0'). NU se vor folosi funciile din biblioteca standard ce permit operaii cu iruri de caractere!

Indicaie: NU se vor folosi funciile din biblioteca standard ce permit operaii cu iruri de caractere! Se cere implementarea unor funcii proprii similare celor cu prototipul descris n fiierul string.h: strlen, strcpy, strncpy, strcat, strcmp.

Cerine n completare (1): Folosind pointeri la iruri de caractere s se proiecteze : a. o funcie care sa calculeze i s returneze lungimea irului pentru care se apeleaz; b. o funcie care s compare doua iruri ce apar ca parametri, sir_1, sir_2, returnnd 0 dac cele dou iruri sunt egale, o valoare pozitiva dac sir1_1>sir_2 i o valoare negativ dac sir_1<sir_2; c. o funcie care s copie un ir surs ntr-un ir destinaie, avnd ca prim parametru destinaia i drept al doilea sursa; d. o funcie care s copie cel mult n caractere dintr-un ir surs ntr-un ir destinaie, care s aib ca parametri: irul destinaie, irul surs i numrul maxim de caractere; e. o funcie care s concateneze dou iruri avnd ca prim parametru irul surs i drept al doilea, irul care se adaug la sfritul irului surs.

Cerine n completare (2): Se vor defini structuri de date pentru iruri de caractere la care se memoreaz lungimea irului. Se vor rescrie funciile pentru memorarea irurilor de caractere.

Indicaie: Dup ultimul caracter al irului nu se mai pstreaz caracterul NULL ('\0'). In structura de date se memoreaz cmpuri pentru lungimea irului i pentru vectorul de caractere. Datele se pot memora n zone de memorie alocate dinamic.

Problema II (fia de verificare)


Descriere implementare:

Soluia implementeaz: Cerina numai cerina minimal funcie pentru calculul lungimii irului de caractere funcie pentru compararea a dou iruri de caractere funcie pentru copierea unui sir de caractere in altul funcie pentru copierea a maxim n caractere dintr-un ir de caractere n altul funcie pentru concatenarea a dou iruri de caractere Implementarea conine: operaii de intrare / ieire cu scanf / printf operaii de intrare / ieire cu gets / puts operaii de intrare / ieire cu cin / cout i << / >> fiier header.h cu protecie la dubl includere declararea structurilor de date cu typedef i struct pentru un ir de caractere memorat cu lungimea irului funciile sunt scrise pentru acest mod de reprezentare a irurilor de caractere alocare dinamic cu malloc / free alocare dinamic cu new / delete Despre aplicaie: Proiectul este fr erori de compilare/linkeditare Aplicaia conine exemple de apelare a funciilor implementate Aplicaia nu utilizeaz funciile de bibliotec Programul a fost testat cu seturi de date acoperitoare Programul ruleaz fr erori Programul ruleaz i ntreaga memorie alocat este i dealocat

autoevaluare

evaluare

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