Small Basic: for sau while?


Prin formularul de contact am fost întrebat când trebuie să folosim for şi când while. Cele două structuri, prezentate aici, sunt similare, e adevărat. Mai jos vedeţi acelaşi rezultat (scrierea pe ecran a numerelor de la 1 la 10) realizat mai întâi cu while, apoi cu for. Aparent for e o formă mai compactată, deci de preferat lui while. Dar există totuşi situaţii când e de preferat while lui for şi anume când numărul de repetări a conţinutului buclei nu este cunoscut dinainte.

i = 1
While i <= 10
  TextWindow.WriteLine(i)
  i = i+1
EndWhile

For i=1 To 10
  TextWindow.WriteLine(i)
EndFor

Deci: folosim for atunci când ştim că o secvenţă de cod o dorim repetată de un număr fix de ori; şi evident atunci folosim while când numărul de repetări e necunoscut. Să vedem un exemplu concret. Generarea a 10 numere aleatoare impare. Putem face aşa: generăm câte un număr aleator, şi dacă e impar e bun, dacă nu generăm altul… În acest scenariu nu ştim câte numere aleatoare vom genera până obţinem 10 impare. Folosim deci while:

generate = 1
While generate <= 10
  aleator = Math.GetRandomNumber(100)
  If Math.Remainder(aleator,2) = 1 Then
    generate = generate + 1
    TextWindow.WriteLine(aleator)
  EndIf
EndWhile

Desigur, putem fi mai şmecheri şi să generăm exact numere impare. Cum? Păi oricare ar fi n, numărul 2*n+1 e impar. Cu acest truc ştim sigur că din 10 generări aleatoare putem avea zece numere impare. Şi atunci putem folosi for.

For i=1 To 10
  aleator = 2 * Math.GetRandomNumber(100) + 1
  TextWindow.WriteLine(aleator)
EndFor

Şi aici vedem că forma cu for dă un cod mai scurt, dar doar pentru că s-a folosit un artificiu matematic ca numărul de iteraţii să fie cunoscut, să fie fix. Reţineţi deci regula de bază: când ştim clar de câte ori, folosim for; când nu, while.


Apreciază articolul:

1 stea2 stea3 stea4 stea5 stea (2 evaluări, media: 5,00 din 5)
Loading...Loading...

0 comentarii


Lasă un răspuns

Adresa ta de email nu va fi publicată. Câmpurile necesare sunt marcate *