====== Lecția 3: Tablouri ====== Salut! Bine ai venit la cea de-a treia lecție din cadrul modulului [[module:08-vectori-si-tablouri:home]]. În această lecție vei aprofunda noțiunile de condiție și buclă în exerciții cu vectori și vei învăța ce sunt tablourile. Vom continua să lucrăm în [[http://www.khanacademy.org/cs/|Khan]]. ===== Recapitulare ===== Astăzi vom începe cu o recapitulare a utilizării vectorilor prin câteva exerciții. În acest timp, vom verifica și **[[module:08-vectori-si-tablouri:lectia-02#exercitiu-pentru-acasa|exercițiul pentru acasă]]**. ==== 1. Afișarea elementelor unui vector ==== **Să ne reamintim** Putem afișa elementele unui vector folosind o buclă ''for''. Pentru un **vector** ''v'' cu 10 elemente, putem scrie un ''for'' care să parcurgă numerele 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 cu o variabilă ''i'' ce reprezintă un **index**. La fiecare pas, putem folosi valoarea din vector de pe poziția dată de index, ''v[i]''. **Scrie un program** care afișează numerele din vectorul ''vect'' folosind un ''for''. Inițializarea elementelor din vector este deja scrisă. Trebuie să obții o imagine asemănătoare cu cea din figură: {{ :module:08-liste-si-vectori:m08-l03-e01.png?nolink&300 |}}

Afișare elemente vector

Made using: Khan Academy Computer Science.

==== 2. Afișare folosind 2 culori ==== **Modifică programul anterior** pentru a afișa numerele pare cu o culoare și pe cele impare cu o altă culoare. Trebuie să obții o imagine asemănătoare cu cea din figură: {{ :module:08-liste-si-vectori:m08-l03-e02.png?nolink&300 |}} ==== 3a. Tabel de imagini ==== **Scrie un program** astfel încât să afișezi 3 vectori cu câte 3 imagini în fiecare. Trebuie să obții o imagine asemănătoare cu figura: {{ :module:08-liste-si-vectori:m08-l03-e03.png?nolink&300 |}} ==== 3b. Modificare vector ==== **Scrie un program** astfel încât: se dă un vector **a**, să se creeze vectorul **b** care conține fiecare număr din vectorul **a** adunat cu 1 folosind bucla **for** a = [1, 2, 3, 4, 5, 6, 7] Noul vector: b = [2, 3, 4, 5, 6, 7, 8] ==== 3c. Sumă/Produs ==== **Scrie un program** care să calculeze suma și produsul numerelor dintr-un vector. ==== 3d. Sumă vectori==== Se dau doi vectori **a** și **b**. Să se creeze vectorul **c** care reprezinta suma vectorilor **a** și **b** var a = [1, 4, 6, 7] var b = [3, 9, 2, 10] Vectorul **c** ar trebui să fie: c = [4, 13, 8, 17] ===== Tutorial ===== Astăzi vei învăța câteva noțiuni despre ce este un **tablou** de valori. Pentru a înțelege bine noțiunile, îți recomand să urmărești cu atenție explicațiile și exemplul de mai jos. ==== 4. Noțiunea de tablou ==== Pentru început, hai să înveți ce este un tablou. După explicații, vei rezolva o scurtă cerință. Un **vector** poate fi reprezentat ca un tabel cu o singură linie și cu mai multe coloane. Un **tablou** (numit și **matrice**) poate fi reprezentat ca un tabel cu mai multe linii și mai multe coloane. Din acest motiv, un tablou este reprezentat în Khan ca un **vector de vectori**. Spre deosebire de vector, tabloul este **indexat** atât pe **linii**, cât și pe **coloane**. ^ ^ 0 ^ 1 ^ 2 ^ 3 ^ 4 ^ ^ 0 | A | B | C | D | E | ^ 1 | F | G | H | I | J | ^ 2 | K | L | M | N | O | ^ 3 | P | Q | R | S | T | ^ 4 | U | V | W | X | Y | În tabelul de litere de mai sus, litera 'N' se află la poziția (2, 3). Într-o pereche de indecși, **primul număr** reprezintă **linia**, iar **al doilea număr** reprezintă **coloana**. Modificarea și atribuirea de elemente se face la fel ca la vector. De exemplu, pentru a schimba în tabloul de mai sus litera "N" cu "Z", vom scrie codul: tablou[2][3] = 'Z'; Mai jos este rezolvat exercițiul 3 folosind o matrice de imagini. **Observă** modul de declarare și de parcurgere al elementelor și **adaugă** o line și o coloană nouă de elemente (tabloul va avea la final 4 linii și 4 coloane).

Tablou de imagini

Made using: Khan Academy Computer Science.

===== Exerciții ===== ==== 5. Utilizările tablourilor ==== Așa cum ai văzut un tablou poate fi asociat cu un tabel cu un anumit număr de linii și de coloane. În general liniile au o anumită semnificație, iar coloanele o alta. Poți vedea în exercițiul cu [[https://www.mathsisfun.com/definitions/array.html| Caracteristicile maimuțelor]] cum o linie reprezintă o anumită maimuță, iar o coloană reprezintă o anumită caracteristică. ==== 6. Suma indicilor ==== **Scrie un program** care să creeze și să afișeze un tablou cu suma indicilor de pe linia și coloana lor. Astfel, pe poziția [3][4] se va afla elementul 7 deoarece ''3 + 4 = 7''. Trebuie să obții o imagine ca în figura: {{ :module:08-liste-si-vectori:m08-l03-e05.png?nolink |}} Poți porni de la codul următor care inițializează o matrice de 10 linii și 10 coloane cu valori de 0.

Exercițiu

Made using: Khan Academy Computer Science.

==== 7. Matrice de pătrate ==== **Scrie un program** care creează o matrice de culori (alb și negru) și afișează o matrice de pătrate ca pe tabla de șah. Trebuie să obții o imagine ca în figura: {{ :module:08-liste-si-vectori:m08-l03-e06.png?nolink |}} Vei avea nevoie să îți aduci aminte cum folosești un vector de culori și să îl adaptezi. Dacă nu mai ții minte, te poți uita pe **[[module:08-vectori-si-tablouri:lectia-02#initializarea-vectorilor|Exercițiul 1]]** sau pe **[[module:08-vectori-si-tablouri:lectia-02#modificarea-vectorilor|Exercițiul 2]]** din lecția anterioară. ===== Bonus ===== ==== 8. Imagini pe tablă ==== **Modifică** programul de la exercițiul 6 adăugând imagini peste pătrățele de pe diagonale. Trebuie să obții o imagine asemănătoare: {{ :module:08-liste-si-vectori:m08-l03-e07.png?nolink |}} Pentru elementele de pe diagonala stânga-sus -> dreapta-jos (numită și diagonala principală), indicele de linie este egal cu indicele de coloană. Pentru elementele de pe diagonala dreapta-sus -> stânga-jos (numită și diagonala secundară), suma dintre indicele de linie și indicele de coloană rămâne constantă. Determină cât este această valoare. ==== 9. Șah ==== **Modifică** programul de la exercițiul 6 adăugând text sau imagini pentru a obține poziția inițială a pieselor pe tabla de șah. Un exemplu îl găsești în imaginea de mai jos: {{ :module:08-liste-si-vectori:m08-l03-e08.png?nolink |}} ===== Exercițiu pentru casă ===== Scrie un program care creează și afișează o matrice de 6 linii și 5 coloane. Primele 5 linii vor conține numere naturale între 0 și 10. A 6-lea linie va conține suma elementelor de pe fiecare coloană. Un exemplu îl găsești în figura: {{ :module:08-liste-si-vectori:m08-l03-tema.png?nolink |}} Dacă termini repede suma elementelor, poți să scrii pe linia a 7-a valoarea maximă din primele 5 linii de pe fiecare coloană. Pentru exemplul dat, va trebui să afișezi ''7 9 6 8 9''.