logo
методичка_1_05_ВНУ

Рядковий тип (string)

У Турбо Паскалі реалізований рядковий тип, що є узагаль­ненням символьних масивів, який дає змогу, на відміну від них, динамічно змінювати довжину рядка. Загальний вигляд опису рядкового типу такий:

type

<ім'я>=string[<максимальний розмір>];

Наприклад:

type

Line=string[80];

var

R: Line;

Тепер змінна R типу Line може набувати значення будь-якої послідовності символів (типу char) завдовжки від 0 до 80. Це значення може бути присвоєне або введене. Наприклад:

R:=’Гpyna КТ-14’; або readln(R); (3 клавіатури вводять Група КТ-14 <Enter>).

Як і для символьних масивів, тут використовується опера­ція конкатенації. Наприклад:

writeln(R+'складає іспит 20-го січня');

Максимальну довжину в описі рядкового типу зазначають цілим числом або не зазначають, за замовчуванням приймається 255.

Під змінну рядкового типу відводиться N+1 байтів пам'яті, де N- максимальна довжина.

Для визначення довжини поточного значення рядка вико­ристовують нульовий елемент

writeln(ord(R[0]))

З іншого боку, якщо спочатку присвоїти R[0]:=5;

то writeln(R) виведе "Група", тобто тільки п'ять елементів.

Частіше для визначення довжини рядка використовують функцію Length, параметром якої є вираз рядкового типу. На­приклад:

writeln(Length(R+'складає іспит 20-го січня'));

виведе число 33 - цілого типу.

Крім операції конкатенації, над змінними рядкового типу визначені операції порівняння, у разі використання яких діють такі правила:

а) коротший рядок завжди менший від довшого;

б) якщо довжини однакові, то поелементно порівнюються символи порівнюваних рядків з урахуванням лексикографічної впорядкованості значень стандартного символьного типу char.

Присвоєння змінній рядкового типу виразу з довжиною, більшою від максимально допустимої, зумовлює до обрізання рядка до максимальної довжини. Наприклад:

var

st: string [5];

.......................

st:='Програма';

writeln(st);

Буде виведене слово Прогр.

Доступ до окремих елементів рядкових типів такий самий, як і до елементів звичайних одновимірних масивів - за допомо­гою індексів у квадратних дужках. Наприклад:

R[5]; st[2].

У процесі поелементного опрацювання рядкових типів треба враховувати їхню поточну довжину.

У Турбо Паскалі з рядковими типами використовують низ­ку функцій:

1) concat([s1 ,s2,…,sn]: string): string – злиття довільної кількості рядків. Якщо довжина вислідного >255, то він буде обрізаний;

  1. copy(s: string; Index: integer; Count: integer): string - повертає частину рядкам довжиною Count, починаючи від символу з но­ мером Index;

  2. delete(var s: string; Index, Count: integer) - вилучає з рядка s частину цього рядка довжиною Count, починаючи з Index;

  3. lnsert(Source: string; var s: string; Index: integer) - вставляє рядок Source в рядок s, починаючи з Index;

  4. Length(s: string): integer - повертає довжину рядка s;

  5. Pos(Substr, s: string): byte - результатом цієї функції є номер позиції, з якої в рядку 5 розміщений рядок Substr.