Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

2 семестрп / Lab_7

.doc
Скачиваний:
12
Добавлен:
15.02.2015
Размер:
82.43 Кб
Скачать

Группа 2

Лабораторна робота 7

Тема: Розробка та реалізація програми з використанням рядкового типу даних

Ціль роботи: оволодіння навичками складання програми з вико­ристанням рядкового типу та виконання її у середовищі системи програмування Тurbo Раscal 6.0.

Короткі теоретичні відомості

Рядок - це послідовність довільних символів, які при викори­станні беруться в апострофи. В рядку може міститися від 0 до 255 символів: Опис рядкового типу складається з ключового слова string, за яким в квадратних дужках може бути записано макси­мальну кількість символів, яку може мати змінна описуваного типу. Наприклад, var SI:string[30];

Символи рядка мають номери від 0 до 255, причому ASCII код символу з номером 0 дорівнює поточній довжині даного рядка. До окремого символу рядка можна звернутися за допомогою індексу, так само, як при звертанні до елемента масиву.

Для контролю правильності діапазону значень номера символу призначена директива компілятора {$R+}. Якщо встановлена така директива, то при спробі доступу до елемента, наприклад, S[76] масиву з попереднього приклада, буде зафіксована помилка. За замовчуванням встановлюється директива компілятора {$R-}, тобто перевірка не проводиться.

Над даними рядкового типу визначено операції додавання (конкатенації), відношення і оператор присвоєння.

Зчеплення двох чи більше рядків в один реалізується за допомо­гою операції конкатенації, яка позначається знаком "+". Додава­тися можуть рядки довільної довжини, але необхідно, щоб довжина рядка-результату не перевищувала 255. Так, у результаті конкате­нації ‘Turbo ‘+ ‘Pascal ‘+’’+’v.6.0’ маємо ‘Turbo Pascal v.6.’ Відзначимо: пара апострофів, що йдуть підряд, зображає порожній символ. Він не відображається на екрані і не має порядкового номера.

Довільні два рядки можна порівнювати один з одним за допомо­гою операцій відношення (=, <>, <, >, <=% >=). Порівняння рядків відбувається зліва направо, до першого відмінного символу. Два рядки рівні, якщо вони мають однакову довжину і складаються з однакових символів, що йдуть в одному порядку. Меншим буде той рядок, в якому символ, що не збігається, має менший порядковий (ординальний) номер. Якщо рядки мають різну довжину, але в спільній частині збігаються, то меншим є коротший рядок;

Вираз Результат

‘PASCAL’> ‘Pascal’ False

‘Turbo >=Turbo True

Оператор присвоєння використовується для присвоєння рядковій змінній результату виразу рядкового типу. Якщо вираз рядкового типу містить більше символів, ніж може містити рядкова змінна, то зайві праві символи відкидаються. В операторі присвоєння до­пускається змішування символьного і рядкового типів. Якщо при цьому символьній величині присвоюється рядок, поточна довжина якої більше 1, то виникає помилка при виконанні.

Для обробки рядків є стандартні процедури і функції При подальшому описі ціх процедур і функцій під типом anystring розуміємо будь-який рядковий тип. Для обробки рядків є такі стан­дартні процедури: Delete, Insert, Str, Val.

Для обробки рядків є такі стандартні функції: Length, Pos, Copy, Concat.

Завдання 7.1

Визначити дію фрагмента програми і обчислити значення змінних X та Y після його виконання, якщо var X, S: string[18] ; A: string[1]; Y:integer; X:='N'+'alb2c3d4' ; S:='24'+'Nr; Y: =512.

Фрагмент програми: x:=concat(copy(x,1,2),s,copy(x,8,length(x)-7));

y:=length(x);

Розв’язок

Цей фрагмент програми перетворює значення рядкової змінної X у цілечислене і присвоює результат змінній Y. Після його виконан­ня Х=4a244d4 Y=7.

Завдання 7.2

Скласти програму для виконання наступних дій і виконати її у середовищі системи програмування Тurbо Раscal 6.0

Умова: визначення кількості цифр у рядку.

Розв’язок

program lr7;

var

c:char;

k,kw,kp:integer;

begin

writeln('vvedit simvolniy raydok');

k:=0;

kw:=1;

kp:=0;

repeat

read(c);

if c in ['0'..'9'] then

k:=k+1;

if not (c in ['a'..'z','A'..'Z','а'..'я','А'..'Я','0'..'9',':',';',',','.','!','?','(',')','-']) then

kw:=kw+1;

until eoln;

writeln('chislo cifr=',k);

end.

Результати роботи програми:

vvedit simvolniy raydok

Мені сьогодні виповнилося 19

chislo cifr=2

Висновок:

Захист

Program 7z;

Var Text, Slovo1, Slovo2 : String;

i, DlinaSlova, P : Integer;

begin

write('Введите строку : ');

readln(Text);

write('Какое слово заменить ? ');

readln(Slovo1);

Write('На какое слово заменить ? ');

readln(Slovo2);

writeln;

DlinaSlova:=Length(Slovo1);

P:=Pos(Slovo1,Text);

While P>0 do

begin

Delete(Text, P, DlinaSlova);

Insert(Slovo2, Text, P);

P:=Pos(Slovo1, Text);

end;

writeln('Новый текст: ', Text);

readln

end.

ЛР07- 6.050103.1157-01

Соседние файлы в папке 2 семестрп