Програмування постійно пов'язане з роботою з деякими даними, зокрема, з рядками. Рядковий оператор задається однаково в більшості мов, у тому числі в Pascal: string. Але в Паскалі є свої особливості і властивості, які необхідно знати перед початком роботи.
Що є рядок в Паскалі?
Перед тим як розбиратися з синтаксисом строкового типи даних в Паскалі, слід розуміти, що може бути рядком. Фактично в Pascal string - це масив символів, кожен з яких може бути будь-яким елементом з ASCII-таблиці. Тобто в як рядок може використовуватися будь-яка літера, цифра, знак пунктуації або пробіл.
Максимальна число символів в одному рядку становить 255 одиниць, і кожен з них отримує відповідний порядковий номер. Тому, якщо необхідно записати великий текст в змінну, слід створити масив string. Pascal коректно обробляє цей запит, і можна буде зберігати значно більш довгі текстові дані.
Рядковий тип даних
За рядка відповідає тип String. Pascal дозволяє програмісту вказати точне число символів або ж залишити її довжину по умовчанню - в цьому випадку вона буде дорівнює 255. Для оголошення рядковій змінній, перерахувавши однакові аргументи, необхідно після двокрапки вказати ключове слово - string і, при необхідності, в квадратних дужках прописати довжину рядка. У наведеному нижче прикладі задається рядок "str", довжиною 10 символів: var str: string[10]. У коді програми Pascal string можна задавати будь-які значення - для цього необхідно лише укласти їх в одинарні лапки.
Операції з рядками
В залежності від мови, визначається і кількість операцій, з якими може працювати рядок. Паскаль дозволяє проводити порівняння і злиття строкових даних. Операція злиття (іншими словами конкатенація або зчеплення) виконується для об'єднання декількох рядків в один. Вона реалізована за допомогою знаку додавання: "+". З його допомогою можна вибудовувати єдину рядок, що складається з ряду виразів, констант і змінних.
Варто відзначити, що при об'єднанні слів у речення шляхом конкатенації рядків, між кожним елементом пробіл буде відсутній. Тому, бажаючи отримати грамотно побудовану конструкцію, слід в потрібних місцях явно вказувати наявність проміжку, додаючи символ пробілу, наприклад, так: "".
Ще одна операція, поддержваемая в Pascal, - string compare або порівняння рядків. Для неї також використовуються найпростіші математичні знаки: рівності (=); більше/менше (> <); нерівності ( ); а також більше або одно і менше або дорівнює (>= і <=). Результатом операції буде відносини повернення логічного значення true або false. Порівняння рядків виробляється посимвольно, і при знаходженні першої нестикування результат буде визначатися згідно таблиці кодування. Так, при з'ясуванні, яка рядок більше, на позиції, де будуть знаходитися різні символи, буде проведено порівняння коду в даній таблиці, а за результатами його і буде визначено відповідь, який поверне операція.
Функції із рядковими змінними
Як і в будь-якій мові програмування, у Pascal існує ряд функцій, з якими може бути використана рядок. Паскаль дозволяє копіювати частину змінної, об'єднувати кілька рядків між собою, знаходити підрядок і обчислювати її довжину. Робиться це з допомогою наступних функцій 4:
За копіювання частині рядка відповідає функція Copy. Вона містить три параметр - рядок або ім'я змінної, позицію початку і число символів, які необхідно скопіювати: Copy (S, poz, n) - тут S - символьна змінна, а poz і n - ціле число. Крім конкатенації рядків за допомогою символу "+", здійснити дану операцію більш зручним способом можна з допомогою функції Concat. В якості аргументів використовуються всі рядки та символьні вирази, які треба об'єднати: Concat(s1s2). Часто використовуваної в Паскалі функцією є Length. З її допомогою можна обчислити довжину рядка - тобто, дізнатися число символів в ній. Єдиним аргументом її є сама рядок - на виході користувач отримає цілочисельне значення: Length(str). І останній з функцій в Паскалі є пошук початку підрядка у рядку - Pos. Вона повертає номер символу, з якого починається шукана підрядок, а в разі її відсутності, результатом виконання є 0: Pos(subS, S).
Процедури для рядків у Паскалі
Стандартних процедур, використовуваних в Pascal, всього дві. Перша дозволяє видалити деяку підрядок, а друга - вставити в рядок ряд символів.
Так, процедура Delete-видаляє з обраної рядки, з вказаної позиції, підрядок з певного числа символів. Кожен з цих параметрів є аргументом даної операції: Delete (S, poz, n). А вставити послідовність символів в рядок можна з допомогою Insert. Процедура має у ролі параметрів три значення - підрядок, рядка і позицію, починаючи з якої буде зроблена вставка символів: Insert(subS, S, poz).
Зміна типу даних з рядків
При виконанні завдань, нерідко доводиться змінювати тип змінних. Розглянемо, наприклад, як перетворити string в integer. Pascal не дозволяє складати числа, записані в рядку, тому, для добутку суми, їх тип необхідно змінити. Для цього тут є спеціальні процедури:
Щоб перетворити string в integer в Pascal необхідно скористатися процедурою StrToInt. Отримане ціле число можна записати в змінну, так і проводити з нею математичні дії. Якщо необхідно отримати число з плаваючою точки з заданої рядки, використовується процедура StrToFloat. Так само, як і з цілочисельним, результат її виконання можна відразу ж використовувати.
Щоб зробити зворотні операції перетворення числа в рядок - необхідно скористатися процедурами FloatToStr для чисел з плаваючою точкою і IntToStr для цілочислових значень. Ще одним способом зміни типу є використання спеціальних процедур, для яких не потрібно знати початковий або кінцевий тип даних, - Str і Val. Перша виробляє переклад з числа в рядок і має в якості аргументу два значення - початкове число і змінну з іменем рядка. Друга ж виконує зворотну операцію, і має на один параметр більше - крім числового і рядкового значення, в процедурі передбачений код, який повідомляє про коректність перетворення. Так, наприклад, намагаючись записати дробове число в цілочисельну змінну, код покаже номер символу, на якому відбувся збій, а при вірному перетворенні, її значення буде дорівнює 0.