p°edchozφ lekce (1.19) | obsah kurzu | nßsledujφcφ lekce (1.21) |
S °et∞zci je mo₧nΘ provßd∞t spoustu operacφ. Je mo₧nΘ je sluΦovat, kopφrovat Φßst pod°et∞zce, dopl≥ovat znaky na libovolnΘ mφsto, p°evßd∞t na Φφslo, zjiÜ¥ovat dΘlku °et∞zce a podobn∞. VeÜkerΘ uvedenΘ funkce obsahuje knihovna pro zpracovßnφ °et∞zc∙, se kterou se nynφ seznßmφme.
Jestli₧e pot°ebujete zjistit dΘlku °et∞zce, pou₧ijte funkci Len:
Writeln(Len(S))
Pokud pot°ebujete z °et∞zce vybrat pro dalÜφ zpracovßnφ pouze jeho Φßst, m∙₧ete
pou₧φt funkci Mid, kde zadßte mimo °et∞zce i poΦßteΦnφ pozici a dΘlku pod°et∞zce:
Writeln(Mid("BONANZA",3,4)) 'vypφÜe 'NANZ'
Velmi Φast²m po₧adavkem je mo₧nost vyjmout z °et∞zce urΦitou Φßst, p°φpadn∞ do
°et∞zce vlo₧it jin² °et∞zec. K vyjmutφ pod°et∞zce je mo₧nΘ pou₧φt p°φstupnou funkci
jazyka KLONDAIK Delete, kterß ze zadanΘho °et∞zce zruÜφ od zadanΘ pozice zadan²
poΦet znak∙. Naopak, procedura Insert z jazyka KLONDAIK vlo₧φ na zadanou pozici do
°et∞zce po₧adovan² pod°et∞zec. Ob∞ funkce m∞nφ souΦasn∞ dΘlku °et∞zce.
'program ZNAKY1.BON
Sub Main()
S = "Program OZOGAN BONANZA"
Write ("DΘlka °et∞zce: ")
Writeln(Len(S))
S = Insert("*", s, 15) 'vlo₧φ znak '*' do °et∞zce
Writeln(S)
S = Delete(S, 1, 8) 'vyjme znaky z °et∞zce
Writeln(S) 'vypφÜe: 'OZOGAN*BONANZA'
Write ("DΘlka °et∞zce: ")
Writeln(Len(S)) 'vypφÜe: 15
Write ("Pozice 'KLON': ")
Writeln(Pos("KLON", S)) 'vypφÜe: 8
End Sub
Pokud pot°ebujete zjistit, zda se v °et∞zci nalΘzß hledan² pod°et∞zec, lze pou₧φt
funkci Pos. Funkce vracφ pozici prvnφho znaku hledanΘho pod°et∞zce.
S = "OZOGAN BONANZA"
Writeln(Pos("KLON",S)) 'vracφ Φφslo 8
Ka₧d² znak v °et∞zci mß svou Φφselnou hodnotu, udßvajφcφ pozici znaku v ASCII
tabulce, ve kterΘ je umφst∞no vÜech 256 mo₧n²ch znak∙. ASCII tabulka je pevn∞
definovßna a platφ i mimo systΘm KLONDAIK. Spodnφ Φßst tabulky do pozice 125 je v₧dy
pevn∞ dßna. Hornφ Φßst tabulky ji₧ zßle₧φ na definici nßrodnφho prost°edφ poΦφtaΦe (nap°.
pφsmena s diakritikou). Na zaΦßtku tabulky jsou umφst∞ny tzv. netisknutelnΘ znaky, kterΘ
se pou₧φvajφ pro obsluhu tiskßrny. Dßle jsou ji₧ definovßny jednotlivΘ znaky. Ka₧d² znak
°et∞zce m∙₧ete proto rozlo₧it na jednotlivΘ znaky a jejich hodnoty. V programu je
definovßna funkce Asc kterß provßdφ p°evod hodnoty znaky na Φφselnou pozici v tabulce.
OpaΦnß funkce je Chr, kterß vracφ dle zadanΘho Φφsla odpovφdajφcφ znak z ASCII tabulky:
'program ZNAKY2.BON
Sub Main()
Writeln(Asc("A")) 'vypφÜe ASCII hodnotu znak znaku 'a'
Writeln(Asc("a")) 'vypφÜe ASCII hodnotu znak znaku 'A'
Writeln(Chr(65)) 'vypφÜe znak tabulky zadanΘ hodnoty
For x = 65 to 90
Write(Chr(x)) 'vypφÜe abecedu - velkß pφsmena
Next
Writeln("")
For x = 97 to 122
Write(Chr(x)) 'vypφÜe abecedu - malß pφsmena
Next
Writeln("")
End Sub
VÜimn∞te si, ₧e velkß pφsmena v tabulce zaΦφnajφ na pozici 65 a malß pφsmena na
pozici 97, jejich rozdφl je proto 32. To by bylo mo₧nΘ vyu₧φt nap°φklad pro p°evod °et∞zce
na malß pφsmena, jak ukazuje nßsledujφcφ p°φklad.
'program ZNAKY3.BON
Sub Main()
S = "ozOgaN bOnAnZa"
For X = 1 to Len(S)
If (Asc(Mid(S,X,1))>=65) and (Asc(Mid(s,x,1))<=90) then
S = Mid(S, 1, X-1)_
+ Chr(Asc(Mid(S, X, 1))+32)_
+ Mid(S, X+1, Len(S)-X)
End If
Next
Writeln(S) 'vypφÜe "ozogan bonanza"
End Sub
Pro p°evod °et∞zce na velkß pφsmena se pou₧φvß funkce UCase, na malß pφsmena
potom funkce LCase. P°evßdφ se znaky vΦetn∞ diakritick²ch znamΘnek:
s := 'ozOgaN kLonDaiK';
Writeln(LowerCase(s)); {p°evede na malß pφsmena}
Writeln(UpperCase(s)); {p°evede na velkß pφsmena}
Pravd∞podobn∞ velmi Φasto budete pot°ebovat p°evßd∞t Φφsla na °et∞zce a obrßcen∞.
JednoduÜÜφ je p°itom p°evod Φφsel na °et∞zec. Pro p°evod Φφsla typy Integer se pou₧φvß
funkce CStr. Pokud pot°ebujete p°evΘst Φφslo na °et∞zec se zadßnφm poΦtu desetinn²ch
mφst, m∙₧ete pou₧φt dostupnou funkci z jazyka KLONDAIK RealToStr. Ta vßm umo₧nφ
zadat nejen dΘlku Φφsla, ale i poΦet desetinn²ch mφst. ╪et∞zec na celΘ Φφslo se p°evßdφ
funkcφ CInt. Na Φφslo vΦetn∞ jejφ desetinnΘ Φßsti m∙₧ete p°evΘst °et∞zec funkcemi CDbl,
nebo funkcφ CLng. K p°evodu je mo₧nΘ pou₧φt takΘ dostupnΘ funkce jazyka KLONDAIK
StrToReal, kdy budou nenumerickΘ znaky ignorovßny.
'program ZNAKY4.BON
Sub Main()
I = 123
R = 123.45
Writeln("Φφslo: "+CStr(I))
Writeln("Φφslo: "+RealToStr(I,6,2))
Writeln("Φφslo: "+RealToStr(R,6,2))
R = StrToReal("123.45")/3
End Sub
Knihovna pro prßci s °et∞zci obsahuje i dalÜφ zajφmavΘ pou₧itelnΘ funkce.
p°edchozφ lekce (1.19) | obsah kurzu | nßsledujφcφ lekce (1.21) |