Ce inseamna "a parcurge" un tablou?
A parcurge un tablou inseamna a vizita (accesa) fiecare element al tabloului, pe rand, de la primul pana la ultimul (sau invers). In loc sa scriem manual note[0], note[1], ..., lasam o bucla for sa faca munca repetitiva.
Parcurgerea este cea mai importanta operatie cu tablourile. Aproape orice vrei sa faci cu un tablou (afisare, suma, cautare, numarare) necesita o parcurgere.
Imaginezi-ti profesorul care face prezenta. Deschide catalogul si trece prin fiecare elev, de la primul la ultimul: "Andrei?" - prezent. "Maria?" - prezenta. "Ion?" - absent. Nu sare peste nimeni, nu se opreste la jumatate. Trece prin toti elevii, unul cate unul.
Asta face si bucla for: trece prin fiecare element al tabloului, de la indexul 0 pana la ultimul, si face ceva cu fiecare (il afiseaza, il aduna, il verifica etc.).
Formula magica: for + tablou
Parcurgerea unui tablou are mereu aceeasi structura. Odata ce o inveti, o vei folosi de sute de ori:
| Componenta | Ce face |
|---|---|
| int i = 0 | Incepe de la primul element (indexul 0) |
| i < n | Continua cat timp i este mai mic decat numarul de elemente (n). Se opreste inainte de n! |
| i++ | Dupa fiecare pas, trece la urmatorul element (i creste cu 1) |
| tablou[i] | La fiecare iteratie, i devine indexul curent: tablou[0], tablou[1], tablou[2]... |
Program complet: parcurgere + suma
Sa urmarim exact ce se intampla la fiecare pas al buclei:
Variabila n = numarul de elemente
In loc sa scriem i < 5 direct in for, pastram numarul de elemente intr-o variabila separata n. De ce?
Parcurgere de la dreapta la stanga
Uneori vrei sa parcurgi tabloul invers - de la ultimul element spre primul. Structura se schimba putin:
| Componenta | Ce face |
|---|---|
| int i = n - 1 | Incepe de la ultimul element (indexul n-1) |
| i >= 0 | Continua cat timp i este mai mare sau egal cu 0 (nu uita de index 0!) |
| i-- | Dupa fiecare pas, scade la elementul anterior (i scade cu 1) |
Ce poti face in interiorul buclei?
Parcurgerea nu inseamna doar "afisare". In interiorul buclei poti face orice operatie cu fiecare element:
Parcurgere pentru citire (cin)
Poti folosi aceeasi structura de parcurgere pentru a citi valorile tabloului de la tastatura, nu doar pentru a le afisa: