Sunteți pe pagina 1din 3

Volumul II – Structuri de date și algoritmi

(Teorie și aplicații)

Cuvânt înainte 9

Capitolul 1. Despre algoritmi 11


1.1. re(Introducere) 11
1.2. Enunțul unei probleme, date, etapele rezolvării 14
1.3. Noțiunea de algoritm, caracteristici 19
1.4. Obiectele cu care lucrează algoritmii și operațiile permise 22
1.5. Complexitatea algoritmilor 23

Capitolul 2. Tablouri 27
2.1. Introducere 27
2.2. Citirea și afișarea unui vector 31
2.2.1. Citirea unui vector 31
2.2.2. Afișarea unui vector 33
2.2.3. Citirea/afișarea vectorilor folosind fișiere text 34
Miniproiect 39
2.3. Algoritmi fundamentali care lucrează cu vectori 40
2.3.1. Maxim, minim 40
2.3.2. Elemente distincte 44
2.3.3. Metode de sortare 48
A. Sortarea prin selectarea minimului (maximului) 49
B. Sortarea prin interschimbare (Bubble Sort) 52
C. Sortarea prin inserție 54
2.3.4. Interclasare 57
2.3.5. Căutare binară 61

5
2.4. Aplicații cu matrice 64
2.4.1. Citirea și afișarea matricelor 64
2.4.2. Interschimbarea liniilor 66
2.4.3. Spirala 68
2.5. Biblioteca NumPy 70

Probleme propuse 75

Capitolul 3. Introducere în recursivitate 78


3.1. Prezentare generală 78
3.2. Modul în care se realizează autoapelul 79
3.3. Mecanismul recursivității 80
3.4. Cum gândim un algoritm recursiv? 81
3.5. Aplicații recursive 83
3.5.1. Aplicații la care se transcrie o formulă recursivă 83
3.5.2. Recursivitate indirectă 89
3.5.3. Aplicații la care nu dispunem de o formulă de recurență 90

Probleme propuse 92
Indicații / rezolvări 95

Capitolul 4. Divide et Impera 99


4.1. Prezentare generală 99
4.2. Aplicații 100
4.2.1. Valoarea maximă din vector 100
4.2.2. Sortarea prin interclasare 101
4.2.3. Turnurile din Hanoi 103
4.3. Fractali 107
4.3.1. Lucrul în mod grafic 108
4.3.2. Curba lui Koch pentru un triunghi echilateral. Fulg de nea 111
4.3.3. Curba lui Koch pentru un pătrat 114
4.3.3. Arborele 118

Aplicație practică 120

Capitolul 5. Alte structuri de date 121


5.1. Structuri studiate anterior 121
5.2. Unde este struct (din limbajul C++)? 121
5.3. Structura de tip stivă 123
5.4. Structura de tip coadă. Modulul collections 129

6
5.5. Liste liniare 132
5.5.1. Mai mult despre structurile de date 132
5.5.2. Liste liniare 133
5.5.3. Liste liniare alocate secvențial 134
5.5.4. Liste liniare alocate înlănțuit 136

Capitolul 6. Tratarea erorilor 140

Capitolul 7. Direcții de cercetare – proiecte propuse 146


7.1. Scrie un articol – ajută-i pe alții și implicit pe tine! 146
7.2. Creează mici proiecte utile pentru cei din jur 147
7.3. Studiază în detaliu biblioteca Matplotlib 148
7.4. Prelucrarea imaginilor 151
7.5. Machine Learning 152
7.6. Prelucrarea video 153
7.7. Ajută un meseriaș! – proiect practic și util 154

Anexa 1. Tabelul codurilor ASCII 162


Anexa 2. Baze de numerație 163
Anexa 3. Cum se memorează datele? 173
Exerciții propuse 182
Anexa 4. STEM. Exemple de utilizare a algoritmilor (fizică și chimie) 183
Proiecte propuse 187
Anexa 5. Modulul turtle – detalii 188
A5.1. Introducere 188
A5.2. Spațiul de lucru și Țestoasa 190
A5.3. Metode și proprietăți utile 192
A5.4. Trasarea liniilor curbe (Bezier: cuadratice, cubice) – cool! 195
Aplicație. O inimioară în Python 3? 197
Anexa 6. Un operator interesant - walrus 200
Anexa 7. PEP8 – Ghidul oficial al stilului de redactare a codului 203
Bibliografie selectivă 204

S-ar putea să vă placă și