Програмування рядкових величин
Для рядкових величин визначені операція конкатенації (об'єднання) рядків та операції відношення. Вони можуть застосовуватися для порівняння рядків відповідно до порядку розширеного набору символів коду ASCII. Будь-які два значення рядкового типу даних можна порівняти, оскільки всі значення рядкових даних сумісні. Значення рядкового типу сумісні зі значеннями символьного типу, і при їхньому… Читати ще >
Програмування рядкових величин (реферат, курсова, диплом, контрольна)
Тема 7. Програмування рядкових величин.
1. Поняття рядкової величини.
Величиною рядкового типу (strings) називається послідовність символів, укладена в одинарні лапки. Цей тип даних є стандартним для мови ПАСКАЛЬ, хоча він є структурованим. Величини можуть бути як константами, так і змінними. При завданні змінних символьного типу можна вказати кількість символів у цій величині.
ПРИКЛАД:
type.
message=string;
list=string[10];
Опис типу message задає тип рядкових величин з максимально можливою довжиною рядка (255 символів), а опис типу list — рядкові величини з максимальною довжиною рядка 10 символів.
Рядкові величини можна опрацьовувати і як єдине ціле, і поелементно. При обробці рядка поелементно він розглядається як одновимірний масив з типом індексу byte і типом елементів char. Рядкові величини можуть містити довільні символи. Так. у рядку може міститися й одинарна лапка. Для того, щоб помістити одинарну лапку в рядок, потрібно написати дві послідовно розташовані одинарні лапки. Рядки, у яких міститься тільки один символ, являють собою дані стандартного символьного типу (char). Рядок можна порівняти з масивом даних символьного типу, що має таку ж довжину. Всі рядкові константи сумісні з усіма рядковими типами (string).
ПРИКЛАДИ:
‘TURBO'.
‘п"ятниця'.
«««.
‘;'.
Для рядкових величин визначена операція конкатенації (об'єднання) рядків. Операція позначається символом «+». Тип результату — також рядкова величина. Мова ТУРБО ПАСКАЛЬ дозволяє використовувати оператор + для об'єднання двох рядкових операндів. Якщо довжина результуючого рядка перевищує 255 символів, то вона усікається до 255 символів.
Оператори відношення =, <>, <, >, <=, або >= можуть застосовуватися для порівняння рядків відповідно до порядку розширеного набору символів коду ASCII. Будь-які два значення рядкового типу даних можна порівняти, оскільки всі значення рядкових даних сумісні. Значення рядкового типу сумісні зі значеннями символьного типу, і при їхньому порівнянні символьне значення опрацьовується як рядкове значення довжиною 1. Та величина вважається «більшою», яка має на відповідному місці символ з більшим ASCII кодом. Слід зауважити, що пробіл є повноправним символом рядкової величини і він опрацьовується аналогічно іншим символам величини.
ПРИКЛАДИ:
‘turbo'>'Turbo';
‘turbo'>'pascal';
‘turbo'<�'turbo pascal';
‘123'<>' 123';
2. Основні процедури та функції опрацювання рядкових величин.
Рядкові величини можна вводити з клавіатури. Для цього можна використати стандартну процедуру вводу read. Однак при цьому є така особливість: необхідно ввести стільки символів, скільки було оголошено при визначенні цієї величини. Так, якщо величина була оголошена як величина типу string [10], то необхідно ввести 10 символів (якщо їх кількість менша, то вільні місця необхідно заповнити пробілами). Якщо ж величина описана як string, то кількість пробілів буде дуже великою. Щоб позбавитись цього недоліку, для вводу рядкових величин варто використовувати іншу процедуру вводу — readln. В цьому випадку доповнювати пробілами рядкову величину непотрібно.
Функція Соncat — виконує конкатенацію послідовності рядків. Її дія аналогічна дії операції конкатенації.
Функція Copy — повертає підрядок (частину) рядкової величини.
Процедура Delete — видаляє з рядка його частину заданої довжини, починаючи з заданої позиції.
Процедура Insert — додає в рядок підрядок, починаючи з певної позиції рядка.
Функція Length — повертає динамічну довжину рядка.
Функція Роs — здійснює пошук підрядка в рядкові.
Процедура Str — перетворює чисельне значення в його рядкове представлення.
Процедура Val — перетворить рядкову величину, яка є числом, в її чисельне значення.
ПРИКЛАДИ.
var.
s, t, x:string;
n, m, k:integer;
begin.
…
readln (s); {припустимо, що введена величина ‘програма'}.
readln (t); {припустимо, що введена величина ‘рог'}.
n:=length (s); {n=8}.
x:=concat (s, t); {x='програмарог'}.
x:=copy (s, 4,3); {x='гра'}.
m:=pos (t, s); {m=2}.
delete (s, 4,3); {s='прома'}.
…
end.
Розглянемо приклад алгоритмів опрацювання рядкових величин із застосуванням наведених функцій.
;
>
" .
b.
d.
f.
b.
f.
U величина), слова якої розділені символом «пропуск».
1. Знайти кількість слів у тексті.
2. Надрукувати окремо з нового рядка кожне слово тексту.
3. Знайти i надрукувати найдовше слово тексту.
program strings;
uses crt;
var s, t: string;
i, k: integer;
procedure kol (s:string; var k: integer);
{ процедура знаходження кiлькостi слiв у текстi (текст мiстить хоча б одно слово }
var i, n: integer;
begin.
k:=1;
n:=length (s);
for i:=1 to n do.
if s[i]=' ‘ then k:=k+1;
end;
procedure druk (s:string);
{ процедура друкування слів тексту }
var n: integer;
s1: string;
begin.
n:=pos (‘ ‘, s);
while n<>0 do.
begin.
s1:=copy (s, 1, n-1);
writeln (s1);
delete (s, 1, n);
n:=pos (‘ ‘, s).
end;
writeln (s)
end;
procedure max_word (s:string; var s1: string);
{ процедура знаходження найбільшого слова тексту }
var m, n, max:integer;
s2: string;
begin.
s1:=";
max:=0;
n:=pos (‘ ‘, s);
while n<>0 do.
begin.
s2:=copy (s, 1, n-1);
m:=length (s2);
if m>max then.
begin.
max:=m;
s1:=s2.
end;
delete (s, 1, n);
n:=pos (‘ ‘, s).
end;
m:=length (s);
if m>max then s1:=s
end;
{Основна програма}.
begin.
write (‘Введiть текст, розділяючи слова одним символом «пропуск»: ‘);
readln (s);
writeln;
writeln (‘Результати: ‘);
kol (s, k);
writeln (‘кiлькiсть слiв у текстi k=', k);
writeln;
writeln (‘Слова тексту: ‘);
druk (s);
writeln;
writeln (‘Найдовше слово тексту);
max_word (s, t);
writeln (t);
end.
Узагальнення по темі.
Величиною рядкового типу (strings) називається послідовність символів, укладена в одинарні лапки. Цей тип даних є стандартним для мови ПАСКАЛЬ, хоча він є структурованим. Величини можуть бути як константами, так і змінними. При завданні змінних символьного типу можна вказати кількість символів у цій величині.
Рядкові величини припускають обробку і як єдиного цілого, так і поелементно. При обробці рядка поелементно він розглядається як одновимірний масив з типом індексу byte і типом елементів char. Рядкові величини можуть містити довільні символи. Так, у рядку може міститися й одинарна лапка. Для того, щоб помістити одинарну лапку в рядок, потрібно написати дві послідовно розташовані одинарні лапки. Рядки, у яких міститься тільки один символ, являють собою дані стандартного символьного типу (char). Рядок можна порівняти з масивом даних символьного типу, що має таку ж довжину. Всі рядкові константи сумісні з усіма рядковими типами (string).
Для рядкових величин визначені операція конкатенації (об'єднання) рядків та операції відношення. Вони можуть застосовуватися для порівняння рядків відповідно до порядку розширеного набору символів коду ASCII. Будь-які два значення рядкового типу даних можна порівняти, оскільки всі значення рядкових даних сумісні. Значення рядкового типу сумісні зі значеннями символьного типу, і при їхньому порівнянні символьне значення опрацьовується як рядкове значення довжиною 1. Та величина вважається «більшою», яка має на відповідному місці символ з більшим ASCII кодом. Слід зауважити, що пробіл є повноправним символом рядкової величини і він опрацьовується аналогічно іншим символам величини.
Рядкові величини можна вводити з клавіатури. Для цього можна використати стандартну процедуру вводу read. Однак при цьому є така особливість: необхідно ввести стільки символів, скільки було оголошено при визначенні цієї величини. Щоб позбавитись необхідності вводу 255 символів при оголошенні рядкової величини як strings, варто використовувати іншу процедуру вводу — readln.
Серед інших процедур та функцій над рядками варто відмітити процедури виділення (копіювання) частини рядка, видалення частини рядка, функцію знаходження позиції входження одного рядка до іншого, функцію визначення довжини рядка, тощо.