Робота з текстовою інформацією

У Паскалі при роботі з текстовою інформацією існує можливість обробки одиночних символів типу Char та послідовності символів — рядків типу String.
Символьний тип. Тип Char — це один з базових типів мови, призначений для збереження та опрацювання одного символу. Множиною його значень є окремі символи (букви, цифри, знаки), впорядковані у відповідності із розширеним набором символів ASCII-коду. Змінна цього типу займає 1 байт пам’яті. Завдяки тому що в пам’яті машини символи зберігаються у вигляді кодів (більшим вважається той символ, чий код більший), їх можна порівнювати. Для символів припустимі всі операції порівняння: <, <=, =, >, >=, <>.
Опис даних символьного типу:
Const Name1 = ‘v’; — опис символьної константи,
Var Name2: CHAR; — опис символьної змінної.
Як правило, значення для символьних змінних та констант задаються в лапках, наприклад, ‘f’, ‘1’, ‘+’. Також можна задати значення, вказавши безпосередньо числове значення ASCII-коду, поставивши перед цим числовим кодом знак #, наприклад, #35, #102.
У Паскалі для роботи з символьною інформацією реалізовані функції перетворення: CHR(N) — символ з кодом N, ORD(S) — код символа S. Також застосовуються функції, що визначають SUCC(S) — наступний символ, PRED(S) — попередній символ. Для цих функцій виконуються такі залежності:
SUCC(S) = CHR(ORD(S) +1);
PRED (S) = CHR(ORD(S) –1).
Для латинських літер ‘a’..‘z’ виконується функція UPCASE(S), яка переводить ці літери у верхній регістр ‘A’..’Z’.
Рядковий тип. Тип String — тип даних, призначений для збереження та опрацювання послідовності символів. Рядок можна розглядати як особливу форму одновимірного символьного масиву.
Опис даних рядкового типу:
Const Name1=‘computer’; — опис рядкової константи,
Var Name2: STRING; — опис рядкової змінної,
Name3: STRING [20]; — опис рядкової змінної заданої довжини,
За умовчанням довжина рядкової змінної дорівнює 255 символам, але можна обмежити довжину рядка за допомогою явної вказівки довжини рядка.
У Паскалі реалізовано опрацювання рядків двома шляхами: опрацювання рядка як єдиного цілого та як об’єкта, який створюється з окремих символів.
Перший шлях надає можливість:
• присвоєння рядковій змінній за одну операцію цілого рядка символів, наприклад, Name2:=‘computer’; Name3:=‘science’;
• об’єднання рядків у довільному порядку за допомогою операції «+» (операції скріплення, об’єднання), наприклад,
Name3:= ‘computer’+‘science’;
Name3:= Name2 + Name3;
• порівняння рядків за допомогою операцій порівняння: <, <=, =, >, >=, <>, наприклад,
If Name3 <> Name2 then write (‘no’);
Другий шлях надає можливість до кожного окремого символу рядка звертатися за його номером позиції як до елемента масиву за індексом, наприклад,
Name3:= Name2 [6] + Name2 [2] + Name2 [4];
Елемент з нульовим індексом містить символ, код якого вказує на дійсну довжину даного рядка.
У Паскалі реалізовані процедури і функції для опрацювання рядків. Поточну довжину рядка S можна дізнатися за допомогою функції LENGTH (S).
Група функцій та процедур, спрямована на опрацювання фрагментів рядка:
• функція COPY(S, N, M) — копіювання фрагменту рядка S довжиною M, що починається з позиції N;
• функція POS (S1, S) — пошук фрагменту S1 в рядку S (отримуємо позицію, з якої починається фрагмент S1 в рядку S);
• функція CONCAT (S1, S2,…) — об’єднання рядків S1, S2,…;
• процедура INSERT (S1, S2, M) — вставка фрагменту S1 у рядок S2 із позиції M;
• процедура DELETE (S1, N, M) — вилучення частини рядка S1 довжиною M, починаючи з позиції N;
• процедура VAL (S, N, Code) — перетворення рядка цифрових символів S у число N (параметр Code=0, якщо рядок S утворений не із цифрових символів);
• процедура STR (N, S) — перетворення числа N у рядок цифрових символів S.
Для сортування символьних рядків (наприклад, за алфавітом) доцільно створити масив символьних рядків (масив типу String), що, з урахуванням можливості використання операцій порівняння для рядків, дозволить у простий спосіб застосовувати основні алгоритми сортування.