C++

Why C++

Inregistrarea si prezentarea sunt disponibile pe http://channel9.msdn.com/posts/C-and-Beyond-2011-Herb-Sutter-Why-C

Refacere seminar pentru studentii din anul 3 si anul suplimentar

Studentii care nu au promovat disciplina in anii anteriori trebuie :

  • sa refaca toate activitatile de la seminar si curs in anul universitar 2017-2018
  • sa se implice in activitatile din timpul anului deoarece punctele acumulate in anii anteriori nu se pastreaza
  • sa verifice conditiile valabile in anul universitar 2017-2018
  • sa participe la activitati de seminar si curs alaturi de studentii din anul 2 - tebuie completat formularul https://goo.gl/forms/Gjd1wGd61pE2FNz83 in pimele 3 saptamani din semestrul I, 2017-2018

Pregatire practica pentru examen

Pregatire parte teoretica

Model subiect examen

Proiecte

Depunerea proiectului (indiferent de punctajul obtinut) reprezinta conditie de intrare in examen. Copierea proiectului in proportie mai mare de 30% conduce la anularea intregului punctaj (lucrare + proiect) de la seminar.

Conditii generale privind realizarea proiectului:

  • proiectul reprezinta o aplicatie executabila (meniul este optional) care testeaza conceptele C++ implementate;
  • proiectul trebuie sa ruleze si sa nu genereze exceptii de executie (atentie la memory-leaks si la valori gestionate prin mai multi pointeri);
  • codul sursa al proiectul trebuie sa fie scris fara erori de compilare;
  • proiectul este dezvoltat in Visual Studio, NetBeans sau Eclipse (NU se accepta Borland C);
  • proiectul se realizeaza individual;
  • proiectul implementeaza clase diferite intre care exista relatii de tip is-a sau has-a
  • NU se folosesc variabile globale sau functii globale;
  • toate entitatile folosite au asociata o clasa; NU exista clase generice ce definesc functii/metode fara o legatura logica cu entitatea definita de clasa;
  • forma finala a proiectele se preda in ultima saptamana;
  • proiectul se realizeaza pe durata semestrului fiind stabilite la seminar conditii si termene intermediare ce trebuie respectate; fiecare faza intermdiara este evaluata si reprezinta pondere din nota finala a proiectului; predarea proiectului doar la final se evalueaza cu 20%;
  • la seminar coordonatorul poate stabili o alta tema insa conditiile generale raman valabile.

Proiectul este predat in format arhivat (.zip) pana la data stabilita. Arhiva contine:

  1. Fisierele sursa al programului. Denumirea fiecarui fisier urmareste sablonul [Proiect][grupa][Nume_prenume]_Denumire_particulara_fisier (de. ex. [Proiect][1038][Popescu_Alex]_Clasa_Student.cpp)

Denumirea arhivei are forma: [Proiect][grupa][Nume_prenume] - [Denumire proiect] (Exemplu: [Proiect][1066][Popescu Alexandru] - [Operatia de inserare in structuri de date]). 
Depunerea proiectelor se face prin intermediul unei platforme virtuale ce va face si o verificare anti-plagiarism a codului sursa. Conturile de utilizator vor fi comunicate la seminar.

Fisa disciplinei pentru anul universitar 2017-2018

Fisa disciplinei in limba romana - PDF

Fisa disciplinei in limba engleza - PDF

Barem general de evaluare

Repartizare puncte seminar:

  • 20% din nota finala - lucrare laborator
  • 10% din nota finala - proiect laborator
  • 10% din nota finala - activitati seminar (teme, participare activa)
  • 60% din nota finala - test grila + examen oral la calculator

