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/20 00:02] 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 unui algoritm are ca scop estimarea volumului de resurse de calcul necesare pentru execuția algoritmului. Prin resurse se înțelege: | + | ===== 4. GDB ===== |
| - | • //Spațiul de memorie// necesar pentru stocarea datelor pe care le prelucrează algoritmul.\\ | + | |
| - | • //Timpul necesar pentru execuția// tuturor prelucrărilor specificate în algoritm. | + | |
| - | Această analiză | + | GDB (GNU Debugger) |
| - | Este așadar suficient sa se contorizeze doar anumite tipuri | + | Exemplu |
| + | < | ||
| + | gcc -Wall -g my_file.c -o my_file.exe | ||
| + | gdb my_file.exe | ||
| + | </ | ||
| - | **Exemplul 1 - Suma a n numere** \\ | + | **Câteva comenzi utile în timpul depanării:**\\ |
| - | Consideram problema calculului sumei . Dimensiunea acestei probleme poate fi considerata // | + | • **list** - arată conţinutul unui fişier |
| - | problemei. | + | • **run** - porneşte executia\\ |
| - | {{ : | + | • **n** (sau **next**) - trece la instrucţiunea următoare |
| + | • **s** (sau **step**) - intră în apel de funcţie pentru a inspecta execuţia\\ | ||
| + | • **b** (sau **break** sau **breakpoint**) - setează un breakpoint ce va forţa oprirea execuţiei în punctul respectiv\\ | ||
| + | • **continue** - continuă execuţia până la următorul breakpoint\\ | ||
| + | • **fin** (sau **finish**) - iese din funcţia curentă\\ | ||
| + | <note important> | ||
| - | **Exemplul 2 - Înmulțirea | + | Exemple de identificare |
| - | Consideram problema determinarii produsului a doua matrici: A de dimensiune m×n si B de dimensiune n×p. In acest caz dimensiunea problemei este determinata de trei valori: | + | < |
| - | In practica nu este necesara o analiza atat de detaliata ci este suficient sa se identifice | + | breakpoint my_function |
| - | operatia dominantă si sa se estimeze numarul de repetari ale acesteia. Prin operatie dominanta se ıntelege operatia care contribuie cel mai mult la timpul de executie a algoritmului si de regulă este operatia ce apare ın ciclul cel mai interior. În exemplul | + | breakpoint 13 |
| + | breakpoint *0x401377 | ||
| + | |||
| + | breakpoint my_file: | ||
| + | breakpoint my_file: | ||
| + | </ | ||
| - | {{ : | ||
| ---- | ---- | ||
| ===== 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:// | ||