Școala Româno-Britanică
Modulul 1 Clasa a X-a | C++

Proiect - Modulul 1: Mulțimea, model conceptual neliniar

Tema proiectului: Aplicație C++ de gestionare a unei mulțimi de valori cu operații complete

Rezultat practic: construiești un program C++ care citește o mulțime de valori, o afișează sortată și realizează toate operațiile cu mulțimi: reuniunea, intersecția, diferența, apartenența, incluziunea și egalitatea (Competențele 1.1 - 6.1).

Competențele 1.1 - 6.1 Termen de predare: stabilit de profesor
CERINȚELE PROIECTULUI

Descrierea temei

Realizează o aplicație C++ care permite gestionarea unei mulțimi de valori naturale (valori între 1 și 100) cu operații complete: introducerea valorilor, afișarea mulțimii sortate, reuniunea, intersecția, diferența, testul de apartenență, verificarea incluziunii și a egalității cu o a doua mulțime.

Structura recomandată a programului

  • citirea primei mulțimi A (n și n valori) și marcarea cu vector de prezență
  • citirea celei de-a doua mulțimi B (m și m valori)
  • afișarea fiecărei mulțimi sortate
  • afișarea reuniunii, intersecției și diferenței A - B, sortate
  • testul de apartenență pentru o valoare x citită de la tastatură
  • verificarea incluziunii A ⊆ B și a egalității A = B

Cerințe pe niveluri de note

Nota 5-6: Funcționalitate de bază

  • programul citește corect n și n valori, apoi m și m valori
  • marchează elementele în vectori de prezență
  • afișează fiecare mulțime sortată crescător
  • afișează reuniunea A ∪ B sortată

Nota 7-8: Validări + toate operațiile

  • toate cerințele de la nota 5-6, realizate corect
  • validarea valorilor citite (1 ≤ valoare ≤ 100, n ≤ 100); la date invalide se afișează un mesaj și se reia citirea
  • afișarea intersecției A ∩ B și a diferenței A - B, sortate
  • testul de apartenență x ∈ A pentru o valoare citită
  • afișările sunt etichetate clar (exemplu: "Reuniune:", "Intersectie:", "Diferenta A - B:")

Nota 9-10: Modularizare, eficiență, documentație

  • toate cerințele de la nota 7-8, realizate corect
  • modularizare cu funcții: câte o funcție pentru citire, afișare, reuniune, intersecție, diferență, apartenență, incluziune, egalitate
  • verificarea incluziunii A ⊆ B și a egalității A = B cu steag boolean
  • eficiență: algoritmi pe vectori de prezență, O(n + V), fără parcurgeri inutile
  • documentație: comentarii semnificative în cod și un scurt raport scris (enunț, proiectarea algoritmilor în pseudocod, exemple de rulare, concluzii)

Regulă anti-AI - Susținere orală obligatorie

Nota se acordă DOAR în urma susținerii orale în fața profesorului, unde elevul explică codul linie cu linie și răspunde la întrebări despre funcționarea programului.

Prezentarea orală durează aproximativ un sfert de oră și include:

  • explicarea fiecărei structuri de date și a fiecărei funcții din program
  • demonstrarea programului pe cel puțin două exemple proprii
  • răspunsuri la întrebări despre alegerea algoritmilor și despre posibile modificări

Un cod care nu poate fi explicat de autor nu primește punctaj, indiferent de cât de corect funcționează.

Criterii de notare

Criteriul Pondere Ce se verifică
Corectitudinea funcțională 40% programul compilează și produce rezultate corecte pe toate exemplele
Completitudinea cerințelor 25% sunt realizate toate cerințele nivelului de notă vizat
Calitatea codului 20% modularizare, nume sugestive, comentarii, eficiență
Susținerea orală 15% explicarea codului linie cu linie și răspunsurile la întrebări

Termen și condiții de predare

  • Termen: data stabilită de profesor în clasă; proiectele predate după termen pierd un punct.
  • Forma de predare: fișier sursă .cpp (denumit proiect_modul1.cpp) plus raportul scris pentru nota 9-10, trimise prin platforma clasei.
  • Lucru individual: fiecare elev prezintă propriul program; programele identice sau asemănătoare suspect de mult nu primesc punctaj.
  • Evaluare: notarea are loc în timpul susținerii orale, conform baremului de mai sus.

Sfat: începe de la cerințele de nota 5-6, testează programul pe exemple mici, apoi adaugă treptat validările, operațiile rămase și funcțiile. Revizuiește sinteza modulului înainte de a începe.