Народна Освіта » Інформатика » § 33. Величини рядкового типу

НАРОДНА ОСВІТА

§ 33. Величини рядкового типу

Рядок — це послідовність символів. Для зберігання рядків призначений рядковий тип даних (String), який широко використовується в мові Object Pascal для опрацювання текстових даних.

Рядкові константи у тексті програми беруть в одинарні лапки. Опис рядкової змінної має вигляд:

var S: String;

Кількість символів у рядку може досягати 28 - 1 = 255 символів.

Довжину рядкової величини можна обмежити, якщо в її описі вказати максимально допустиму кількість символів:

var S: String[10j;

Звернутися до окремого символу рядкової змінної можна за його номером у рядку: S[i] — ї-й символ рядка S.

Перетворити текст «to learn» на текст «to reach», виконуючи операції над символами заданого рядка. var х: String; begin X := 'to learn';

X[4] := X[7]; X[7] := 'c'; X[8] := 'h'; end;

Конкатенацією двох або більше рядків називають їх злиття в один рядок. Цю операцію позначають символом '+'.

Операція конкатенації дозволяє об’єднувати в один рядок змінні й константи рядкового типу (String) і символьного типу (Char).

Виконати конкатенацію рядків. var X: String; begin

X := 'a' + 'Ab' + 'Bc'; // отримуємо X = 'aAbBc';

end;

Стандартні функції для обробки рядків

Для роботи з величинами рядкового типу у мові Object Pascal існують стандартні процедури і функції. Розглянемо деякі з них.

1) Функція Length(S: String) повертає довжину рядка (кількість символів).

var S: String; L: Integer; begin

S := 'Hello!';

L := Length(S); // L = 6

end;

2) Функція Pos(SubS, S: String) повертає позицію першого входження підрядка SubS в рядок S. Нумерація символів починається з одиниці. У разі відсутності підрядка в рядку функція повертає 0.

var S, SubS: String; P: Integer; begin

S := 'Hi! How do you do?';

SubS := 'do';

P := Pos(SubS, S); // P = 9

end;

3) Функція Copy(S: String; n, Length: Integer) повертає підрядок рядка S завдовжки Length, починаючи з n-го символу.

var S1, S2: String; begin

51 := 'This is a test for Copy(OK) function.';

52 := Copy(S1, 11, 4); // S2 = 'test' end;

4) Процедура Delete(S: String; i, n: Integer) вилучає n символів із рядка S, починаючи з ї-го символу. var S: String; begin

S := 'Hello, world!';

Delete(S, 6, 7); // S = 'Hello!'

end;

5) Процедура Insert(SubS: String; S: String; Pos: Integer) вставляє в рядок S підрядок SubS у позицію Pos.

var S: String; begin

S := 'Hello, world!';

Insert(' my', S, 8); // S = 'Hello, my world!'

end;

6) Функція StringReplace(S, OldS, NewS, [rfReplaceAll, rfIgnoreCase]) замінює в рядку S підрядок OldS на рядок NewS. У квадратних дужках задаються параметри заміни:

rfReplaceAll: заміняти всі входження підрядка OldS у рядку S; rfIgnoreCase: нехтувати регістром під час пошуку підрядка OldS у рядку S.

var before, after: String; begin // Заміна всіх входжень A на THE before := 'This is a way to live A big life';

after := StringReplace(before, 'a', 'THE', [rfReplaceAll, rfIgnoreCase]);

{ after= 'This is THE wTHEy to live THE big life } end;

7) Функція ReverseString(S: String) розташовує символи рядка S у зворотному порядку. Для застосування цієї функції необхідно підключити до програми модуль StrUtils. uses StrUtils; var SI, S2: String; begin

51 := '1234abcd';

52 := ReverseString(SI); // S2 = 'dcba4321' end;

Порівняння рядків

Рядки можна порівнювати один з одним, використовуючи лексикографічний порядок (подібний до порядку слів у словнику). Рядки порівнюються посимвольно згідно з їхніми кодами в таблиці кодів. var SI, S2, S3: String; BI, B2: Boolean; begin

SI := '123'; S2 := '456';

BI := (SI = S2); // BI = False B2 := (SI < S2); // B2 = True SI := 'abcd'; S2 := 'bcd';

BI := (SI < S2); // BI = True end;

Питання для самоперевірки

1. Що таке довжина рядка? Як її визначити?

2. Як можна виконати злиття рядків?

3. Яка функція повертає позицію першого входження підрядка у рядок?

4. Яке значення повертає функція Pos(SubS, S), якщо підрядок SubS у рядку S відсутній?

5. Як можна отримати підрядок заданого рядка?

6. Як можна вилучити підрядок із заданого рядка?

Вправа 33

Скласти програму, що виконує задану заміну символів у рядку.

1) Створіть новий проект. Змініть заголовок форми на «Пошук і заміна». Розмістіть на формі кнопку Buttonl і змініть заголовок створеної кнопки на «Замінити».

2) Розмістіть на формі чотири компоненти Label згідно з рисунком. Для елемента Label4 задайте такі значення властивостей: AutoSize: False; Wordwrap: True.

3) Розмістіть на формі три компоненти Edit згідно з рисунком.

 

4) Створіть процедуру обробки події onclick для кнопки Замінити. У програмному коді створеної процедури запишіть оператори: var S, SI, S2, S3: String; begin

S := Editl .Text;

SI := Edit2.Text; S2 := Edit3.Text;

S3 := StringReplace(S, SI, S2, [rfReplaceAll, rfIgnoreCase]); Label4.Caption := S3; end;

5) Запустіть проект на виконання. Перевірте роботу програми для S = 'Why do You cry, Willy, why do You cry?';

SI = 'cry'; S2 = 'smile'. Збережіть проект у папці Вправа 33.

6) Змініть програмний код так, щоб у реченні, вказаному в п. 5, літери «W» і «w» були замінені символом «*».

Комп’ютерне тестування

Виконайте тестове завдання 33 з автоматичною перевіркою на сайті interactive.ranok.com.ua.

 

Це матеріал з підручника Інформатика 8 клас Бондаренко

 

Категорія: Інформатика

Автор: admin от 7-10-2016, 22:40, Переглядів: 2076