Orbis pictus 21. století Tato prezentace byla vytvořena v rámci projektu
Práce s řetězci OB21-OP-EL-KONP-JANC-M-3-003
Znaky mohou být ukládány do proměnné typu char. Jejich délka je 1 byte. Tato proměnná reprezentuje písmena, číslice a jiné znaky, jako znaménko plus, mínus, tečka, čárka, závorky a další. Některé znaky nejsou zobrazitelné (jako např. CR a LF, které zakončují konec řádku v souborech). Znaková konstanta může být v programu vyjádřena znakem uzavřeným mezi znaky ‘ a ‘ (apostrofy) nebo může být vyjádřena číselnou konstantou, před kterou je znak #.
Práce s řetězci Jeden znak může být přečten z klávesnice funkcí ReadKey. Ta čeká na stisknutí klávesy, pak hodnotu vloženého znaku vrátí a program pokračuje za příkazem ReadKey. Na rozdíl od čtení dat z klávesnice příkazem readln, funkce ReadKey vložený znak nezobrazí. Řetězce jsou proměnné typu string. Je v nich uložen text skládající se ze znaků. Řetězec může být deklarován dvěma způsoby, bez udání délky a s udáním délky. Není-li v deklaraci udána, je délka řetězce 255 znaků.
Práce s řetězci Obr. 1 Uložení řetězce v paměti počítače
Práce s řetězci Řetězec je v paměti uložen podobně jako pole typu char (ale není to totéž). Největší počet znaků, který může být v řetězci uložen, je roven jeho deklarované délce, ale řetězec může obsahovat méně znaků. V prvním bajtu na indexu 0 je číslo, které udává skutečný počet znaků v řetězci. V dalších bajtech na indexech 1,2,3,.. jsou znaky řetězce.
Práce s řetězci S jednotlivými znaky v řetězci je možné zacházet podobně jako s členy pole typu char. Řetězec může být také prázdný (nulový), neobsahovat žádné znaky. V tom případě hodnota bajtu na indexu 0 je nula. Řetězec může být vyprázdněn (nulován) příkazem jméno_řetězce := ‘’. Mezi apostrofy není žádný jiný znak.
Práce s řetězci Pokud dosazovaný řetězec znaků obsahuje více znaků než má cílový řetězec do nehož je dosazováno (na levé straně symbolu přiřazení) deklarováno, jsou nadbytečné znaky odříznuty. To platí i pro čtení znaků z klávesnice.
Procedury a funkce pro práci s řetězci Pro práci s řetězci se používají tyto procedury a funkce: Length (řetězec) – délka Funkce vrací skutečný počet znaků, které řetězec obsahuje, bez ohledu na jeho deklarovanou délku. Concat (ŘetězecA, ŘetězecB, …) – spojit Funkce vrací řetezec, který je spojením dvou nebo více řetezců.
Procedury a funkce pro práci s řetězci Copy (Řetězec, Poloha, PocZnaků) – kopírovat Funkce vrací řetězec (podřetězec), který je kopírován (vyříznut) z jiného řetězce od hodnoty Poloha. Délka kopírovaného řetězce je Pocznaků. Řetězec, ze kterého jsou znaky kopírovány je nezměněn. Pos (ŘetězecB, ŘetězecA) – pozice, poloha Funkce vrací polohu (počet znaků od začátku) prvního výskytu řetězce B v řetězci A. Poloha prvního znaku je 1. Jestliže se řetězec B v řetězci A nevyskytuje, funkce vrací hodnotu 0.
Procedury a funkce pro práci s řetězci Delete (Řetězec, Poloha, PocZnaků) – vymazat, odstranit Procedura vymaže v řetězci znaky od hodnoty Poloha. Počet vymazaných znaků je PocZnaků. Insert (ŘetězecA, ŘetězecB, Poloha) – vložit Procedura vloží řetězec A do řetězce B od hodnoty Poloha (v řetězci B).
Procedury a funkce pro práci s řetězci Upcase (Znak) – velká písmena Funkce změní malé písmeno abecedy (‘a’ … ‘z’) na velké (‘A’ … ‘Z”). Ostatní znaky jsou nezměněny. Str (Číslo, Řetězec) – řetězec Procedura provede konverzi Čísla (typ integer nebo real) do Řetězce. Konverze je provedena podle udané formátové specifikace. Je to stejné jako pro výstup dat na obrazovku příkazem writeln.
Procedury a funkce pro práci s řetězci Val (Řetězec, Číslo, Status) – hodnota Procedura provede konverzi čísla v Řetězci do Čísla (typu integer nebo real). Aby byla konverze úspěšná, formát čísla v Řetězci musí vyhovovat deklarovanému typu Čísla. Je to stejné jako pro vstup čísla z klávesnice příkazem readln. Proměnná Status indikuje výsledek konverze. Je-li úspěšná, hodnota Číslo = 0 a hodnota Status udává polohu znaku v Řetězci, který problém způsobil. Mezery před číslem v Řetězci jsou ignorovány.
Děkuji za pozornost Ing. Ladislav Jančařík
Literatura Putz K.: Pascal – učebnice základů programování, Grada Publishing Praha, 2007