- •З м і с т
- •Частина 1. Алгоритмізація задачі Порядок виконання лабораторних робіт
- •Зміст звіту
- •Основні принципи розробки алгоритмів
- •Лабораторна робота 1 алгоритмізАцІя лінійного, розгалуЖеного Та циклічного обчислювального процесу
- •Загальні вказівки
- •Завдання для самостійної роботи
- •Лабораторна робота 2 селективна обробка масивів
- •Загальні вказівки Селективна (вибіркова) обробка інформації
- •Знаходження екстремального значення
- •Формування одномірного робочого масиву
- •Сортування елементів масиву
- •Завдання для самостійної роботи
- •Лабораторна робота 3 вкладені цикли. Обробка двовимірних масивів
- •Загальні вказівки Вкладені цикли
- •Обробка заданого рядка (стовпця) матриці
- •Обробка заданої діагоналі матриці
- •Селективна обробка рядка (стовпця) матриці, що задовольняє заданій умові
- •Завдання для самостійної роботи
- •Частина 2. Складання і налагодження програми. Обчислення й обробка результатів Порядок виконання лабораторних робіт
- •Зміст звіту
- •Оператор привласнювання
- •Оператори уводу-виводу
- •Завдання до лабораторної роботи
- •Лабораторна робота 2 програмування розгалуЖеного обчислювального процесу
- •Структура Паскаль–програми
- •Умовний оператор
- •Завдання до лабораторної роботи
- •Лабораторна робота 3
- •Завдання до лабораторної роботи
- •Програмування розгалуЖеного циклічного обчислювального процесу. Табулювання функцій
- •Табулювання функцій
- •Завдання до лабораторної роботи
- •Лабораторна робота 5 нестандартні й обмежені типи даних. Оператор варіанта
- •Нестандартні типи даних
- •Обмежені типи даних
- •Оператор вибору варіанта
- •Оператор циклу for
- •Приклади виконання завдання лабораторної роботи
- •Завдання до лабораторної роботи
- •Лабораторна робота 6 регулярні типи даних. Селективна обробка масивів
- •Регулярні типи даних
- •Приклади виконання завдання лабораторної роботи
- •Завдання до лабораторної роботи
- •Лабораторна робота 7 формування робочих масивів за допомогою операцій селекції вихідного масиву
- •Сортування масивів
- •Завдання до лабораторної роботи
- •Лабораторна робота 8 вкладені цикли. Обробка двовимірних масивів
- •Загальні вказівки
- •Завдання до лабораторної роботи
- •Лабораторна робота 9 процедури і функції
- •Процедури
- •Функції
- •Завдання до лабораторної роботи
- •Лабораторна робота 10 обробка символьних даних
- •Символьний тип даних
- •Завдання до лабораторної роботи
- •Лабораторна робота 11 обробка строкових даних
- •Строковий тип даних
- •Процедури
- •Функції
- •'Abcdef' copy(s,2,3) 'bcd';
- •'System' length(s) 6;
- •Завдання до лабораторної роботи
- •Лабораторна робота 12 комбіновані типи даних
- •Приклади виконання завдання лабораторної роботи
- •Завдання до лабораторної роботи
- •Лабораторна робота 13 файли і файлові типи даних
- •Файловий тип даних
- •Процедури обробки файлів
- •Завдання до лабораторної роботи
- •Список рекомендованої літератури
Лабораторна робота 11 обробка строкових даних
Мета роботи: виробити практичні навички в написанні та налагодженні програм при роботі зі строковими даними.
Строковий тип даних
Рядок - це послідовність символів. Кількість символів у рядку (довжина рядка) може змінюватися від 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'.
Приклади виконання завдання лабораторної роботи
Приклад 34. Наведемо текст програми найпростішої лінгвістичної обробки рядків, у якому до строкових даних застосовуються наведені вище процедури і функції.
program PR34;
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
Приклад 35. Дано текст s. Визначити кількість слів у даному тексті.
Програма має вид:
program PR35;
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.