Introducere în programare - curs și laborator - suport electronic

(C) 2024-2025 Bogdan Pătruț

Proiecte

Meniu

Curs 1 | Curs 2 | Curs 3 | Curs 4 | Curs 5 | Curs 6 | Curs 7 | Curs 8 | Curs 9 | Curs 10 | Curs 11 | Curs 12 | Curs 13 | Curs 14
Laborator 1 | Laborator 2 | Laborator 3 | Laborator 4 | Laborator 5 | Laborator 6 | Laborator 7 | Laborator 8 | Laborator 9 | Laborator 10 | Laborator 11 | Laborator 12 | Laborator 13 | Laborator 14

Pagina principala |

ACEASTA PAGINA ESTE IN LUCRU.

A. Lista de proiecte pentru anul universitar 2024-2025

Mai jos sunt date proiectele ce vor fi asignate echipelor de studenți din anul I, care fac pentru prima dată aceasta disciplină, nu sunt repetenți, nu repetă disciplina, nu sunt reînmatriculați sau cursanți sau studenti Erasmus sau se încadrează în vreo alfel de situație specială.

Lista de proiecte se actualizează permanent.

Studenții care, dintr-un motiv sau altul, repetă disciplina, precum și cursanții si studentii reinmatriculati vor face singuri proiectul sau vor prezenta proiectul realizat de ei anul trecut.
Ei sunt rugati sa ia legatura cu titularul de curs, pentru a nu fi inclusi intr-o echipa cu studentii din anul I, care fac pentru prima data acest proiect. Pentru fiecare proiect sunt precizate cateva elemente simple, descrierea completă a proiectului facandu-se verbal, de catre titularul de curs, către fiecare grup de echipe în parte. De asemenea, colaboratorii pot veni cu cerințe suplimentare privind complexitatea proiectului și modul de implementare.

1.Gobblet Gobblers

Implementați o variantă 2D / 3D a jocului Gobblet Gobblers.
Indicații
Barem

2. Jump In

Implementați o variantă 2D / 3D a jocului Jump In
Indicații
Barem

3. Pirates Hide and Seek

Implementați (2D) jocul Pirates - Hide and Seek.
Indicații
Barem

4. Bridg-It

Proiectul constă în implementarea unui joc de strategie "Bridg-It", descris mai jos.
Indicații Jocul este descris în cartea Martin Gardner - Entertaining Mathematical Puzzles, începând cu pagina 59 (VEZI pagina 35 in fisierul PDF).
Vedeți aici un început de joc: click aici.
Barem

5. Împărţirea careului

Implementați un joc pentru jocul Împărţirea careului descris mai jos.
Indicații Jocul este descris sub forma rezolvării de probleme, la pagina 121 în cartea Nicolae Oprișiu - Mai în glumă, mai în serios Click aici pentru un început de joc.
Barem

6. Raliu auto

Implementați un joc Raliu auto conform indicațiilor de mai jos.
Indicații Jocul este descris în cartea Olimpiada jocurilor raționale de Nicolae Oprișiu. Vedeți aici un început de joc.
Barem

7. Segmente

Implementați un joc Segmente, așa cum este descris el în cartea de mai jos.
Indicații Vezi jocul descris în cartea „Olimpiada jocurilor raționale” de Nicolae Oprișiu.
Barem

8. Bonol sau L-Game

Implementați un joc de strategie intre doi jucatori, ca cel descris mai jos.
Indicații Vedeți jocul la pagina 46 din cartea lui Gheorghe Paun: Intre matematica si jocuri
sau aici: https://en.wikipedia.org/wiki/L_game
Vedeţi aici câteva indicaţii: http://www.chokleong.com/2015/08/03/edward-de-bono-l-game/
Vedeți aici un început de joc: click aici.
Barem

9. Război în 8

Implementați un joc Război în 8, așa cum este descris el în cartea de mai jos.
Indicații Vezi descrierea jocului în cartea „Olimpiada jocurilor raționale” de Nicolae Oprișiu.
Aveți aici un început de joc.
Barem

10. Cinci în linie

Implementați un joc Cinci în linie, așa cum este descris el în cartea de mai jos.
Indicații Vezi jocul descris în cartea Olimpiada jocurilor raționale” de Nicolae Oprișiu.
Barem

11. Colțul negru

Proiectul constă în implementarea unui joc de strategie Colțul negru, așa după cum este descris acesta în cartea de mai jos.
Indicații Olimpiada jocurilor raționale„ de Nicolae Oprișiu, începând cu pagina 17.
Vedeți aici un mic început de joc:click aici.
Piesele sunt aici: jocuri1/0.jpg, jocuri1/1.jpg si jocuri1/2.jpg.
Barem

12. Câinii și vulpea