Pentru evaluarea generala sunt considerate urmatoarele:

  • Conform fisei de disciplina, evaluarea in examinare are ponderea de 60%, iar nota de seminar are ponderea de 40%. Nota finala = (60/100 * Nota_Examen) + (40/100 * Nota_seminar_laborator).
  • Pentru promovare nota din examinarea din sesiune trebuie sa fie minim 5, iar nota finala dupa ponderare (examen + seminar) sa fie minim 5 (cu rotunjire normala).
  • Proiectul individual sau in echipa este obligatoriu de sustinut ca si conditie necesara pentru promovabilitate.
  • Fiecare cadru didactic de la activitatea de seminar/laborator isi stabileste propria metoda de evaluare si ponderi interne, dar exista minim o lucrare pe parcusrul semestrului si un proiect, iar la final, cadrul didactic coordonator de curs primeste o nota de evaluare de la seminar cuprinsa intre 0 (Absent) si 10.
  • Conditii obligatorii pentru promovarea examenului:
    • pentru toate punctele de evaluare (inclusiv nota 5) ca sa existe implementarea atat a elementelor cerute, cat si exemplificarea pentru apelul lor in functia "main()" / metode apeloatare. Tot obligatoriu, pentru fiecare punct din barem, este INEXISTENTA eroriLOR de compilare si link-editare a solutiei. De asemenea, pentru fiecare punct este obligatorie si necesara abilitatea de a lucra in mediu Visual Studio .NET si de a depana programe - intelegerea stivei de proces si segmentelor de date, precum si vizualizarea variabilelor in mediu la momentul depanarii. In evaluarea la examen cadrele didactice pot cere studentului evaluat sa reimplementeze oricare punct din biletul de examinare, avand ecranul gol in proiectul dezvoltat (inclusiv pentru nota 5).
    • definire completă de clasă si instantiere de obiecte in functie apelatoare "main()". Clasele complete au membrii - câmpuri private cu extensie în memoria dinamică - trebuie implementare de constructor default şi cu parametri, constructor de copiere, destructor şi supra-încărcarea „operatorului =”.
    • supraîncărcarea operatorilor unari (++,--, etc.), binari (+, -, etc.) cât şi a celor care implică implementarea operatorilor „friend”.
    • lucru cu fluxuri de octeţi (stream) pentru procesarea fişierelor/consolei + serializarea/deserializarea obiectelor / instanţelor din clase.
    • Implementarea de mecanisme de moştenire / derivare şi clase abstracte plus „interfeţe” (clase cu metode/funcţii virtuale pure) inclusiv cu implementare de polimorfism „pur”.
    • Implementare de clase şi funcţii template / „şablon”.
    • Utilizarea de clase pentru structuri de date standard (STL – Standard Template Library).
    • *optional: se evalueaza inclusiv elemente de tipul Static şi dinamic „cast”, mecanisme de tip try-catch, optmizarea utilizării de memorie (evitarea „memory leak”-urilor şi a „dangling-pointer”-ilor) şi a vitezei de execuţie.

Bibliografie

Sursele principale pentru pregatirea examenului sunt resursele bibliografice [SMEU02] si [SMEU01]. Se recomanda studierea si implementarea in programe scrise, compilate si rulate pe calculator a urmatoarelor:

Resurse seminar

Structura materiei pe seminarii
  1. Recapitulare pointeri, concept, pointeri la functii;
  2. Referinte, Macrodefinitii, Transferul parametrilor pentru subprograme, clase, concept, incapsulare, atribute, metode;
  3. Constructori, Destructor;
  4. Constructor copiere, supraincarcare operator =;
  5. Supraincarcare operatori (<<, >>, +, -, *, /, ++, --);
  6. Supraincarcare operatori (+=, [], ( ), !, ->, new, delete, cast);
  7. Derivare/Mosternire
  8. Functii virtuale, supradefinire, mostenire multipla
  9. Clase abstracte, interfete, mecanismul try-catch, domenii de nume;
  10. Operatii I/O orientate pe stream
  11. Clase template, concept, implementare, specializare
  12. STL (Standard Template Library), containere, ieratori si algoritmi
  13. STL (Standard Template Library), RTTI (Run Time Type Identification

Exemplu de clasa implementata in C++

Evaluare seminar

Lucrarea este data la calculator:
  • Nota 1 - Sa se creeze un proiect in mediul Microsoft Visual Studio .NET care sa nu genereze erori la compilare
  • Nota 3 - Sa se defineasca clasa X ce contine diferite atribute (inclusiv constante sau statice) dintre care unul este in mod obligatoriu un pointer (char* sau int *)
  • Nota 4 - Sa se defineasca pentru clasa X constructori (implicit si diferite forme cu parametri) si functia destructor
  • Nota 5 - Sa se defineasca pentru clasa X constructorul de copiere si o interfata publica pentru un atribut privat al clasei
  • Nota 6 - Sa se supraincarce pentru clasa X operatorul = fara a avea memory leaks
  • Nota 7 - Sa se supraincarce operatorul << / >> pentru clasa X
  • Nota 8 - Sa se supraincarce operatorul Y2 pentru clasa X
  • Nota 9 - Sa se supraincarce operatorul Y3 pentru clasa X
  • Nota 10 - Sa se exemplifice elementele implementate in programul principal. Sa fie utilizat Debugger-ul pentru a vizualiza memoria rezervata datelor si pentru a urmari apelurile diferitelor metode

ATENTIE !!! Dupa fiecare etapa, programul trebuie sa compileze si sa ruleze. In caz contrar, se considera neindeplinit primul punct din evaluare.

Operatori luati in considerare: =, ++ si -- in cele 2 forme (post si prefixata), [] (indexare), +,-,*,/, +=, -+, *=,>> si << (stream-uri pentru lucrul cu consola), !, cast la orice tip (implicit si explicit), () (functie), >, <. >=, <=, ==

Data exacta a lucrarii va fi stabilita in saptamana 7 - 8.

Resurse seminar & curs din ani anteriori

Cristian Toma

Mihai Doinea

Cristian CIUREA

Claudiu Vinte