[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("")
0 comentarii