Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
19
Добавлен:
07.02.2016
Размер:
70.66 Кб
Скачать

Лекція №10 Рядкови типи даних. Поняття рядкової змінної типу string. Розвязання задач з використанням типу string

Найбільший недолік такого подання рядкових змінних є те, що їх довжина не може змінюватися під час виконання програми. Тому в мові Pascal передбачено тип даних string.

Рядковий тип даних визначає множину символьних ланцюгів довільної довжини (від нуля символів до заданого їх числа). Для визначення рядкового типу використовується службове слово string, за яким в квадратних дужках проставляється максимальна довжина рядка:

type line=string[40];

var l:line;

s:string;

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

Рядкові змінні можна вводити за допомогою процедури readln(s) та виводити за допомогою процедури writeln(s). Треба завважити, що використання процедури введення read(s) може привести до помилок введення, тому її не рекомендується використовувати. Якщо в програмі обробляється не одна рядкова змінна, а декілька, то треба кожну з них вводити окремо.

Для рядкових змінних використовується операція конкатенації (приписування). Наприклад:

s:= ’Turbo ‘;

s1:=’Pascal’;

l:=s+s1;

Результатом є рядок ‘Turbo Pascal’. Довжина рядка l дорівнює сумі довжин рядків s та s1.

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

До елементів рядка можна звертатися, як до елементів масиву - s[i]. Елементи рядка нумеруються цілими числами, починаючи з одиниці.

Для рядкових змінних існує декілька стандартних функції та процедур, за допомогою яких можна розв’язувати задачі з рядковими змінними.

Параметри

Операція

Результат

Пояснення

s1:=’Мото';

s2:=’ролер';

s3:=s1+s2;

s3=

’Моторолер'

Операція + над двома рядками просто з’єднує два рядки в один

s5:=’Моторолер';

k:=pos(‘рол',s5);

k=5

Функція pos повертає номер позиції, на якій знахлодится рядок ‘рол’ в рядку s4.

s3:=’Моторолер';

i:=length(s3);

i=9

Функція length (довжина) повертає кількість символів в заданому рядку.

s3:=’астроном';

s4:=copy(s3,3,4);

s4=’трон'

Функція copy повертає частину рядка довжиною 4 символа, починаючи з третього символу.

s5:=’доброта’;

delete(s5,1,3);

s5=’рота'

Процедура delete видаляє з рядка s5 три символи, починаючи з першого символу.

s6:=’сорока';

s7:=’ч';

insert(s7,s6,5);

s6=’сорочка'

Процедура insert включає в рядок s6 рядок s7, перед п’ятим елементом.

x:=2. 73284;

str(x:4:2,s8);

s8=’2. 73'

Процедура str перетворює число в рядок; 4:2 – це бажаний формат числа.

s8:=’2. 73';

val(s8,x,osh);

x=2.73

osh=0

Процедура val перетворює рядок у число. Параметр osh повинен мати тип integer. Він має сенс при аналізі помилкової позиції при перетворенні.

Рядки можна описувати як сталі величини: const s=’рядкові змінні’. В такому випадку до елементу рядка не можна звертатися за допомогою індекса (s[i]), не можна змінювати його значення за допомогою процедур delete та insert.

Розглянемо декілька задач, в яких використовуються рядкові змінні.

Приклад 4.19. Заданий рядок символів. Визначити кількість символу «а» в ньому.

Соседние файлы в папке конспект лекцій 1 паск