Зворотний зв'язок

Програмування рядкових величин.

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.

Розглянемо приклад алгоритмів опрацювання рядкових величин із застосуванням наведених функцій.

Заданий текст (рядкова величина), слова якої розділені символом “пропуск”.

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.

Серед інших процедур та функцій над рядками варто відмітити процедури виділення (копіювання) частини рядка, видалення частини рядка, функцію знаходження позиції входження одного рядка до іншого, функцію визначення довжини рядка, тощо.


Реферати!

У нас ви зможете знайти і ознайомитися з рефератами на будь-яку тему.







Не знайшли потрібний реферат ?

Замовте написання реферату на потрібну Вам тему

Замовити реферат