Строкові типи даних
Рядки в Паскалі - це дані тіпаstring. Вони використовуються для зберігання послідовностей символів. У Паскалі довжина стандартної рядка обмежена 255 символами. Під кожен символ відводиться по одному байту, в якому зберігається код символу. Крім того, кожен рядок містить ще додатковий байт, в якому зберігається довжина рядка.
Якщо заздалегідь відомо, що довжина рядка буде менше 255 символів, то програміст може сам задати максимальну довжину рядка.
Приклади опису рядків:
str_type = string [12];
s5, s6, s7: string [7];
s: string = 'FreePascal'
Існує поняття порожнього рядка, тобто рядки, яка не має елементів. Порожній рядок позначається двома поруч стоять апострофами (наприклад, st: = '').
Операції над рядками
Рядки можна привласнювати один одному. Якщо максимальна довжина змінної зліва менше довжини привласнюється рядки, то зайві символи праворуч відкидаються.
s1: = 'this is text';
Рядки можна об'єднувати за допомогою операції конкатенації. яка позначається знаком +.
Рядки можна порівнювати один з одним за допомогою операцій відносини. При порівнянні рядки розглядаються посимвольний зліва направо, при цьому порівнюються коди відповідних пар символів. Рядки рівні, якщо вони мають однакову довжину і посимвольний еквівалентні. У рядках різної довжини існуючий символ завжди більше відповідного йому відсутнього символу. Меншою буде той рядок, у якій менше код першого неспівпадаючі символу (незалежно від максимальних і поточних довжин порівнюваних рядків).
'Abc' <'abc ' (false)
Ім'я рядка може використовуватися в процедурах введення-виведення. При введенні в рядок зчитується з вхідного потоку символів, яка дорівнює довжині рядка або менше, якщо символ перекладу рядка (який вводиться натисканням клавіші Enter) зустрінеться раніше. При виведенні під рядок відводиться кількість позицій, рівне її фактичної довжині.
До окремого символу рядка можна звертатися як до елементу масиву символів, наприклад s1 [3]. Символ рядка сумісний з типом char. їх можна використовувати у виразах одночасно, наприклад:
Можна здійснювати корекцію будь-якого символу строкової змінної, для чого у відповідному операторі достатньо вказати ім'я змінної типу string. слідом за яким в квадратних дужках задається номер її елемента (наприклад, str [3]: = 'j').
Елементи рядки нумеруються з одиниці, тому що в кожній строкової змінної є елемент з номером 0, в якому у вигляді символу зберігається довжина поточного рядка. Щоб дізнатися поточну довжину, досить застосувати функцію ord до нульового елементу рядка. наприклад:
Нульовий елемент строкової змінної можна коригувати. При цьому буде змінюватися поточна довжина рядка. Наприклад, вираз str [0]: = # 50 встановлює поточну довжину рівною 50.
Процедури і функції для роботи з рядками
Функція Concat (s1, s2. Sn) повертає рядок, що є злиттям рядків s1, s2. sn.
Процедура Delete (s, start, len) видаляє з рядка s, починаючи з позиції start, подстроку довжиною len.
Процедура Insert (subs, s, start) вставляє в рядок s підрядок subs, починаючи з позиції start.
Функція Length (s) повертає фактичну довжину рядка s, результат має тип byte.
Функція Pos (subs, s) шукає входження підрядка subs в рядок s і повертає номер першого символу subs в s або нуль, якщо subs не міститься в s.
Процедури перетворення типів
Процедура Str (x, s) перетворює числове значення x в рядок s, при цьому для x може бути заданий формат, як в процедурах виведення write і writeln. наприклад:
Результат: s = '123'.
Процедура Val (s, x, errcode) перетворить рядок s в значення числової змінної x, при цьому рядок s повинна містити символьне уявлення числа. У разі успішного перетворення змінна errcode дорівнює нулю. Якщо ж виявлено помилку, то errcode буде містити номер позиції першого помилкового символу, а значення x не визначене.
Рядки і масиви символів