Опис рядкових змінних

Природно, що для ефективної роботи з текстом необхідно уміти обробляти не тільки окремі символи, але і слова, фрази, рядки, тобто групи символів. Для обробки таких груп символів в Паскалі використовується рядковий тип даних. Для опису рядкових змінних використовується службове слово 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 ], то в результаті буде «викликана» буква ‘в’, яка є в рядку десятою по черзі.

Крім того для роботи з рядками використовують:

Процедури

Delete(Str,Poz,N) – вилучення N символів з рядка Str, починаючи з позиції Poz. Якщо Poz >255, виникає програмне переривання. N, Poz: integer

Insert(Str1,Str2,Poz) –вставка рядка Str1 у Str2, починаючи з позиції Poz (має бути значенням типу integer).

Str(Number,St) – перетворення числового значення величини Number і занесення результату в рядок St. Після Number може записуватися формат, аналогічний формату виведення. Якщо у форматі зазначена недостатня кількість розрядів, поле виведення розширюється до потрібної довжини.

Значення Number Вираз Результат
  Str (Number:6, St) ‘__1500’
4.8Е+03 Str (Number:10, St) ‘______4800’
  Str (- Number:3, St) ‘-76854’

Val(St,Number,Cod) – перетворює значення St у величину цілого або дійсного типу і розміщує результат у Number. Значення St не повинно містити зайвих пробілів на початку і наприкінці рядка. Cod – ціла змінна, значення якої не дорівнює нулю, якщо під час перетворення виявлена помилка. Cod буде містити номер позиції першого помилкового символу, a Number не буде визначено.

Значення Str Вираз Результат
‘1450’ val (Str, Number, Cod) 1450 Cod =0
‘14.2Е+02’ val (Str, Number, Cod) 1420 Cod =0
‘14.5А+01’ val (Str, Number, Cod) ? Cod =5

Функції

Copy(St,Poz,N) – копіює (запам’ятовує) зі змінної St підрядок довжиною N символів, по­чинаючи з позиції Poz. Якщо Poz > Lenght(Sf), то результатом буде пробіл; якщо Poz > 255, то виникне помилка при виконанні.

Pos(St1,St2) – виявляє номер першої появи в рядку St2 рядка St1. Результат має цілий тип і дорівнює номеру тієї позиції, де знаходиться перший символ рядка Stl. Якщо в St2 рядок Stl не знайдений, результат дорівнює 0.

UpCase(Ch) – перетворює малу літеру на велику. Параметр і результат мають літерний тип. Обробляються тільки літери латинського алфавіту.

Concat(A, В,...) – з’єднує рядки в один рядок.

Рядком нульової довжини називається вираз ‘ ‘. Розглянемо задачу, що зумовлює застосування такого даного.



Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: