- •Лабораторна робота 13. Робота з множинними типами даних . . . 76 Лабораторна робота 14. Створення й обробка файлів . . . . . . . . . . 79
- •Порядок виконання лабораторних робіт
- •Типи даних
- •Оператор привласнювання
- •Оператори уводу-виводу
- •Завдання до лабораторної роботи
- •Умовний оператор
- •Завдання до лабораторної роботи
- •Завдання до лабораторної роботи
- •Лабораторна робота 4 нестандартні й обмежені типи даних. Оператор варіанта
- •Нестандартні типи даних
- •Обмежені типи даних
- •Оператор вибору варіанта
- •Оператор циклу for
- •Приклади виконання завдання лабораторної роботи
- •Завдання до лабораторної роботи
- •Лабораторна робота 5 регулярні типи даних. Селективна обробка масивів
- •Регулярні типи даних
- •Приклади виконання завдання лабораторної роботи
- •Завдання до лабораторної роботи
- •Завдання до лабораторної роботи
- •Лабораторна робота 7 вкладені цикли. Обробка двовимірних масивів
- •Загальні вказівки
- •Завдання до лабораторної роботи
- •Лабораторна робота 8 процедури і функції
- •Процедури
- •Функції
- •Завдання до лабораторної роботи
- •Лабораторна робота 9 обробка символьних даних
- •Символьний тип даних
- •Завдання до лабораторної роботи
- •Лабораторна робота 10 обробка строкових даних
- •Строковий тип даних
- •Процедури
- •Функції
- •Завдання до лабораторної роботи
- •Лабораторна робота 11 комбіновані типи даних
- •Приклади виконання завдання лабораторної роботи
- •Завдання до лабораторної роботи
- •Лабораторна робота 12 файли і файлові типи даних
- •Файловий тип даних
- •Процедури обробки файлів
- •Завдання до лабораторної роботи
- •Лабораторна робота 13 робота з множинними типами даних
- •Завдання до лабораторної роботи
- •Лабораторна робота 14 створення й оброблення файлів
- •Файли з типом
- •Процедури для роботи з файлами з типом
- •Функції для обробки файлів з типом
- •Завдання до лабораторної роботи
- •Лабораторна робота 15 коректування файлів
- •Завдання до лабораторної роботи
- •Процедури роботи з екраном
- •Процедури установлення текстових режимів I управління кольором
- •Процедури управління курсором
- •Процедура установлення текстових вікон
- •Завдання до лабораторної роботи
- •Лабораторна робота 17 перевірка достовірності даних
- •Вибір критеріїв достовірності
- •Типові алгоритми уводу I перевірки достовірності даних
- •Завдання до лабораторної роботи
- •Лабораторна робота 18 графічні засоби мови паскаль
- •Графічні процедури мови Паскаль
- •Завдання до лабораторної роботи
- •Порядок виконання лабораторної роботи
- •Розрахунок масштабу I зрушення графіка
- •Процедура для креслення графіка
- •Завдання до лабораторної роботи
- •Порядок виконання роботи
- •Список рекомендованої літератури
- •Додаток а
Лабораторна робота 10 обробка строкових даних
Мета роботи: виробити практичні навички в написанні та налагодженні програм при роботі зі строковими даними.
Строковий тип даних
Рядок - це послідовність символів. Кількість символів у рядку (довжина рядка) може змінюватися від 0 до 255. Для визначення даних строкового типу використовується ідентифікатор string, за яким записано в квадратних дужках значення максимально припустимої довжини рядка:
type T = string[N];
де T - ім'я типу; N - довжина рядка.
Наприклад:
type ST = string[20];
var X:ST; Y:string[10]; Z:string;
Якщо довжина не зазначена, мається на увазі 255.
Над строковими даними допустима операція зчеплення (+) і операції відношення (=,<>,<,>).
Наприклад:
X:='група'+' ИТ98-2';
Z:=X+Y;
'ІВАНОВ'<'ПЕТРОВ'.
Порівняння рядків виконується зліва направо до першого незбіжного символу, і той рядок вважається більшим, у якому перший незбіжний символ має більший код (номер). Результат порівняння має булевський тип і набуває значення true чи false. У наведеному прикладі результат true.
Допускається змішання в одному виразі операндів строкового та символьного типу.
До окремих символів рядка можна звернутися за номером (індексу) даного символу в рядку. Наприклад, вираз X[4] забезпечить доступ до четвертого символу змінної X. Запис X[0] дає доступ до нульового байта, що містить значення поточної довжини рядка.
Для обробки строкових даних використовуються стандартні процедури і функції.
Процедури
1) delete(S,POZ,N) - видалення N символів у рядку S, починаючи з позиції POZ.
'ЕОМ ЄС 1840' delete(S,7,5) 'ЕОМ ЄС' ;
2) insert(S1,S2,POZ) - вставка рядка S1 у рядок S2, починаючи з позиції POZ.
S1:=' ЄС '; S2:='ЕОМ 1840';
insert(S1,S2,4) ;
Значення S2 стане рівним 'ЕОМ ЄС 1840';
3) str(R,S) - перетворення числового значення величини R і поміщення результату в рядок S.
150.2 str(R:6,S) ' 150.2';
4) val(S,R,COD) - перетворення значення S у величину цілого чи дійсного типу і поміщення результату в R. Якщо під час операції перетворення помилки не виявлено, COD=0, якщо помилка виявлена, COD буде містити номер позиції першого помилкового символу, а значення R не визначене.
'14.2E2' val(S,R,COD) 1420 COD=0;
'52.4A+2' val(S,R,COD) ? COD=5.
Функції
5) copy(S,POZ,N) - виділення з рядка S підрядка довжиною N символів, починаючи з позиції POZ.
'ABCDEF' copy(S,2,3) 'BCD';
6) concat(S1,S2,...,SN) - зчеплення рядків S1,S2,...,SN у зазначеному порядку. Сума символів не повинна перевищувати 255.
concat('AA','XX',' YZ') 'AAXX YZ';
7) length(S) - обчислення довжини в символах рядка S. Результат має цілий тип.
'SYSTEM' length(S) 6;
8) pos(S1,S2) - виявлення першої появи в рядку S2 підрядка S1. Результат має цілий тип і дорівнює номеру позиції першого символу підрядка S1. Якщо підрядок S1 не знайдено, результат дорівнює 0.
'ABCDEF' pos('DE',S2) 4;
'ABCDEF' pos('Г',S2) 0;
9) upcase(C) - перетворення малої латинської букви у велику. Параметр і результат мають літерний тип.
'n' upcase(C) 'N'.
Приклади виконання завдання лабораторної роботи
Приклад 33. Наведемо текст програми найпростішої лінгвістичної обробки рядків, у якому до строкових даних застосовуються наведені вище процедури і функції.
program PR33;
uses crt;
var a,b,c:string[12];s:string[40];ch:char; N:integer;
begin clrscr;
a:='electronic'; b:='digit'; c:='machine';
ch:=copy(a,1,1); writeln(ch);
ch:=upcase(ch); writeln(ch);
s:=concat(a,b,c); writeln(s);
delete(s,1,1);writeln(s);
insert(ch,s,1); insert(' ',s,11); insert(' ',s,17);
writeln(s); n:=pos('a',s);
WRITELN('ПЕРША БУКВА "A" З'ЯВИЛАСЯ В ПОЗИЦІЇ',N);
N:=LENGTH(S); WRITELN('ДОВЖИНА РЯДКА=',N);
ch:=readkey
end.
Результатом роботи програми буде:
ch - e
ch - E
s - elektronicdigitmachine
s - lektronicdigitmachine
s - Elektronic digit machine
Перша буква 'А' з'явилася в позиції 19
Довжина рядка = 24
Приклад 34. Дано текст s. Визначити кількість слів у даному тексті.
Програма має вид:
program PR34;
uses crt;
var s:string; ch:char; I,N,K:integer;
begin clrscr;
READ(S);
S:=’ ’+S;
n:=length(s);
FOR I:=1 TO N-1 DO
IF (S[I]=’ ‘) AND (S[I+1]<>’ ‘) THEN K:=K+1;
writeln(‘У ДАНОМУ ТЕКСТІ ‘,K:3,’ СЛІВ’);
ch:=readkey
end.