Сторінки

воскресенье, 20 ноября 2011 г.

Опрацювання рядкових величин

В мові Паскаль передбачено два види літерних величин: символьні та рядкові.
Літерна (текстова) величина  буває символьного типу(Сhаг)    та   рядкового типу(String).
1. Поняття літерної величини символьного типу.
Стала величина цього типу має вигляд будь-якого символу із розширеної таблиці ASCII, взятого в апострофи. Наприклад, 'М', 'g', '=', '5'. Винятком є сам символ "апостроф", який можна вказати лише парою апострофів: "".
Змінні величини символьного типу можна описати за допомогою стандартного типу Char у розділі опису змінних:
Var <ідентифікатор>: Char;
Приклад.
Var x, у: Char;
Символи можуть об'єднуватися в масиви, аналогічно числовим масивам:

Приклад.
Var А: аrrау[1..30] of Char;
І при роботі з символьними масивами використовуються такі самі алгоритми, як і при роботі з числовими.
Стандартні функції:
-         символьна функція Chr(x); дає значення символу за його кодом х;
-         функція, що дає результат числового типу - Ord(x):Longint; повертає значення коду величини х символьного типу.

2. Поняття рядкової величини.
Кілька символів, записаних підряд, утворюють рядок.
Рядок — це послідовність символів кодової таблиці ЕОМ. При використанні у виразах рядок охоплюється з двох сторін апострофами. Кількість символів в рядку (максимальна довжина рядка) може змінюватися від 0 до 255.

3. Опис рядкової величини.
Для опису рядкових величин використовують ідентифікатор string, після якого в квадратних дужках записується максимальне значення довжини рядка для даної величини.
Для рядка завдовжки N символів виділяється в пам'яті (N+1) байт (N байт - для збереження символів і 1 байт - для запису довжини рядка). Рядкові величини мають бути визначені в розділі опису змінних:
Var <ідентифікатор>:strіng[максимальна довжина рядка];
Приклад.
Var Rl:string[10];
R2:string[4];
Максимальна довжина рядка для змінної R1 дорівнює 10, а для R2 - 4. Якщо довжина рядка не вказана, то вона автоматично приймає значення 255 байт.
Рядкові величини можна використовувати в програмі і у вигляді констант.
Наприклад.
const
NAME='інформатика';
До будь-якого символу рядка можна звернутися по його номеру (наприклад, NAME[5]) - аналогічно звертанню до елемента одновимірного масиву. При цьому треба врахувати, що найперший байт рядка має номер 0 і містить значення довжини рядка. Другий байт із номером 1 містить перший символ рядка.

4. Найпростіші операції над рядками.
Над рядками можливі такі найпростіші операції, що дають змогу складати рядкові вирази.
Насамперед, це операція додавання (або конкатенація), яка об'єднує два рядка без пропуску. Наприклад, вираз '3 Днем народження, '+'Олено!' повертатиме текст З Днем народження, Олено!
Іншими операціями над рядками є операції відношення, що (=, <, >, <=, >= ), що порівнюють два рядки тексту. Порівняння виконується посимвольно зліва направо до першого символу, що не збігається. Більшим вважається те значення, у якому перший незбіжний символ має більший номер в алфавіті. Наприклад, вирази
'рука' < 'рукав'
'пара'> 'пава'
мають значенння True. Якщо при порівнянні двох рядків різної довжини виявляється, що всі символи короткого рядка збігаються з початковою частиною більш довгого рядка, то більше значення має довший рядок.
Присвоєння значення рядковій змінній можна виконати за допомогою оператора присвоювання:
S1:='Іванов Олег';
S2:= S1+' любить інформатику';
В одному виразі можна записувати змінні як рядкового типу, так і символьного.

5. Процедури і функції опрацювання рядків, їх опис мовою програмування та приклади.
У Паскалі є набір стандартних процедур і функцій для роботи з рядковими величинами:
1) Функція Concat(A, В, ..., Z); - здійснює склеювання рядків А, В,..., Z в один рядок в такому порядку, в якому вони записані.
Наприклад.
Program Fconcat;
Const
R1='Мова';
R2='програмування';
R3='Turbo Pascal';
Var     R:string[35];
begin
R:=concat(Rl,R2,R3);
writeln(R);
end .
На екрані дисплея буде надруковано: Мова програмування Turbo Pascal.

Даний результат можна отримати ще за допомогою операції склеювання — "+".
Наприклад.
Program Fconcat;
var R:string[35];
begin
R:='Moвa'+'nporpaмyвaння'+Turbo Pascal';
writeln(R);
end .

2) Функція   Length(R); - видає фактичну довжину рядка R.
При підрахуванні довжини рядка враховуються всі символи, в тому числі і проміжки.
Наприклад.
Program Flength;
Const R=Turbo Pascal';
Var N: integer;
begin
N:=length(R);
writeln('n=',N);
end.
На екрані дисплея буде надруковано: n=12

3) Функція Copy(R,Poz,N); -   копіює фрагмент довжиною N рядка R, починаючи з позиції Poz.
Наприклад.
Program Fcopy;
const  R='Turbo Pascal';
var      WORD:string[6];
      Poz, N: integer;
begin
Poz:=7;
N:=6;
WORD:=Copy(R,Poz,N);
writeln(WORD);
end.
На екрані дисплея буде надруковано слово: Pascal.

4) Функція Pos(WORD, R); - знаходить номер позиції Р, з якої починається перше входження слова WORD в рядку R. Якщо слово WORD в рядку R не знайдено, то буде надруковано число 0. Наприклад.
Program Fpos;
Const   Р='Севастополь';
 WORD='cтo';
Var        P: integer;
begin
P:=Pos(WORD,R);
writeln('P=',P);
end.
На екрані дисплея буде надруковано: Р=5

5) Процедура Insert(WORD, R, Poz); - вставляє слово WORD в рядок R, починаючи з позиції Poz. Наприклад.
Program Finsert;
Var    Poz:integer;
R, WORD:string[35];
begin
Poz:=20;
R:='Moвa програмування Pascal';
word:='Turbo';
insert(WORD,R,Poz);
writeln(R);
end.
На екрані дисплея буде надруковано : Мова програмування Turbo Pascal

6) Процедура Delete (R,Poz,N); - знищує слово, яке починається з вказаної позиції Poz і має задану довжину N в рядку R.
Наприклад.
Program Fdelete;
Var  R:string[35];
N,Poz: integer;
begin
R:='Мова програмування Turbo Pascal';
Poz:=l; N:=19;
delete(R,Poz,N);
writeln(R);
end.
На екрані дисплея буде надруковано: Turbo Pascal

Закріплення:
Розв’язування вправ

Підберіть відповідне
Функція

Значення
Length (’Іван Підкава’)

12;
Copy (’Іван Підкова’,6,7)

’Підкова’;
Pos (’ ’,’Іван Підкова’)

5;
Concat (’20,’01’)

’2001’

Комментариев нет:

Отправить комментарий