Continuăm desigur mini-seria dedicată limbajului de programare Small Basic. Permiteţi-mi să amintesc celor ce au nimerit acum peste Small Basic: e un limbaj de programare dezvoltat de Microsoft, evident având legătură cu (Visual) Basic, dar gratuit şi gândit special pentru copii sau pentru cei care învaţă acum programarea. OK. Vineri am vorbit despre şiruri. Înainte să mergem mai departe aşezăm cele învăţate mai bine în memorie cu nişte aplicaţii concrete. Şi începem cu şirul lui Fibonacci.
E un fel de “Hello World!” al lumii şirurilor. Şirul porneşte de la două elemente: 0 şi 1. Următoarele se calculează după o regulă simplă: suma celor două precedente. Deci elementul 3 va fi 0+1 adică tot 1. Elementul 4 va fi 1+1 adică 2. Elementul 5 va fi 1+2 va fi 3 şi urmează 2+3=5, 3+5=8, 5+8=13, 8+12=21… Evident, în Small Basic nu trebuie să facem noi calcule. Tot ce ne trebuie este un cod ca următorul.
fibo[1]=0 fibo[2]=1 For i=3 To 20 fibo[i]=fibo[i-1]+fibo[i-2] EndFor For i=1 To 20 TextWindow.Write(fibo[i]+" ") EndFor TextWindow.WriteLine("")
Şi acum un alt exemplu: generăm aleator un şir cu zece numere, urmând să aflăm care este maximul. Codul executat îl vedeţi în captura de mai jos.
Cum facem? Ne folosim de o variabilă ce o iniţializăm cu 0 şi de fiecare dată când dăm de un număr în şir mai mare decât maximul temporar, punem în acest maxim temporar noua valoare maximă.
'Generam sirul For i=1 To 10 sir[i] = Math.GetRandomNumber(100) EndFor 'Calculam maximul maxim=0 For i=1 To 10 If maxim < sir[i] Then maxim = sir[i] EndIf EndFor 'Gata, stim totul TextWindow.WriteLine("Sa vedem mai sirul!") For i=1 To 10 TextWindow.Write(sir[i]+" ") EndFor TextWindow.WriteLine("") TextWindow.WriteLine("Maximul sirului este "+maxim+".")
Acum ultimul exemplu, cel mai dificil (pentru începători). Sortarea crescătoare a unui şir. Adică din nou generăm un şir cu numere aleatoare, dar trebuie la final să îl avem cu numerele ordonate crescător. Hopa… cum?
Sincer nu mai îmi amintesc numele algoritmului (repet, am studiat programare acum vrem 20 de ani), poate bubble sort, dar filosofia nu i-o uit: se tot parcurge şirul şi se verifică pe rând două numere vecine din şir, şi dacă nu sunt sortate corespunzător se schimbă între ele; când nu se mai fac schimbări înseamnă că tot şirul e sortat bine. Mai jos codul.
'Generam sirul For i=1 To 10 sir[i] = Math.GetRandomNumber(100) EndFor 'Afisam sirul TextWindow.WriteLine("Sa vedem mai sirul!") For i=1 To 10 TextWindow.Write(sir[i]+" ") EndFor TextWindow.WriteLine("") 'Sortam sirul schimb=1 While schimb = 1 schimb=0 For i=1 To 9 If sir[i] > sir[i+1] Then temp = sir[i] sir[i] = sir[i+1] sir[i+1] = temp schimb=1 EndIf EndFor EndWhile 'Gata, avem sirul sortat TextWindow.WriteLine("Sa vedem acum sirul sortat crescator!") For i=1 To 10 TextWindow.Write(sir[i]+" ") EndFor TextWindow.WriteLine("")
Şi gata… Sper aceste coduri să fi ajutat pentru fixarea noţiunii de şiruri.
0 comentarii