Small Basic: Şiruri puse la lucru


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.

imagine

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.

imagine

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?

imagine

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.


Apreciază articolul:

1 stea2 stea3 stea4 stea5 stea (1 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 *