Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
TURBO PASCAL _lab_rab.doc
Скачиваний:
0
Добавлен:
01.03.2025
Размер:
577.54 Кб
Скачать

Теоретичні відомості до лабораторної роботи № 5 . Рядки (string)

Дані рядкового типу - це обмежена послідовність довільних символів (тобто елементів типу char). Постійні рядкового типу записують за допомогою двох штрих-символів (апострофів), що охоплюють текст. Рядок може мати від 0 до 255 символів. Наприклад, 'Україна', 'Львівська політехніка' " - порожній рядок нульової довжини, ' ' - рядок, що складається з одного символу-пропуску.

Змінну рядкового типу оголошують за допомогою слова string так:

var <змінна> : string[n];

де п – довжина рядка, n<256. Довжину рядка можна не вказувати. Наприклад

const slovo = 'University';

var frazal : string[45];

fraza2 : string;

Над змінними рядкового типу визначені операції об'єднання (символ операції +) і порівняння (< <= > >= = <>). Порівняння двох рядків здійснюється зліва направо до перших різних символів, причому 'А' < 'В', 'В' < 'С' і т.д. «Великим» вважається символ, який розміщений в алфавіті далі (він має більший номер в таблиці кодів комп'ютера ASCII). Числовий код символу дає функція ord, наприклад, ord('B')= 66, ord('A')= 65. Зворотну дію виконує функція chr: chr(66) дає 'В'.

Приклад. Хай tl = 'New', t2=' Year'. Тоді об'єднанням цих рядків буде s := tl + t2 (результат: s = 'New Year').

Тут s > tl.

Приклад. Вивести на екран рядкові букви латинського алфавіту і їх коди можна таким чином:

for v := 'a' to 'z' do writeln(v, ord(v):5);

Для обробки даних рядкового типу призначені стандартні функції

Length (<рядок>) - визначає кількість символів в заданому рядку;

Сору (г, m, n) - дає п символів рядка r, починаючи з символа з номером т;

Concat (rl, r2 ..., гn) - об'єднує рядки rl ..., гn в один рядок;

Pos (rl, r2) - визначає № символу, з якого починається входження рядка rl в рядок г2.

і процедури

insert(rl <змінна>, n) - вставляє рядок rl в рядок, який заданий змінною, починаючи з позиції n;

delete(<змінна>, m, n) - видаляє n символів з рядка, який заданий зміною, починаючи з позиції m;

str(<число> <змінна>) - переводить числове дане в дане рядкового типу;

val(rl, si, s2) - засилає в числову змінну si числовий образ рядка rl. Якщо це можливо, то змінна s2 набуває значення 0, інакше - числове значення номера першого неприпустимого символу заданого рядка.

Вказана змінна передає в процедуру вхідне дане рядкового типу і одержує назад змінений рядок — результат виконання процедури.

Приклад. Хай змінна Lvov має значення 'Львівська політехніка'. Розглянемо приклади функцій і їх значення:

Функція Значення

length(Lvov) 21;

сору(Lvov, 15, 11) 'техніка';

concat(Lvov,' - 2001') 'Львівська політехніка - 2001';

роs(V, Lvov) 15.

Наступні процедури присвоять змінній Lvov такі значення:

Процедура Значення змінної Lvov

Insert(‘Hy ', Lvov, 1) 'НУ Львівська політехніка'

delete(Lvov, 6, 16) 'Львів'

str(2001, Lvov) '2001'

val('1256', Lvovl, Ozn) Lvovl = 1256, Ozn = 0

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

Приклад. Значення рядковим змінним frazal і fraza2 можна привласнити, а потім вивести їх на екран так:

frazal := 'Ви любите канікули?';

for i := 1 to 19 do read(fraza2[i]);

writeln(frazal); writeln(fraza2);

Задача. Кодування тексту. Видалити з деякої фрази а всі пропуски, коми і крапки, інші символи продублювати. Вивести результат.

program MyCode;

uses Crt;

var а, b, с : string;

i : integer;

begin

clrscr;

write('Введіть текст: '); readln(a); b:=";

for i := 1 to Length(a) do

begin

с := сору(а, i, 1); {або поелементно так: с := а[i];}

if (с <> ',') and (с <>'.') and (с <>' ' )then b := b + с + с

end;

writeln(b);

end.

Задача. Хай заданий рядок 'Я люблю Мерседес'. Визначити довжину рядка. Вивести на екран друге слово цього рядка.

program Stroka;

uses Crt;

const rl : string = 'Я люблю Мерседес';

var i, к, m, nl, n2 : integer;

begin

clrscr;

m := 0;

к:= length(rl); {Визначаємо довжину рядка}

writeln('Довжина рядка к =', к);

for i := 1 to к do {Перебираємо всі символи рядка}

if rl[i]= ' ' then begin {і шукаємо пропуск}

m := m + 1;

if m = 1 then nl := i; {Визначаємо номер першого пропуску}

if m = 2 then n2 := i {Визначаємо номер другого пропуску}

end;

for i := nl + 1 to n2 - 1 do write(rl[i]);

end.

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