Aici sunt prezentate diferențele dintre versiunile selectate și versiunea curentă a paginii.
Ambele părți revizuirea anterioară Versiuni anterioare Urmatoarea versiune | Versiuni anterioare | ||
laboratoare:laborator-01 [2017/02/19 22:32] florina_elena.barbu [4. Calculul complexității algoritmilor] |
laboratoare:laborator-01 [2018/02/21 16:32] (curent) mihai.iacov [Reguli esenţiale pentru promovarea laboratorului] |
||
---|---|---|---|
Linia 1: | Linia 1: | ||
====== Laborator 01: Introducere ====== | ====== Laborator 01: Introducere ====== | ||
- | ===== 1. Obiectivele laboratorului pe întreg semestrul===== | + | ===== 1. Reguli pentru laborator===== |
- | * familiarizarea cu structuri | + | Mai multe detalii pot fi găsite pe pagina [[informaii-generale: |
- | * liste | + | |
- | * stive | + | |
- | * cozi | + | |
+ | ==== Reguli esenţiale pentru promovarea laboratorului==== | ||
- | * introducere in algoritmi și tehnici de programare | + | * **MAXIM** 3 absenţe la laborator (**NU** se poate reface la alte grupe) |
- | | + | * **MINIM** jumătate din punctajul |
- | | + | |
- | | + | |
- | | + | |
- | | + | |
- | + | ||
- | + | ||
- | * introducere în teoria grafurilor | + | |
- | | + | |
- | * arbori binari, arbori minimi | + | |
- | * drumuri minime in graf (Dijkstra) | + | |
Linia 269: | Linia 257: | ||
* **$<** se expandează la prima cerință (la prima dependență) | * **$<** se expandează la prima cerință (la prima dependență) | ||
- | ---- | ||
- | ===== 4. Calculul complexității algoritmilor ===== | ||
- | Analiza complexității | + | ===== 4. GDB ===== |
- | • //Spațiul de memorie// necesar pentru stocarea datelor pe care le prelucrează algoritmul.\\ | + | |
- | • //Timpul necesar | + | GDB (GNU Debugger) este unealta standard pentru debugging (depanare) din GNU. Este portabil şi poate fi folosit, printre altele, pentru a detecta instrucţiunea ce determina blocarea |
+ | |||
+ | Exemplu | ||
+ | < | ||
+ | gcc -Wall -g my_file.c -o my_file.exe | ||
+ | gdb my_file.exe | ||
+ | </ | ||
+ | |||
+ | **Câteva comenzi utile în timpul depanării:**\\ | ||
+ | • **list** - arată conţinutul unui fişier (câteva rânduri, în jurul unui punct numit) | ||
+ | • **run** - porneşte executia\\ | ||
+ | • **n** (sau **next**) - trece la instrucţiunea următoare (fără a intra în apeluri de funcţii)\\ | ||
+ | • **s** (sau **step**) - intră în apel de funcţie | ||
+ | • **b** (sau **break** sau **breakpoint**) - setează un breakpoint ce va forţa oprirea execuţiei | ||
+ | • **continue** - continuă execuţia până la următorul breakpoint\\ | ||
+ | • **fin** (sau **finish**) - iese din funcţia curentă\\ | ||
+ | |||
+ | <note important> | ||
+ | |||
+ | Exemple de identificare a instrucţiunilor (la fel pentru list) - funcţie, rândul din fişier, adresa din memorie (eventual cu explicitarea fişierului): | ||
+ | < | ||
+ | breakpoint my_function | ||
+ | breakpoint 13 | ||
+ | breakpoint *0x401377 | ||
+ | |||
+ | breakpoint my_file: | ||
+ | breakpoint my_file: | ||
+ | </ | ||
- | Această analiză este utilă pentru a stabili dacă un algoritm utilizează un volum acceptabil de resurse pentru rezolvarea unei probleme. | ||
---- | ---- | ||
===== 5. Exerciții ===== | ===== 5. Exerciții ===== | ||
- | ==== Exercițiul 1 - Hello world (2p) ==== | + | ==== Exercițiul 1 - Hello world ==== |
- | ==== Exercițiul 2 - Makefile | + | Realizați un program un C/C++ care afișează mesajul //Hello, World// la ieșirea standard. |
- | ==== Exercițiul 3 - Makefile cu surse multiple | + | |
- | ==== Exercițiul 4 - ?? ==== | + | ==== Exercițiul 2 - Makefile |
+ | Realizați un fișier Makefile pentru programul de la exercițiul 1 astfel încat: | ||
+ | |||
+ | * la rularea comenzii '' | ||
+ | * la rularea comenzii '' | ||
+ | |||
+ | |||
+ | ==== Exercițiul 3 - Makefile cu surse multiple | ||
+ | |||
+ | |||
+ | |||
+ | ---- | ||
+ | ===== 6. Referințe ===== | ||
+ | - [[https:// | ||