This shows you the differences between two versions of the page.
pa:laboratoare:laborator-00 [2021/03/02 21:46] darius.neatu [De ce PA?] |
pa:laboratoare:laborator-00 [2022/03/07 16:13] (current) darius.neatu [Debugging] |
||
---|---|---|---|
Line 1: | Line 1: | ||
====== Laborator 00: Intro to PA ====== | ====== Laborator 00: Intro to PA ====== | ||
- | Responsabili / autori: | ||
- | * [[neatudarius@gmail.com|Darius-Florentin Neațu (2017-2021)]] | ||
- | * [[radunichita99@gmail.com | Radu Nichita (2021)]] | ||
- | * [[cristianolaru99@gmail.com | Cristian Olaru (2021)]] | ||
- | * [[mirunaelena.banu@gmail.com | Miruna-Elena Banu (2021)]] | ||
- | * [[maraioana9967@gmail.com | Mara-Ioana Nicolae (2021)]] | ||
- | |||
> PA = Proiectarea Algoritmilor | > PA = Proiectarea Algoritmilor | ||
===== De ce PA? ===== | ===== De ce PA? ===== | ||
Line 12: | Line 5: | ||
==== Ce este un algoritm? ==== | ==== Ce este un algoritm? ==== | ||
+ | |||
O succesiune determinată de pași care prelucrează datele de intrare pentru a obține datele de ieșire dorite. | O succesiune determinată de pași care prelucrează datele de intrare pentru a obține datele de ieșire dorite. | ||
- | ==== De ce ne trebuie algoritmi? ==== | + | |
- | Toate aplicațiile au un scop care poate fi atins folosind diverse metode: logica aplicației este împachetă sub diverși algoritmi specifici. | + | {{:pa::new_pa:algo.png?500 |}} |
==== De ce avem nevoie de algoritmi eficienți? ==== | ==== De ce avem nevoie de algoritmi eficienți? ==== | ||
Line 23: | Line 18: | ||
> "Pentru că scrie în orar." (Radu Nichita, 2021) | > "Pentru că scrie în orar." (Radu Nichita, 2021) | ||
> "Pentru că m-a pus mama să termin ACS." (Cristian Olaru, 2021) | > "Pentru că m-a pus mama să termin ACS." (Cristian Olaru, 2021) | ||
+ | > "Pentru că nu există seriale pe Netflix mai lungi decât laburile lui Darius." (Miruna Banu, 2021) | ||
> "Gigel be with you!" (Darius-Florentin Neațu, 2017) | > "Gigel be with you!" (Darius-Florentin Neațu, 2017) | ||
Line 33: | Line 29: | ||
===== Ce vom face? ===== | ===== Ce vom face? ===== | ||
- | Vom aprofunda elementele fundamentale necesare rezolvării fiecărei clase de probleme analizate, prezentând mai mulți algoritmi pentru fiecare problemă studiată și evidențiând pe cei optimi (eficienți). | + | Vom aprofunda elementele fundamentale necesare rezolvării fiecărei clase de probleme analizate, prezentând mai mulți algoritmi pentru fiecare problemă studiată și evidențiind pe cei optimi (eficienți). |
Pornind de la aceste elemente, vom accentua punctele de interes identificate, descoperind șabloane de rezolvare și modalități de construire a soluțiilor pentru o problemă. | Pornind de la aceste elemente, vom accentua punctele de interes identificate, descoperind șabloane de rezolvare și modalități de construire a soluțiilor pentru o problemă. | ||
Line 40: | Line 36: | ||
===== Limbaje de programare ===== | ===== Limbaje de programare ===== | ||
- | La PA este permisă folosirea limbajelor de programare: **C++** / **Java** / **C**. Din cauză că aproape orice algoritm studiat se bazează pe folosirea unor stucturi de date implementare, **NU** recomandăm folosirea limbajului C, întrucât bibliotecile standard nu au aceste structuri. | + | La PA este permisă folosirea limbajelor de programare: **C++** / **Java** / **C**. Din cauză că aproape orice algoritm studiat se bazează pe folosirea unor structuri de date implementate deja, **NU** recomandăm folosirea limbajului C, întrucât bibliotecile standard nu le conțin. |
===== De ce C++? ===== | ===== De ce C++? ===== | ||
Line 49: | Line 45: | ||
===== De ce nu alte limbaje? ===== | ===== De ce nu alte limbaje? ===== | ||
- | Considerăm că aceste 2 limbaje sunt 2 limbaje foarte folosite și că prin funcționalitățile oferite studentul se poate concentra efectiv pe implementarea algoritmilor și nu pe alte aspecte legate de limbaj. | + | Considerăm că acestea sunt 2 limbaje foarte folosite și că, prin funcționalitățile oferite, studentul se poate concentra efectiv pe implementarea algoritmilor și nu pe alte aspecte legate de limbaj. |
===== Coding Style ===== | ===== Coding Style ===== | ||
Line 60: | Line 56: | ||
+ | ===== Debugging ===== | ||
+ | Pe parcursul semestrului, vă poate fi util să știți cum se folosește un debugger pentru a găsi probleme într-un mod rapid. Vă recomandăm articolul [[https://ocw.cs.pub.ro/courses/programare/tutoriale/debugging | PC@Debugging]] pentru a vă reaminti de cum folosim GDB atât din CLI cât și prin intermediul unui IDE. | ||
====== Desfășurare laborator ===== | ====== Desfășurare laborator ===== | ||
- | În prima săptămână se va clone repo-ul de laborator conform instrucțiunilor de pe pagina [[https://ocw.cs.pub.ro/courses/pa/laboratoare/pa-lab |pa-lab]]. În fiecare săptămână se rulează comanda "git pull" pentru obținerea scheletului actualizat înainte de fiecare laborator. | + | În prima săptămână se va clona repo-ul de laborator conform instrucțiunilor de pe pagina [[https://ocw.cs.pub.ro/courses/pa/laboratoare/pa-lab |pa-lab]]. În fiecare săptămână se rulează comanda "git pull" pentru obținerea scheletului actualizat înainte de fiecare laborator. |
- | + | ||
- | În acest an, laboratorul valorează **0p**. Acesta se desfășoară sub formă de seminar: asistentul prezintă algoritmii studiați și rezolvă probleme împreună cu studenții. | + | |
Secțiunile de **Exerciții ** / **Bonus** / **Extra** reprezintă seturi de probleme grupate pe nivele de dificultate (de la ușor la greu). Recomandăm rezolvarea tuturor exercițiilor propuse, pentru înțelegerea algoritmilor studiați. | Secțiunile de **Exerciții ** / **Bonus** / **Extra** reprezintă seturi de probleme grupate pe nivele de dificultate (de la ușor la greu). Recomandăm rezolvarea tuturor exercițiilor propuse, pentru înțelegerea algoritmilor studiați. |