Arhiva pentru tagul “Small Basic”

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, …


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 …


Small Basic: Şiruri

Poate vă amintiţi: acum câteva zile am vorbit despre variabile. Spuneam că sunt “ca nişte containere sau cutiuţe capabile să conţină valori. Nu valori în sens de bijuterii, ci valori numerice sau text.” Când zicem localitate=”Timisoara” se creează variabila localitate (dacă nu a fost deja creată, iniţializată anterior) şi primeşte ca valoare un text: Timisoara. Acum vine ceva ce poate fi confuz pentru unii: aparent în codul de mai jos vedem o variabilă ce memorează mai multe valori deodată – e ca şi cum cutiuţa ar avea mai multe separeuri pentru ele. Vorbim însă de şiruri: un trenuleţ cu mai multe vagoane, fiecare cu câte o valoare.

localitate[1]="Cluj-Napoca"
localitate[2]="Bucuresti"
localitate[3]="Iasi"
localitate[4]="Oradea"
localitate[5]="Brasov"
For i=1 To 5
  TextWindow.WriteLine(localitate[i])
EndFor

Ca să identificăm vagoanele acestui tren (şir), fiecare are un indice numeric. Astfel primul vagon conţine valoarea Cluj-Napoca, al doilea Bucuresti… iar ultimul e vagonul numărul cinci cu valoarea Brasov. Codul de mai sus exemplifică şi atribuirea …


Small Basic: Proceduri

Mergem mai departe? Desigur! Vom vedea astăzi probabil penultima mare cărămidă legată de Small Basic, de partea de programare. E vorba de proceduri (urmând că mâine să vedem şirurile). Dar ca să putem ajunge la ele, să simţim raţiunea existenţei lor, să ne imaginăm o nouă problemă. Ce să fie, ce să fie? Să zicem că avem un număr de patru cifre şi dorim să aflăm suma cifrelor lui. Ultima cifră este restul împărţirii respectivului număr la 10. Penultima cifră o aflăm similar, scăpând de ultima cifră (cu împărţire la 10 rotunjită în jos). Similar a doua cifră. Iar prima, ei bine, este rezultatul împărţirii la 1000 (tot cu rotunjire în jos). Sau direct codul:

nr=Math.GetRandomNumber(9000)+999
c4=Math.Remainder(nr,10)
c3=Math.Remainder(Math.Floor(nr/10),10)
c2=Math.Remainder(Math.Floor(nr/100),10)
c1=Math.Floor(nr/1000)
TextWindow.WriteLine(c1+"+"+c2+"+"+c3+"+"+c4+"="+(c1+c2+c3+c4))

După cum observaţi, în prima linie am generat un număr între 1000 şi 9999 (de fapt între 1 şi 9000, dar i-am adăugat 999, deci avem intervalul dorit). Apoi am luat de la ultima cifră (c4) …


Small Basic: Câteva programe pentru fixarea cunoştinţelor

Am făcut deja câţiva paşi importanţi în Small Basic şi ar trebui să nu avem probleme cu scrierea unor programe de dificultate mică. Desigur, au trecut pentru mine vreo 20 de ani de când făceam aşa ceva, pe băncile liceului, dar cred că mai îmi amintesc unele dintre programele de începători 🙂 . Să vedem. Pornim la drum cu ceva foarte simplu: afişarea divizorilor unui număr. Logica e simplă: divizorii sunt maxim până la jumătatea acelui număr. Îi vom lua pe toţi la rând şi îi afişăm doar pe cei care, împărţind numărul iniţial, dau restul zero.

TextWindow.Write("Indicati numarul: ")
nr = TextWindow.ReadNumber()
TextWindow.WriteLine("Divizorii lui "+nr+" sunt:")
TextWindow.WriteLine("1")
For i=2 To nr/2
  If Math.Remainder(nr,i)=0 Then
    TextWindow.WriteLine(i)    
  EndIf
EndFor

Codul de mai sus, executat, dă ceva ca în captura următoare.


Small Basic: Variabile, condiţii şi bucle

Am văzut ultima oară câteva concepte fundamentale dar… nu s-a terminat subiectul. Desigur, e fundamental să înţelegem clasele cu proprietăţi şi operaţii, dar lucrurile de bază continuă. Pentru cei care au o minimă experienţă de programare (ex: PHP), ceea ce urmează e plictisitor şi interesează doar din perspectiva sintaxei. Dar pornim de la premisa că materialul e citit de unii care au acum primul contact cu programarea, aşa că vom discuta pe rând, rapid însă, despre variabile, condiţii şi bucle.

imagine

Şi pentru că îmi plac lucrurile concrete, am scris un scurt cod ce reuneşte cele trei elemente. Să începem!

Variabile

Imaginaţi-vă variabilele ca nişte containere sau cutiuţe capabile să conţină valori. Nu valori în sens de bijuterii, …


Small Basic: Conceptele fundamentale

Dacă ieri ne-am acomodat cu interfaţa, azi încercăm să vedem care sunt conceptele cheie care trebuie stăpânite înainte de a ne adânci în sintaxe şi mici programe. Probabil codul vă aminteşte de cel de ieri: este exact acelaşi. De fapt încă nu ne pasionează aşa de mult codul cât să înţelegem de la ce porneşte programarea în Small Basic. Ei bine, punctul de plecare sunt nişte clase, fiecare clasă având o serie de proprietăţi şi respectiv de operaţii. Mai jos, pentru că eram cu cursorul peste textul Math în dreapta mi-au apărut detaliile despre clasa Math. Cu iconiţe diferite observaţi în dreapta indicate proprietăţile (una, Pi) şi operaţiile (Abs, ArcCos…).

imagine

Drept urmare Math.Remainder(nr,2) se descompune astfel:


Small Basic: Acomodarea cu interfaţa

Ce nu v-am spus ieri este că… am început să îmi învăţ copiii Small Basic. Doi din trei, dat fiind că fetiţa cea mai mică e încă la grădiniţă. I-am luat deci pe “absolvenţii” de a IV-a şi a VI-a şi am început să îi instruiesc. Sincer… nu ştiu cum se mai predă azi informatica: atunci când am făcut eu se începea cu scheme logice şi cred că abia după un an de zile am atins tastele calculatorului. Mi-am zis să îi pun direct cu programul în faţă şi să lucreze. S-au mega entuziasmat! Am să scriu poate câteva articole pentru cei care fie doresc pe pielea lor să înveţe puţin de Small Basic, fie copiii lor.

imagine

Şi desigur, …


Small Basic a ajuns la versiunea 1.0!

Acum vreo săptămână a apărut anunţul oficial: Small Basic, după vreo doi ani de pre-releases, a ajuns la o versiune oficială 1.0. Văd că între timp a dobândit şi un sit propriu, SmallBasic.com, dar i-a rămas şi pagina de pe Microsoft.com. Iar dovada că a crescut este că acum… să bată tobele… programele scrise în Small Basic pot fi exportate cu un click pe web. Şi dacă vreţi să vă convingeţi că SmallBasic nu e doar pentru operaţii matematice şi linii desenate primitiv pe ecran, iată Soko, un joc online scris cu acest limbaj de programare. Coooool!!! (Sub el e şi sursa.)

imagine

Mi-am instalat rapid Small Basic (când am scris prima oară despre …