Implementați un joc de strategie între doi jucători Câinii și vulpea, ca cel descris mai jos.
Indicații Vezi jocul descris în cartea „ Olimpiada jocurilor raționale” de Nicolae Oprișiu.
Vedeti aici un inceput de joc: click aici.
Barem

13. Smart Farmer

Proiectul constă în implementarea 2D a jocului Smart Farmer, așa cum este el descris mai jos.
Indicații Jocul este descris mai jos:
Barem

14. Solitarul

Implementați un joc de strategie între doi jucători, ca cel descris în cartea  la pagina 133 si continuand pe paginile urmatoare.
Informații Următoarea lucrare de masterat se refera la jocul Solitarul si altele similare: https://diglib.tugraz.at/download.php?id=5b6d297eea357&location=browse&fbclid=IwAR3FSuFUkcCTI5TKCvuhkxXWyfAScfW0Xt5lOExBmfBkhXUUGQ-dnihPNM0
Vedeți aici un început de joc.
Barem

15. Eval - Evaluator matematic și reprezentarea grafică a arborelui asociat expresiei

Proiectul presupune implementarea în C/C++ (fără POO) a unui evaluator de expresii algebrice pentru un limbaj de programare (de exemplu C).
Apoi, plecând de la expresia algebrică, se va crea arborele asociat acestei expresii algebrice, iar apoi acesta va fi reprezentat grafic, cu diferite opțiuni (inclusiv mutarea nodurilor cu mouse-ul), pe ecranul calculatorului.
Informații
Barem

16. Grafic - Graficul unei funcții

