Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
21-60.docx
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
270.43 Кб
Скачать
  1. Поняття про рядок. Функції та процедури обробки рядків.

Рядок - це скінченна послідовність символів, яку можна розглядати як особливу форму одновимірного масиву. Нагадаємо, що одна з характеристик масиву - це кількість його елементів, яка є фіксованою величиною і визначається під час оголошення масиву. Рядок як масив символів теж характеризується довжиною, тобто кількістю символів. Але для рядка розрізняють поняття загальної та поточної довжини. Загальна довжина рядка визначається об'ємом оперативної пам'яті, що була надана рядку під час його оголошення. Поточна довжина рядка визначається кількістю символів у ньому в конкретний момент виконання програми, вона ніколи не перевищує загальної довжини. Спосіб визначення поточної довжини рядка залежить від способу оголошення відповідної рядкової змінної.

Процедура видалення дає можливість видалити певну кількість символів з рядка, починаючи із заданої позиції. Її прототип такий:

Delete(var s:string; Index:integer; count:integer);

Вказана процедура має три параметри: s — рядок, з якого видаляються символи; Index — індекс символа, з якого починається видалення; Count — кількість символів, що мають бути видалені.

Під час видалення довжина рядка автоматично зменшується на кількість видалених символів.

Зворотна операція вставки символів у рядок реалізується процедурою Insert, що її параметрами є два рядки й одне ціле число:

Insert(source:string; var s:string; index:integer);

Зміст параметрів процедури є таким: Source — рядок, що вставляється в інший рядок; s — рядок, куди здійснюється вставка; Index — номер позиції, з якої вставка починається.

Після виконання вставки символів довжина рядка автоматично збільшується в межах заданої в оглошенні довжини. Якщо вставка здійснюється всередину рядка, то місце для підрядка вивільняється за рахунок зсуву символів рядка вправо, тобто виконується серія присвоєнь вигляду s[i+c] :=s[i]. Як приклад наведемо програму, що вставляє у рядок ' frnd' символи ' іe'.

За допомогою бібліотечних функцій, що мають параметри типу string, можна визначити поточну довжину рядка, скопіювати рядки та їх підрядки, визначити позицію входження підрядка в рядок та виконати конкатенацію рядків. Отже, наведемо прототип функції копіювання підрядка в новий рядок:

Copy(s:string; Index:integer; cout:integer):string;

Параметри функції: s — рядок, який копіюють; Index — позиція, з якої розпочинається копіювання; Count — кількість символів, що копіюються. Якщо загальна довжина рядка, який утворюється, є меншою за кількість символів, що копіюються, то у вихідному рядку будуть тільки перші символи з числа тих, які треба скопіювати. Наведемо приклад:

Для визначення поточної довжини рядка s крім операції ord(s[0]) можна застосувати функцію Length(s). її прототип є очевидним:

Length(s:string):integer;

Операції лексичного аналізу потребують визначення наявності певних символів у рядках. У мові Pascal означена функція, що повертає номер позиції першого входження символу або підрядка в рядок. Прототип функції такий:

Pos(Substr:string; s:string):byte;

У функції означено два параметри: Substr — підрядок, позицію першого входження якого необхідно повернути; s — рядок, до складу якого має входити підрядок. Якщо потрібного підрядка в рядку немає, то функція повертає нуль. Наведена нижче програма всі пробіли на початку рядка s замінює цифрами 0.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]