
- •Лінійні алгоритми. Алгоритми розгалуження. Алгоритми повторення. Цикли з невідомою кількістю повторень. Складені (вкладені) цикли.
- •2.Стандартні процедури та функції обробки рядків.
- •§ 1. Рядковий тип. Функції та процедури обробки рядків.
- •3.Основні поняття програмування.
- •Використання ресурсів модуля graph.
- •Динамічна структура даних: дерево (основні поняття, створення, обхід).
2.Стандартні процедури та функції обробки рядків.
§ 1. Рядковий тип. Функції та процедури обробки рядків.
В ТП є два типи символьної інформації: char та string. Перший з них використовується для аналізу окремих символів, другий - для аналізу набору (ланцюжка або рядна) символів, які являють собою єдине ціле.
Рядок – це впорядкована послідовність символів. Діапазон змінних рядкового типу 1..255.
Змінні рядкового типу д.б. описані з використанням розділу опису або безпосередньо в розділі опису змінних
1. Type st =string[n]; 2. Var s :string[n];
Var s :st;
де st - ім'я типу;
s - ім'я змінної;
n - розмір рядка (область пам'яті), кількість символів в рядку
(атрибут довжини n=1..255).
Якщо рядок str описано як string, то до окремих символів рядка можна звертатися як str[i], причому str[i] має тип char. Нульовий байт рядка містить інформацію про її фактичну довжину.
Над змінними рядкового типу (стрінгамі) можна виконувати наступні операції:
- привласнення (введення/висновок);
- порівняння
- конкатенацію.
Привласнення. Змінній типу String можна привласнити значення іншої змінної або рядкової константи
St:=’Студент’;
Stu:=St;
При цьому довжина рядкової константи д.б. не більше оголошеної інакше надмірні символи будуть проігноровані.
Порівняння. Порівняння рядків виробляється за допомогою операцій відношення (=, <>, <, >, <=, >=) шляхом по парного порівняння двох символів різних рядків зліва на право (порівнюються їх числові уявлення по таблиці кодів ASCII).
Два рядки рівні, якщо вони однакової довжини і складаються з однакової послідовності символів.
‘a’<’b’ оскільки ORD(‘a’)<ORD(’b’)
‘a1’<’a2’ оскільки ORD(‘a1’)<ORD(’a2’)
‘ a’<’a ’ оскільки ORD(‘ ’)<ORD(’a’)
‘kom’<’com’ оскільки ORD(‘k’)<ORD(’c’)
Конкатенація (Зчеплення). Це об'еднання двох і більш рядків в один. Операція позначається знаком ‘+’ і має вищий пріоритет, ніж порівняння. Вона застосовується до стрінгових змінних і констант. При цьому довжина рядкової константи д.б. не більш оголошеної інакше надмірні символи будуть проігноровані.
S:=St1+St2; S:=’TURBO’+’PASCAL’; R:=’5’+’.’+’5’; (R:=5.5)
Для обробки рядкових даних типу string у мові Pascal використовуються стандартні функції та процедури:
▪ Length (рядковий вираз) — повертає довжину рядкового виразу. Приклад: var nrinteger; xrstring; begin х :=' Київ — столиця України ';
Змінна n буде мати значення 22, тому що у змінній х знаходиться 22 символи.
▪ Delete (рядковий символ, n, m) — вилучає з рядкового виразу m символів, починаючи з символу з номером n. Приклад:
var r:string; begin
х:= ' радіоприймач не працює ';
Delete (x, 14, 3); Змінна х набуде значення ' радіоприймач працює '.
▪ Insert (виразі, вираз2, n) в рядок вираз2 вставляється рядок виразі, починаючи з позиції з номером п. Приклад:
var x,y rstring; begin
х :=' завтра сонце '; у :=' буде ';
Insert (x, y, 7); Змінна х набуде значення ' завтра буде сонце '.
▪ Copy (рядковий вираз, n, in) — виділяє в рядковому виразі m символів, починаючи з символу з номером n. Приклад:
var х, у: string; begin
х :=' наведена програма працює ';
у := сору (х, 9, 8); Змінна у набуде значення ' програма '.
▪ Pos (виразі, вираз2) — повертає номер позиції, з якої перший раз починається виразі у виразі2. Якщо виразі не входить до виразу2, функція повертає значення 0. Приклад:
var x,y,z:string; begin
х := ' вхідні дані процедури '; у :=' дані ';
z = pos (x, y); Змінa z набуває значення 8.
Приклад. Нехай змінні типу string у процесі введення набувають таких значень: х =' Функція довжини рядка ’, у =-' видає символів *,z= — = ' кількість '. Необхідно розробити програму, яка із наданих змінних формує у змінній р такий рядок ‘функція рядка видає кількість символів і підраховує у ньому кількість символів’.
Приклад 1.1. Підрахувати у реченні кількість слів, які не починаються з цифри.
Program Predl;
Var text: string;
tr: string[2];
kol, i, dl: integer;
Begin
writeln (‘введіть речення’);
readln (text);
dl:=length (text);
kol:=0;
insert (‘ ’, text, 1);
for i:=1 to dl do
begin
tr:=copy (text, i, 2);
if (tr[1]=’ ‘) and (tr[2]=’ ‘) then
case tr[2] of
‘0’..’9’:
else kol:=kol+1;
end;
end;
writeln (‘заданий текст’);
writeln (text);
writeln (‘кількість слів =’, kol:3);
readln;
END.