- •Передмова
- •Тема 1: Правила техніки безпеки при роботі з комп’ютером
- •Тема 2: Алфавіт. Ідентифікатори. Константи. Вирази
- •Тема 3: Загальна структура і розділи Pascal-програми
- •Тема 4: Введення і виведення у Pascal-і. Форматоване виведення
- •Тема 5: Прості (скалярні) типи данних
- •Тема 6: Завантаження середовища Турбо Паскаль. Функціональні клавіші
- •Тема 7: Меню опції
- •Тема 8: Вираження і пріоритет операцій. Стандартні математичні функції та процедури
- •Тема 9: Умовний оператор. Вкладений умовний оператор
- •Тема 10: Оператор вибору
- •Тема 11: Оператори циклу. Оператор циклу з параметром
- •Тема 12: Оператор циклу з перед- і з постумовою
- •Тема 13: Складні типи. Масиви
- •Тема 14: Багатомірні масиви
- •Тема 15: Пошук і сортування елементів масиву. Класи алгоритмів сортування
- •Тема 16: Динамічна пам'ять. Адреси і покажчики
- •Тема 17: Оголошення покажчиків, виділення та звільнення динамічної пам’яті
- •Тема 18: Процедури та функції для роботи з динамічною пам’яттю
- •Тема 19: Символьний тип даних. Упаковані масиви
- •Тема 20: Процедури та функції для обробки рядків
- •Тема 21: Структурований тип даних - безліч
- •Тема 22: Структурований тип даних – записи
- •Тема 23: Опис файлових змінних. Обробка типізованих файлів
- •Тема 24: Послідовний та прямий доступ до файлів
- •Тема 25: Обробка не типізованих файлів
- •Тема 26: Робота з текстовими файлами
- •Тема 27: Типізовані константи
- •Тема 28: Поняття та робота з процедурами та функціями
- •Тема 29: Використання модуля crt. Програмування клавіатури
- •Тема 30: Використання модуля crt. Текстове виведення на екран. Програмування звукового генератора
- •Тема 31: Графічні можливості tp 7.0. Використання бібліотеки Graph
- •Тема 32: Бібліотечні модулі користувача
- •Тема 33: Основні принципи ооп. Створення об’єктів. Використання об’єктів
- •Список літератури
- •Додаток а (довідковий) Основні алгоритми обробки масивів
- •Додаток б (довідковий) Питання перевірки знань з теорії
- •Додаток в (довідковий) Поширені коди клавіш
- •Додаток д (довідковий) Коди сканування клавіатури
Тема 20: Процедури та функції для обробки рядків
Строковий тип даних. Змінна типу String.
Усе раніше розглянуті типи даних могли зберігати тільки один об'єкт: чи символ число. У Turbo Pascal-і є тип даних для обробки ланцюжка символів – рядків. Цей тип даних займає проміжне положення між простими структурованими типами.
Для збереження рядків використовується змінна типу String (рядок), що складається з елементів типу Char. Оголошення її має вид:
var ім'я змінної : string[n];
де n – довжина рядка (кількість символів), що може зберігатися в цій змінній. За замовчуванням довжина рядка максимальна – 225 символів.
Приклад описів:
var str1 : string;
str2 : string[10];
str3 : string[64];
Змінну типу String можна обробляти як цілий рядок, чи як складену з окремих елементів типу Char. Значення, що привласнюються строковій змінний, полягають в апострофи:
str1 :='ми – ';
str2 :='учні';
str3 :='10-а класу';
Ці рядки можна об'єднати операцією конкатенації:
str4 :='ми -' + 'учні' + '10-а класу';
Для допуску до окремого символу в рядку в імені змінної вказують у квадратних дужках номер позиції символу в цьому рядку, наприклад, привласнивши
str1[1] :='А'{першим символом у рядок str1 занести 'А'}
str3[4] :='б' {четвертим символом у рядок str3 занести 'б'}
одержимо:
“А ми – учні 10-б класу”
До символів рядка застосовні всі операції, що і до змінної типу Char.
Рядки обробляються за допомогою наступних стандартних процедур і функцій.
Функція Length (Str) визначає довжину текстового рядка, що зберігається в перемінної Str. Наприклад.
var
str : string;
begin
write ('Уведіть рядок:');
readln (str);
writeln (‘У цьому рядку’, length (str),’ символів.’ )
end.
Функція UpCase(Str[i]) перетворює латинську букву з рядкової в прописну в i-й позиції рядка, що зберігається в змінній Str. Рядок обробляється за допомогою циклу. Наприклад.
var
str : string; i : byte;
begin
write (‘Уведіть рядок:’);
readln (str);
for i := 1 to length(str) do
str[i] :=UpCase(str[i]);
writeln(str)
end.
Функція Copy(Str,p,n) вирізає з рядка, що зберігається в змінній Str, фрагмент довжиною n символів, починаючи з позиції p. Наприклад.
var
str1, str2, str3, str4 : string;
begin
str1 := 'абракадабра';
writeln(str1);
str2 := copy(str1,2,4);
writeln(str2);
str3 := copy(str1,2,3);
writeln(str3);
str4 := copy(str1,3,3);
writeln(str4);
end.
Функція Pos(Frag,Str) виконує пошук фрагмента Frag у рядку Str. Якщо рядок містить фрагмент, то функція повертає номер позиції в рядку, з якої починається цей фрагмент; якщо такого фрагмента немає, - функція повертає 0. При пошуку символи фрагмента повинні збігатися із символами рядка; прописні і малі літери розрізняються, тобто «А» не ідентична «а». Наприклад.
var
frag,str : string; position : byte;
begin
write('Введіть слово: ');
readln(str);
write('Введіть фрагмент: ');
readln(frag);
position := pos(frag,str);
if position <> 0 then
writeln(‘Фрагмент’, frag,’ міститься в слові ‘,str,
‘, починаючи з позиції ‘, position)
else
writeln(‘Фрагмент’, frag,’ не міститься в слові ‘,str)
end.
Процедура Insert(Str1, str2,p) уставляє рядок Str1 у рядок Str2, починаючи з позиції р.
Процедура Delete(Str,p,n,) видаляє n символів рядка Str, починаючи з позиції р. Наприклад.
var
str1, str2: string[20];
begin
str1 := 'комп'ютеризація';
writeln(str1);
delete(str1,1,7);
Writeln(str1);
Delete(str1,3,2);
Writeln(str1);
str2:=’Г’;
Insert(str2,str1,1);
Writeln(str1);
str2:=’не’;
Insert(str2,str1,3);
Writeln(str1);
end.
Процедура Сoncat(str1, str2, . . str) виконує зчеплення рядків str1, str2,...str у зазначеному рядку. Результуючий рядок не повинен перевищувати 255 символів. Наприклад.
var
str1,str2:string;
begin
str1 := ’електро’;
Writeln(str1);
str2 := ’технічний коледж’;
Writeln(str2);
Writeln(‘новий рядок:’,concat(str1,str2));
end.
Питання для контролю
-
Змінна строкового типу.
-
Присвоєння значень строкової змінної.
-
Доступ до символів рядка.
-
Визначення довжини рядка.
-
Витяг фрагмента з рядка.
-
Пошук фрагмента в рядку.
-
Вставка одного рядка в інший.
-
Видалення символів з рядка.
-
Операція конкатенації рядків.