Introducere în Programare

Capitolul 2: Lecții
Repetiții finite (for)

Am văzut la lecția anterioară cum se folosește while pentru a repeta cod.

Dacă ne gândim puțin la cum funcționa, poate ne dăm seama că ar fi funcționat și dacă aveam o iterație, și dacă aveam 42 sau oricâte. Buclele de genul acela, pe care le facem de obicei cu while se spune că au număr necunoscut de pași.

                    while(canMove()) {
    move()
}
                

O situație mult mai frecventă ar fi cea în care știm câte iterații vrem să se facă. Hai să facem un exemplu cu ce am învățat până acum:

                    var steps = 7

while(steps > 0) {
    move()
    steps = steps - 1
}
                
Număr cunoscut de pași cu „while”

Această buclă va avea fix 7 iterații. La fiecare comparație, testăm dacă numărul rămas de pași este mai mare decât 0. Apoi, în blocul de instrucțiuni facem o mișcare și scădem numărul de pași, pentru ca la următoarea testare a condiției să se testeze numărul mai mic.

La un moment dat, fix după 7 iterații, valoarea lui steps va ajunge la 0, iar condiția steps > 0 va fi falsă, deci se va opri bucla.

Un alt mod de a gândi un număr finit de pași ar fi să ținem în memorie numărul de pași parcurși. La început, nu vom fi parcurs niciun pas, iar când ar urma să facem al 7-lea pas, ne-am opri. Trebuie doar să ajustăm puțin logica:

Această buclă va avea fix 7 iterații. La fiecare comparație, testăm dacă numărul de pași parcurși este mai mic decât 7. Fiind mai mic, înseamnă că trebuie să mai facem pași. Apoi, în blocul de instrucțiuni facem o mișcare și creștem numărul de pași.

La un moment dat, fix după 7 iterații, valoarea lui step va ajunge la 7, iar condiția step <7 va fi falsă, deci se va opri bucla.

                    var step = 0

while(step < 7) {
    move()
    steps = steps + 1
}
                
Număr cunoscut de pași cu „while”

Acesta este formatul preferat de programatori, dar pe care nu îl vei vedea niciodată. Fiind atât de comun, multe limbaje de programare folosesc altă instrucțiune care ne permite să facem același lucru din mai puține linii. De asemenea, programatorii preferă să folosească numele de variabilă i (probabil de la i-terație), care este mai ușor de scris.

                    for(var i = 0; i < 7; i = i+1) {
    /*  1  */ /* 2 */ /* 3 */

    move()
}
                
„for”

Folosind for, vom putea avea pe o singură linie 3 lucruri:

  1. Declararea și inițializarea: var i = 0

  2. Condiția de test i < 7

  3. O expresie ce va rula mereu la sfârșitul iterației i = i+1

Aceasta este sintaxa care funcționează în limbajul Mioriței, dar și în limbaje precum Java, JavaScript, C#, PHP. Alte limbaje, precum Python, pot implementa altă sintaxă, chiar dacă folosesc tot cuvântul for.

Atunci când spunem că o buclă are număr cunoscut de pași, asta poate să însemne și că acel număr ne vine de undeva, poate din vreo variabilă, sau parametru cum vom vedea în lecția despre funcții.

Așadar, numărul de iterații e cunoscut atunci când rulează programul, nu neapărat când scriem noi codul.

                    var steps = 9

for(var i = 0; i < steps; i = i+1) {
    move()
}
                
„for” cu variabilă
Conținutul continuă după reclamă

Temă

Folosind conceptele învățate în ultimele lecții, încearcă să o duci pe Miorița până la iarbă în lecția 3 din aplicație. Gândește-te dacă vrei să scrii cât mai puține linii de cod, sau dacă vrei să o duci mai repede. Poate vrei să rezolvi într-un fel care ar merge indiferent de mărimea stânei.

În carieră te vei lovi de multe ori de această dilemă: vrei să scrii un program simplu, care să îndeplinească sarcina, chiar mai ineficient? Sau vrei cel mai optimizat program posibil? Sau vrei un program care se poate folosi în mai multe situații?
Diferite echipe și proiecte vor avea preferințe și cerințe diferite. Tu, ca programator, trebuie să iei în considerare toate variantele de rezolvare și să alegi pe cea mai potrivită.

Designed by