Small Basic: Câteva programe cu texte


[Explicaţie: pregătirea unui scurt curs de Small Basic pentru copii a făcut să nu mă pot concentra să scriu pentru CNet.ro. Pentru a recupera, voi publica din programele pregătite pentru respectivul curs, cu speranţa că vor folosi cuiva – chiar dacă Small Basic nu e atât de popular.] Când am vorbit anul trecut mai detaliat despre Small Basic nu am ajuns să spun nimic despre clasa Text. Evident, este o clasă importantă şi cu aplicaţii foarte multe. Vom vedea câteva programe mai mult cu scop didactic decât utile în sine.

1. Un start uşor: se dă un text şi se cere să se spună dacă conţine litera “a” sau secvenţa “er”. Desigur, în ambele cazuri folosim Text.GetIndexOf. Online aici.

TextWindow.Write("Scrieţi ceva: ")
ceva=TextWindow.Read()
ceva=Text.ConvertToLowerCase(ceva)

If (Text.GetIndexOf(ceva,"a")<>0) Then
  TextWindow.WriteLine("Apare litera 'a'.")
Else
  TextWindow.WriteLine("Nu apare litera 'a'.")
EndIf
If (Text.GetIndexOf(ceva,"er")<>0) Then
  TextWindow.WriteLine("Apare secvenţa 'er'.")
Else
  TextWindow.WriteLine("Nu apare secvenţa 'er'.")
EndIf

2. Avem funcţii ce ne ajută să aflăm rapid dacă un text începe cu un anumit subtext (StartWidth) sau dacă se termină (EndWidth). Iată un banal program care determină dacă un nume se termină cu escu. Online aici.

start:
TextWindow.Write("Nume: ")
nume=TextWindow.Read()
If (Text.EndsWith(nume,"escu")) Then
  TextWindow.WriteLine("Se termină cu 'escu'")
Else
  TextWindow.WriteLine("Nope, nu se termină cu 'escu'")
EndIf
Goto start

3. Să vedem acum ceva mai complicat. Având o propoziţie, să numărăm câte vocale şi câte consoane are. Nu distincte! Online aici.

TextWindow.WriteLine("Scrieţi o propoziţie vă rog:")
prop=TextWindow.Read()
prop=Text.ConvertToLowerCase(prop)
litere="abcdefghijlmnoprstuvwxyzşţăîâ"
vocale="aeiouăîâ"
nrv=0
nrc=0
l=Text.GetLength(prop)
For i=1 To l
  c=Text.GetSubText(prop,i,1)
  If (Text.IsSubText(litere,c)) Then
    If (Text.IsSubText(vocale,c)) Then
      nrv=nrv+1
    Else
      nrc=nrc+1
    EndIf
  EndIf 
EndFor
TextWindow.WriteLine("Sunt "+nrv+" vocale şi "+nrc+" consoane.")

4. Se dă o propoziţie: să se afişeze invers, literă cu literă. Online aici.

TextWindow.WriteLine("Daţi-mi un text şi vi-l întorc!")
abc=TextWindow.Read()
lungime=Text.GetLength(abc)
For i=1 To lungime
  TextWindow.Write(Text.GetSubText(abc,lungime+1-i,1))
EndFor
TextWindow.WriteLine("")

5. Şi un program simpatic: se dă nume şi prenume (separate de spaţiu). Să se întoarcă ambele cuvinte. Astfel Radu Capan devine Udar Napac. Online aici. Încercaţi cu numele Dvs :).

TextWindow.WriteLine("Daţi-mi un nume şi vi-l învârt!")
abc=TextWindow.Read()
nume=Text.GetSubText(abc,1,Text.GetIndexOf(abc," ")-1)
prenume=Text.GetSubTextToEnd(abc,Text.GetIndexOf(abc," ")+1)
For i=1 To Text.GetLength(nume)
  litera=Text.GetSubText(nume,Text.GetLength(nume)+1-i,1)
  If i=1 Then
    litera=Text.ConvertToUpperCase(litera)
  Else
    litera=Text.ConvertToLowerCase(litera)
  EndIf
  TextWindow.Write(litera)
EndFor
TextWindow.Write(" ")
For i=1 To Text.GetLength(prenume)
  litera=Text.GetSubText(prenume,Text.GetLength(prenume)+1-i,1)
  If i=1 Then
    litera=Text.ConvertToUpperCase(litera)
  Else
    litera=Text.ConvertToLowerCase(litera)
  EndIf
  TextWindow.Write(litera)
EndFor
TextWindow.WriteLine("")


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 *