Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лінійні алгоритми.docx
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
87.49 Кб
Скачать

2.Стандартні процедури та функції обробки рядків.

§ 1. Рядковий тип. Функції та процедури обробки рядків.

В ТП є два типи символьної інформації: char та string. Перший з них використовується для аналізу окремих символів, другий - для аналізу набору (ланцюжка або рядна) символів, які являють собою єдине ціле.

     Рядок – це впорядкована послідовність символів. Діапазон змінних рядкового типу 1..255.

     Змінні рядкового типу д.б. описані з використанням розділу опису або безпосередньо в розділі опису змінних

1.       Type st =string[n];                          2.  Var s   :string[n];

Var s          :st;

де   st  -  ім'я типу;

         s   - ім'я змінної;

         n  - розмір рядка (область пам'яті), кількість символів в рядку

                (атрибут довжини n=1..255).

Якщо рядок str описано як string, то до окремих символів рядка можна звертатися як str[i], причому str[i] має тип char. Нульовий байт рядка містить інформацію про її фактичну довжину.

     Над змінними рядкового типу (стрінгамі) можна виконувати наступні операції:

-          привласнення (введення/висновок);

-          порівняння

-          конкатенацію.

Привласнення. Змінній типу  String можна привласнити значення іншої змінної або рядкової константи

    St:=’Студент’;

    Stu:=St;

    При цьому довжина рядкової константи д.б. не більше оголошеної інакше надмірні символи будуть проігноровані.

Порівняння. Порівняння рядків виробляється за допомогою операцій відношення  (=, <>, <, >, <=, >=) шляхом по парного порівняння двох символів різних рядків зліва на право (порівнюються їх числові уявлення по таблиці кодів ASCII).

     Два рядки рівні, якщо вони однакової довжини і складаються з однакової послідовності символів.

a’<’b’            оскільки       ORD(a’)<ORD(’b’)

a1’<’a2’            оскільки       ORD(a1’)<ORD(’a2’)

‘ a’<’a ’          оскільки      ORD(‘ ’)<ORD(’a’)

kom’<’com’     оскільки      ORD(k’)<ORD(’c’)

Конкатенація (Зчеплення). Це об'еднання двох і більш рядків в один. Операція позначається знаком ‘+’ і має вищий пріоритет, ніж порівняння. Вона застосовується до стрінгових змінних і констант. При цьому довжина рядкової константи д.б. не більш оголошеної інакше надмірні символи будуть проігноровані.

S:=St1+St2; S:=’TURBO’+’PASCAL’; R:=’5’+’.’+’5’;  (R:=5.5)

Для обробки рядкових даних типу string у мові Pascal використовуються стандартні функції та процедури:

▪ Length (рядковий вираз) — повертає довжину рядкового виразу. Приклад: var nrinteger; xrstring; begin х :=' Київ — столиця України ';

Змінна n буде мати значення 22, тому що у змінній х знаходиться 22 символи.

▪ Delete (рядковий символ, n, m) — вилучає з рядкового виразу m символів, починаючи з символу з номером n. Приклад:

var r:string; begin

х:= ' радіоприймач не працює ';

Delete   (x, 14, 3);   Змінна      х   набуде значення ' радіоприймач працює '.

▪ Insert (виразі, вираз2, n) в рядок вираз2 вставляється рядок виразі, починаючи з позиції з номером п. Приклад:

var x,y rstring; begin

х :=' завтра сонце '; у :=' буде ';

Insert (x, y, 7); Змінна х набуде значення ' завтра буде сонце '.

▪ Copy (рядковий вираз, n, in) — виділяє в рядковому виразі m символів, починаючи з символу з номером n. Приклад:

var х, у: string; begin

х :=' наведена програма працює ';

у := сору (х, 9, 8);      Змінна     у набуде значення ' програма '.

▪ Pos (виразі, вираз2) — повертає номер позиції, з якої перший раз починається виразі у виразі2. Якщо виразі не входить до виразу2, функція                                                                               повертає значення 0. Приклад:

var x,y,z:string; begin

х := ' вхідні дані процедури '; у :=' дані ';

z = pos (x, y); Змінa z набуває значення 8.

Приклад. Нехай змінні типу string у процесі введення набувають таких значень: х =' Функція довжини рядка ’, у =-' видає символів *,z= — = ' кількість '. Необхідно розробити програму, яка із наданих змінних формує у змінній р такий рядок ‘функція рядка видає кількість символів і підраховує у ньому кількість символів’.

Приклад 1.1. Підрахувати у реченні кількість слів, які не починаються з цифри.

Program Predl;

Var         text:        string;

               tr:            string[2];

               kol, i, dl: integer;

Begin

writeln (‘введіть речення’);

readln (text);

dl:=length (text);

kol:=0;

insert (‘ ’, text, 1);

for i:=1 to dl do

               begin

               tr:=copy (text, i, 2);

               if (tr[1]=’ ‘) and (tr[2]=’ ‘) then

                               case tr[2] of

                               ‘0’..’9’:

               else kol:=kol+1;

               end;

end;

writeln (‘заданий текст’);

writeln (text);

writeln (‘кількість слів =’, kol:3);

readln;

END.

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