1.2.3.4. Reťazcové premenné
Pre reťazcové premenné platí to isté, čo sme uviedli o číselných premenných - označujú nejaké miesto v pamäti počítača. V prípade reťazcovej premennej je na tomto mieste uložená reťazcová konštanta (t. j. konkrétna postupnosť znakov). Meno reťazcovej premennej môže byť len jedno písmeno, za ktorým je znak $ (dolár). Tento znak rozlišuje meno reťazcovej premennej od mena číselnej premennej, musí byť vždy na konci mena reťazcovej premennej.
Správne mená reťazcových premenných sú:
a$, e$,
k$
Názvy uvedených reťazcových premenných sa čítajú ako a-string, e-string, k-string.
Nesprávne mená reťazcových premenných sú
aa$,
h3$, abeceda, x
Pri označovaní premenných môžete použiť pre číselné aj reťazcové premenné rovnaké meno (okrem znaku $ pre reťazcovú premennú), napr.
a, a$,
c, c$,
počítač ich chápe ako rozdielne premenné.
Hodnotu reťazcovej premennej priradíte príkazom LET
LET
a$="ulica"
LET b$="meno a
priezvisko"
Na ľavej strane znaku = je meno reťazcovej premennej, na pravej strane je reťazcová konštanta, ktorej hodnota sa premennej priradí. Ak chceme vypísať hodnotu reťazcovej premennej, v príkaze PRINT zadáte meno tejto premennej
10 LET a=5:LET a$="Vysledna hodnota je "
20 PRINT a$;a
Po odštartovaní programu počítač vypíše
Vysledna hodnota je 5
Pod pojmom reťazec budeme zatiaľ rozumieť reťazcovú konštantu alebo reťazcovú premennú, neskoršie tento pojem rozšírime.
Pokiaľ je daný reťazec, podreťazec je jeho súvislá časť. Tak sú "auto","mobil" podreťazce z "automobil", ale "util" nie je podreťazec z "automobil" (nie je to súvislá časť).
Ak chcete označiť podreťazec, použite nasledovný tvar:
reťazec (začiatok TO koniec),
kde začiatok a koniec označujú pozíciu znaku v reťazci.
Tak napr.
"abcdef"(2 TO 5) = "bcde"
Keď vynecháte začiatok, očakáva sa, že je 1, keď vynecháte koniec, potom je reťazec ponechaný do konca. Preto
"abcdef"(TO 5) = "abcdef"(1 TO 5)
= "abcde"
"abcdef"(2 TO) =
"abcdef"(2 TO 6) = "bcdef"
"abcdef"(TO)
= "abcdef"(1 TO 6) = "abcdef"
Posledný príklad môžete písať tiež ako "abcdef"().
Podobne platí
"abcdef"(3) = "abcdef"(3 TO 3) = "c"
V uvedených príkladoch znak = značí rovnosť reťazcov.
Musí platiť, že začiatok aj koniec musí zodpovedať existujúcej časti reťazca. Výnimkou je, ak je začiatok väčší než koniec, výsledkom je prázdny reťazec. Napr.
"abcdef"(5 TO 7)
dáva chybu
3 Subscript wrong
ale
"abcdef"(8 TO 7)=""
"abcdef"(1 TO 0)=""
Začiatok a koniec nesmú byť záporné čísla, inak dostaneme toto hlásenie o chybe:
B Integer out of range.
Výber podreťazcov si vyskúšajte na príkladoch nasledujúceho typu
10 LET a$="abcdefgh"
20 PRINT a$(2 TO 4):PRINT
a$(3)
Pre reťazcové premenné nemusíte len vyberať podreťazce, ale tiež ich meniť. Napr. zadajte
LET a$
= "V praci nespi!"
LET a$(3 TO 7) =
"skolenie"
PRINT a$
Všimnite si, že podreťazec a$(3 TO 7) je dlhý len 5 znakov, preto bolo použitých len prvých 5 znakov z reťazca "skolenie". To je charakteristické pre zmenu podreťazcov, podreťazec musí mať presné rovnakú dĺžku ako mal skôr. Z dlhšieho reťazca sa zoberie len potrebný počet znakov, kratší sa doplní sprava medzerami.
Presvedčíte sa, že je to tak!
Z reťazcov môžeme nielen vyberať podreťazce, ale reťazce môžeme aj spájať pomocou znaku +. Platí:
"abc" + "def" = "abcdef"
Na komplikované reťazcové vyjadrenie budete potrebovať zátvorky, pretože z nich môže byť ďalej vyberané. Platí:
"abc"+"def"(1 TO 2) = "abcde"
("abc"+"def")(1 TO 2) = "ab"