Опис символьних змінних
var < ім’я_змінної >:char;
char – службове слово, що позначає тип даної змінної (char – це скорочення від англійського слова character, що означає в перекладі «символ»).
Наприклад, var sim, bukv: char;
Якщо змінній символьного типа присвоюється яке-небудь значення, то його також потрібно помістити в апострофи. Наприклад: Sim: = ‘ш’; означає що змінній sim було присвоєне значення букви ш. Можливий в програмі і такий оператор присвоєння: cfr:=‘7’; Наявність в програмі такого запису говорить про те, що змінній cfr присвоюється значення символу 7 (а не числа 7, як було б у випадку з числовою змінною). Різниця в тому, що символ 7 не може брати участь в арифметичних і інших операціях, які можливі над числом 7.
Порівняння символьних змінних
Подібно до звичайних чисел символьні величини можна порівнювати. При цьому фактично порівнюються не самі ці величини, а відповідні їм числові коди. Наприклад, можна записати таку операцію порівняння: ‘л’<‘н’ результат цієї операції буде істинним (рівний true), оскільки код символу ‘л’ рівний 171, а код символу ‘н’ рівний 173. А якщо ми запишемо наступне співвідношення: ‘к’>‘т’ то таке співвідношення буде помилковим (false), оскільки код символу ‘к’ рівний 170, а символу ‘т’ – 226. Можна перевіряти символьні величини також на рівність або нерівність один одному. Знаки для операцій порівняння символьних величин використовуються ті ж, що і для числових величин.
Функції перетворення chr і ord
У мові Паскаль для роботи з символьними змінними використовуються спеціальні стандартні функції chr і ord. Як вхідне значення (аргументу) функції chr указується десятковий код символу, а як результат видається відповідний коду символ. Загальний вид функції: chr(к), де k – десятковий числовий код символу. Наприклад, значення chr(33) буде рівне ‘!’, chr(233) – ‘щ’ і т.д.
Дія функції ord протилежна функції chr. Аргументом даної функції є символ, а значенням – десятковий код даного символу. Загальний вид даної функції: ord(‘s’) де s – символ, код якого ми визначаємо.
Зверніть увагу, що оброблюваний функцією символ повинен бути обов’язково поміщений в лапки, інакше при компіляції програми з використанням даної функції буде видане повідомлення про помилку. Тому запис функції повинен виглядати в програмі таким чином ord (‘ж’), ord "(‘ф’) і т.д. Для символу ‘ж’ функція видасть код 166, для символу ‘ф’ – 228.
Робота з рядками Опис рядкових змінних
Природно, що для ефективної роботи з текстом необхідно уміти обробляти не тільки окремі символи, але і слова, фрази, рядки, тобто групи символів. Для обробки таких груп символів в Паскалі використовується рядковий тип даних. Для опису рядкових змінних використовується службове слово string. Опис рядкової змінної в загальному вигляді виглядає таким чином: var <ім’я_зміної> : string[довжина]; після слова string вказується довжина описуваної змінної, тобто максимальна кількість символів, яка може містити дана змінна. Наприклад: var stroka:string[25];
Параметр, поміщений в квадратні дужки, не є обов’язковим і використовується в тому випадку, якщо існують причини, по яких необхідно жорстко обмежити максимальну довжину рядкової змінної. Якщо ж після імені змінної її довжина не указується, то за замовчуванням вона вважається рівною 255 символам. В цьому випадку опис символьної змінної виглядатиме так: var stroka:string;
Значення символьних змінних так само, як і вже знайомі нам символьні константи (до текстових констант відносяться, зокрема, повідомлення, що виводяться оператором Writeln), повинні обов’язково полягати в апострофи. Таким чином, оператор присвоєння рядкової змінної stroka значення ‘набір символів’ виглядатиме таким чином:
stroka:=‘набір_символів’;
Операція зчеплення (конкатенації) (+) застосовується для з’єднання кількох рядків в один результуючий рядок. Наприклад, ‘П’+’Е’+’О’+’М’=‘ПЕОМ’
Довжина результуючого рядка не повинна перевищувати 255 символів.
Операції відношення (=, <, >, <>, <=, >=) здійснюють порівняння двох рядкових операндів і мають пріоритет нижчий, ніж операції зчеплення (склеювання).
Порівняння рядків виконують зліва направо до першого не співпадаючого символу. Більшим вважається той рядок, в якого перший неспівпадаючий символ буде мати більший номер у кодовій таблиці ASCII. Якщо рядки мають різну довжину, але в загальній частині збігаються, вважається меншим той рядок, у якого довжина менша. Рядки вважаються рівними, якщо вони рівної довжини і містять однакові символи та розташовані в однаковому порядку Для присвоєння рядковій змінній значення результату рядкового виразу використовується оператор присвоювання (:=). Якщо довжина значення змінної після виконання оператора присвоювання перевищує максимально допустимий при описі розмір, усі зайві символи праворуч відсікаються (тобто втрачаються!). Допускається змішування в одному виразі операндів рядкового і символьного типів.
Для роботи із рядковими змінними в мові Паскаль використовуються різні стандартні процедури та функції, серед яких відзначимо функцію length. Аргументом даної функції є ім’я якої-небудь рядкової змінної, а значенням – фактична кількість символів, яка міститься у відповідному їй рядку (ця величина може бути менше максимальної довжини, заданої при описі змінної).
Так значення функції length, аргументом якої є розглянута вище змінна stroka, буде рівне 14, а не 25, як вказано в розділі описів, оскільки фраза ‘набір символів’ містить 14 символів.
Якщо є необхідність працювати не зі всім рядком цілком, а з яким-небудь окремим символом, що міститься в ній, то до цього символу можна звернутися в програмі безпосередньо. При цьому необхідно вказати поряд з ім’ям рядкової змінної порядковий номер символу в рядку. Номер символу вказується в квадратних дужках. Наприклад, якщо ми напишемо в основній частині програми (а не в розділі описів) stroka[5], то працювати ми будемо з буквою «р», яка є п’ятим по черзі символом в даному рядку.
Номер символу в рядку, взятий в квадратні дужки, може вказуватися не тільки у вигляді числової константи, але і за допомогою змінної цілого типа. В цьому випадку номер символу, що «викликається», буде рівний значенню даної цілочислової змінної. Наприклад, якщо ми присвоїмо цілочисловій змінній i значення 10, а потім вкажемо в програмі stroka[i], то в результаті буде «викликана» буква ‘в’, яка є в рядку десятою по черзі.
Крім того для роботи з рядками використовують: