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.

imagine

OK. O să spuneţi că ştiu probleme doar cu Math.Remainder :) . Desigur că nu. Să folosim alte funcţii din clasa Math. Iarăşi ceva banal: maximul dintre trei numere.

TextWindow.Write("Primul numar: ")
nr1 = TextWindow.ReadNumber()
TextWindow.Write("Al doilea numar: ")
nr2 = TextWindow.ReadNumber()
TextWindow.Write("Al treilea numar: ")
nr3 = TextWindow.ReadNumber()
maxim = Math.Max(nr1,nr2)
maxim = Math.Max(maxim,nr3)
TextWindow.WriteLine("Dintre "+nr1+" si "+nr2+" si "+nr3+" cel mai mare este: "+maxim+".")

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

imagine

O a treia problemă. Să zicem că vrem să verificăm aptitudinea cuiva de a face înmulţiri. În programul de mai jos schimbaţi 10 din paranteza de la GetRandomNumber cu ce doriţi Dvs ca să sporiţi eventual dificultatea.

corecte=0
For i=1 To 10
  nr1 = Math.GetRandomNumber(10)
  nr2 = Math.GetRandomNumber(10)
  TextWindow.Write("Cat face "+nr1+" x "+nr2+"? ")
  rezultat = TextWindow. ReadNumber()
  If rezultat = nr1*nr2 Then
    corecte = corecte+1
    TextWindow. WriteLine("Felicitări! Corect!")
  Else
    TextWindow.WriteLine("Uf, ati fost neatent!")
  EndIf
  TextWindow.WriteLine("")
EndFor
TextWindow.WriteLine("Ati rezolvat "+corecte+" din 10.")

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

imagine

Iată şi o a patra problemă, simplă de tot. Afişăm pe ecran ridicarea la cub a unui număr generat aleator, iar cel din faţa problemei va trebui să spună rădăcina de ordin trei.

nr = Math.GetRandomNumber(15)
TextWindow.WriteLine("Cat este radical de ordin 3 din "+Math.Power(nr,3)+"?")
TextWindow.Write("Raspuns: ")
If TextWindow.ReadNumber()=nr Then
  TextWindow.WriteLine("Bravo! Asa este!")
Else
  TextWindow.WriteLine("Nu. Incorect.")
EndIf

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

imagine

Şi ultima problemă: reprezentarea unui număr cu virgulă doar cu două cifre după virgulă. În numeroase situaţii vrem ca ceva de genul 53,12839402 să devină simplu 53,12. O posibilă soluţie ar fi:

a = 36/13
TextWindow.WriteLine(a)
a = Math.Floor(a*100)/100
TextWindow.WriteLine(a)

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

imagine

OK. Cred că aceste cinci programe au fost o ocazie bună de a aprofunda cele “învăţate” până aici. În principal sunt exemplificate clasele TextWindow şi Math pentru că ele au mai fost referite până acum. Urmează să facem cunoştinţă şi cu alte clase.


Apreciază articolul:

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