Plecând de la expresia unei funcții, dată sub formă de șir de caractere, se va face un program care să deseneze graficul funcției pe un anumit interval, punând în evidență eventualele puncte de discontinuitate, asimptotele verticale, orizontale, punctele de inflexiune etc.
Indicații
  • Atenție! Se va folosi evaluarea funcției într-un punct, creându-se asttfel un evaluator matematic (vezi și proiectul Eval).
  • Observație. Se poate pleca de la explicațiile din programul de la pagina 103 din lucrarea „Învățați limbajul Pascal în 12 lecții”https://www.edusoft.ro/pascal12/cap5_pascal12.pdf
  • De asemenea, în capitolul 12 al aceleiași cărți este și un program cu graficul unei funcții.
  • De asemenea, vezi cursul și laboratorul 6.
    Barem

    17. Deriv - Derivare formală (simbolică)

    Se dă o funcție (sub forma unui șir de caractere) și se cere să se obțină derivata sa simbolică (formală).
    Indicatii Se poate transforma expresia funcției în forma postfixată, se creează arborele binar asociat expresiei, se obține din acesta arborele derivatei și apoi se generează noua expresie, dupa câteva simplificări ale arborelui derivat). Vezi si proiectul Eval - Evaluator de expresii algebrice

    Videoclipuri cu explicatii
    Vezi si pagina 169 din lucrarea „Învățați limbajul Pascal în 12 lecții”: https://www.edusoft.ro/pascal12/cap8_pascal12.pdf
    Barem

    18. InterSchem - Vizualizator și interpretor de scheme logice

    Să se realizeze un vizualizator și interpretor de scheme logice, precum Interschem.
    Indicatii Vor fi oferite detalii ulterior. Ajutor:
    electron1/trasare_legaturi.txt
    eval1/evaluator1.txt
    Barem

    19. Electron - Vizualizator de scheme electronice

    Să se proiecteze un vizualizator de scheme electronice, ce conține tranzistori, diode, condensatori, surse de alimentare etc. Dacă se fac și verificări și calcule pe această schemă electronică, cu atât mai bine.
    Indicatii Vezi folderul acesta: aici
    Vor fi oferite detalii si ajutor la consultatii online.
    Un mic inceput este aici: click.
    Descarcati si fisierele PS (care pot fi vizualizate cu Notepad, sunt fisire text pur si simplu, care contin descrierile unor piese).
    Barem

    20. BibMat - Bibliotecă de lucru cu tablouri (vectori și matrice)

    Se vor implementa funcții de operare cu tablouri uni- și bidimensionale. Atenție! Toate operatiile vor fi vizualizate grafic în timp ce se desfășoară.
    Indicatii Un punct de plecare pentru BibMat:: aici
    Exemple de operatii ce pot fi implementate:
    Barem

    21. BibLis. Bibliotecă de operații cu liste

    Proiectul presupune programarea în C a unui unei biblioteci de funcții pentru operații cu liste implementate dinamic (simplu înlănțuite, dublu-înlănțuite, stive, cozi).
    Atenție! Toate operatiile vor fi vizualizate grafic în timp ce se desfășoară.
    Se va urmări îndeaproape teoria legată de aceste structuri de date.
    Barem

    22. Calculator în limba română

    Indicatii Programul va putea face calcule cu mai multe expresii de tipul operand1 operator operand2, în care operatorii sunt cei aritmetici (+,-,*,/), plecând de la o propoziție interogativă în limba română, de genul "Cat este suma dintre 3 si patru?" sau "Care este rezultatul inmultirii lui zece cu paisprezece?".
    Ajutor aici: eval1/evaluator1.txt
    Detalii, idee de rezolvare pentru un singur operator:
    Input: un șir de caractere, conținând o întrebare în limba română despre o operație de tipul menționat.
    Output: un șir de caractere, reprezentând rezultatul operatiei, scris cu cuvinte, in limba romana
    Restrictii: operanzii si rezultatul operatii sunt numere naturale intre 0 si 100.000.000
    Algoritmul
    Pentru a rezolva această problemă, vom lua un exemplu: "Care este rezultatul inmultirii lui zece cu paisprezece?"
    1. se desparte propoziția în cuvinte, apoi se execută următoarele:
    2. cuvintele inutile se elimină (de exemplu, "Care", "este", "rezultatul", "lui", "cu");
    3. celelalte cuvinte se aduc la o forma standard (de exemplu, "inmultirii" -> "*", "zece" -> "10", "paisprezece" -> "14");
    4. vectorul de trei cuvinte obținut se pune în ordine infixată (de exemplu, ["10", "*","14"]);
    5. se evalueaza expresiă, transformând șirurile de cifre în numere și ținând cont de operator; astfel se obține o valoare numerică (de exemplu, 140);
    6. se transformă valoarea numerică în cuvânt în limba română (de exemplu, "o suta patru zeci").
    Barem

    23. My Commander

    IndicatiiSe va realiza un program de tip Total Commander, Norton Commander, Midnight Commander, care va permite afisarea continutului a doua foldere din calculator (lista, arbore), crearea de noi foldere, copierea de fisiere, de foldere, stergerea lor, mutarea lor etc. Se vor face si vizualizarea fisierelor de tipuri de baza (txt, imagini etc.). Programul va permite selectarea, deselectarea de fisiere, pe baza de filtre, sortarea dupa diferite criterii, cautarea lor, comenzi rapide etc.
    Barem

    24. Vizualizator de formule matematice

    Indicatii Pe baza unui limba predefinit, programul va afisa expresii matematice, cu operatorii de baza, dar si cu indici, sume, produse, radicali, limite, matrice etc.
  • Pasul 1: Se transforma expresia, citita de la tastaura ca un sir de caractere, intr-un tablou unidimensional de siruri de caractere: de exemplu din "(x+3.26)/sin(x^10)" se va obtine tabloul cu elementele "(", "x", "+", "3.26",")","/","sin","(","x","^","10",")".
  • Pasul 2: Se verifica daca tabloul generat la pasul 1 contine o expresie corecta, din punct de vedere sintactic. Acest lucru se face in doua etape: verificarea corectitudinii deschiderii/inchiderii parantezelor, verificarea numaruluid de paranteze deschise/inchise. Si apoi se clasifica itemii (tokenii) obtinuti la primul pas pe categorii, iar dupa fiecare categorie de item pot urma doar anumite categorii de itemi (de exemplu, dupa categoria in care ar intra + si - pot urma doar variabile, constante, paranteza deschisa, functii, dar nu si altceva)
  • Pasul 3: Daca expresia este corecta, dupa pasul 2, atunci se va obtine arborele asociat expresiei. Un ajutor in acest sens este aici:
    https://www.edusoft.ro/pascal12/cap5_pascal12.pdf capitolul 5, la pagina 103.
  • Pasul 4: Se parcurge recursiv, in preordine, arborele asociat expresiei si se reprezinta intr-un dreptunghi. Explicatii video aici:
  • Barem:

    25. Analizor sintactic pentru limba romana (CKY)

    Indicatii: Vezi aplicatia Parser din cap. 6 din de aici: click aici
    Vezi aici coduri C++ pentru a avea un punct de start: click aici
    Barem:

    26. Generator de diagrame Nassi-Schneiderman

    IndicatiiTrebuie ca plecand de la un text ce contine un pseudocod sa obtineti desenul diagramei, vezi Wikipedia in limba germana si in engleza.
    Barem:

    27. Editor/vizualizator 3D

    IndicatiiVezi capitolul 1 din cartea asta.
    Barem

    28. Algoritmica grafurilor

    Indicatii Editor de grafuri si vizualizarea rezolvarii principalelor probleme de teoria grafurilor.
    Barem

    29. Ceas digital si analogic

    Indicatii Un ajutor si pentru cei care au de facut Ceasul analogic si digital: aici si aici
    Barem

    30. Vizualizator de imagini BMP etc.

    31. Morphing (de linii poligonale inchise)

    Indicatii Vezi capitolul 11 din cartea Invatati limbajul Pascal in 12 lectii:click aici
    Barem

    32. Quoridor

    Indicatii Implementarea 2D a jocului Quoridor.
    O lucrare de licenta despre Quoridor: https://docplayer.net/14902978-Mastering-quoridor-lisa-glendenning-thesis-submitted-in-partial-fulfillment-of-the-requirements-for-the-degree-of.html
    Barem

    33. Coduri Huffman, Algoritmul LZW (Lempel-Ziv-Welch) - Vizualizator de fisiere tip arhiva (TAR, ZIP)

    Indicatii
    Barem

    34. Editor de texte

    IndicatiiRealizarea unui editor simplu de texte, de genul Notepad
    Barem:

    35. Elisa

    IndicatiiCrearea unui terapeut bazat pe sabloane, ca la inceputurile Inteligentei Artificiale:
    https://en.wikipedia.org/wiki/ELIZA.
    Vezi aici un schelet de aplicatie:
    https://docs.google.com/document/d/1f-WtvGDanuLMUIOxYEowxs6C_GYHOogXOAeA0g86tbk/edit?pli=1
    Barem

    36. Joc cu Mario

    Indicatii Vezi aici un schelet de joc: mario/
    Barem

    Vezi aici explica?ii detaliate: https://docs.google.com/document/d/1f-WtvGDanuLMUIOxYEowxs6C_GYHOogXOAeA0g86tbk/edit?pli=1

    B. Resurse generale pentru realizarea proiectelor

    În dreptul fiecărui proiect sunt/vor fi link-uri către resurse utile.
    Totuşi, iată câteva resurse generale:

    C. Evaluarea proiectelor pentru anul universitar 2023-2024

    Proiectele trebuie prezentate până la finalul celor 14 săptămâni, preferabil în săptămâna a XIII-a.
    Proiectele vor fi prezentate titularului de curs (domnului Bogdan Pătruț) și profesorului colaborator de la laborator.
    Fiecare student din echipă dintr-un proiect primește, astfel, două note. Notele sunt individuale (fiecare student are nota lui, în funcție de complexitatea proiectului (vezi mai jos), dar și de munca depusă la proiect, de răspunsurile la întrebări (care pot fi și întrebări din cod, cerința de a modifica bucăți din cod pentru a schimba comportamentul etc) și așa mai departe.
    Fiecare echipă va pregăti și un mic film cu felul în care rulează proiectul (3-5 minute).
    Studenții care, dintr-un motiv sau altul, repetă disciplina, precum și cursantii și studenții reînmatriculați vor realiza singuri proiectul sau vor prezenta (din nou) proiectul realizat de ei anul trecut.

    Criterii generale de evaluare a proiectelor

    Criteriile sunt orientative și punctajele sunt maxime, deoarece profesorii pot interveni cu cerințe suplimentare pe măsură ce proiectele se dezvoltă.
    Nota fiecărui studentul depinde și de efortul depus, de munca în echipă, de colaborarea cu colegul de echipă, de răspunsuri la întrebări din cod, de felul în care este prezentat proiectul și altele.

    ATENȚIE!
    1. Dacă membrii unei echipe realizează 2/3 proiecte, în loc de unul singur, în comun: toți studenții echipei iau nota 1.
    2. Dacă nu lucrează ambii studenți (sau toți trei) la proiect: toți studenții echipei iau nota 1.
    3. Dacă nu există colaborare reală între membrii unei echipe: toți studenții echipei iau nota 1.
    4. Dacă se folosesc elemente suplimentare care nu fac obiectul acestui curs (STL, OOP etc.): toți studenții trebuie să cunoască aceste elemente și să fie capabili să răspundă la întrebări din domeniu, altfel primesc nota 1.
    5. Dacă se lucrează în alte limbaje de programare decât C/C++, un mediu de dezvoltare care are multe elemente ”prefabricate”: nota 1
    6. Dacă se lucrează un o bibliotecă grafică performantă (OpenGL, GLUT etc.): nota 1
    7. Dacă se copiază de pe Web, de la studenții din anii anteriori sau de la altă persoană, sau se copiază tutoriale de pe Youtube: nota 1
    8. Dacă nu se realizează videoclipul de prezentare: se scad 6p din nota finală.
    9. Dacă se răspunde greșit la întrebări, se scade câte 1p pentru fiecare greșeală făcută. Pot fi scăzute până la 6p.
    10. Dacă unul dintre studenți renunță la facultate, coechipierul/coechipierii ne anunță imediat.