Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Методичка з інформатики.doc
Скачиваний:
21
Добавлен:
20.12.2018
Размер:
1.33 Mб
Скачать

Опорний конспект

Р Я Д К И

Особливе місце в мові ПАСКАЛЬ займають масиви символів. Стандартний ПАСКАЛЬ допускає два способи зберігання символьних масивів в пам’яті ЕОМ: розпакований і упакований. Розпаковані масиви символів зберігаються в пам'яті ЕОМ по одному символу в машинному слові, упаковані - по одному символу в байті. При описі упакованого масиву символів використовують службове слово PACKED, наприклад:

var MAS: Packed Array[1..20] of Char;

Опис розпакованого масиву символів має вигляд:

var M: Array[1..20] of char;

Для перетворення символьного масиву з розпакованої форми в

упаковану і навпаки, з упакованої в розпаковану, в мову ПАС-

КАЛЬ введені дві стандартні функції Pack, UnPack.

Упакований масив символів утворює символьний рядок. Символьний

рядок може бути константою або змінною. Строкова константа, або рядок, є сукупність символів між апострофами. Рядок - це елементарна конструкція мови ПАСКАЛЬ. Строкові константи можуть входити до складу виразів. Як і числові константи, вони можуть бути описані в розділі опису констант.

Строкові змінні - це одновимірні упаковані масиви символів, для опису яких в TURBO PASCAL введений тип String.

Наприклад, якщо рядок містить до 30 символів, її тип буде визначений як

type s= String[30];

Довжина рядка не може містити більш, чим 255 символів.

У TURBO PASCAL визначене поняття рядка змінної довжини, в цьому випадку її опис задається як

type s= String;

Тип String без вказівки довжини сумісний зі всіма типами рядків.

Особливістю строкових змінних є те, що до них можна звертатися як до скалярних змінних, так і до масивів. У другому випадку застосовується конструкція "змінна з індексом", що забезпечує

доступ до окремих символів рядка. При цьому нижня межа індексу

рівна 1. Окремий символ рядка сумісний з типом Char.

У пам'яті ЕОМ рядок займає кількість байтів, на одиницю більшу

її довжини. Нульовий байт рядка містить її довжину.

Для рядків визначені операції привласнення, злиття (конкатенації) і порівняння.

Для порівняння рядків застосовуються всі операції відношення. Порівняння рядків відбувається посимвольно, починаючи з першого символу. Рядки рівні, якщо мають однакову довжину і посимвольно еквівалентні.

Рядки можуть бути елементами списку введення - висновку, при цьому записується ім'я рядка без індексу.

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

Ініціалізація рядків може проводитися як за допомогою типізованих констант:

const sName: String[9]= 'IBM PC/AT';

так і з використанням другого різновиду функції FillChar:

FillChar( var V; NBytes: Word; C: Char );

наприклад:

FillChar(A, SizeOf(A), '0');

Для роботи з рядками в TURBO PASCAL включені процедури і функції, які забезпечують редагування і перетворення рядків.

Приклади програм.

1) Пошук та заміна у введеному з клавіатури рядку заданого символу на заданий.

program zamina;

uses crt;

var

s:string; h1,h2:char;

i:byte;

BEGIN

clrscr;

writeln('Input string:');

readln(s);

write('Input symbol for replace:'); readln(h1);

write('Input symbol replacing it'); readln(h2);

for i:=1 to length(s) do begin

if s[i]=h1 then s[i]:=h2;

end;

writeln('New string:'); writeln(s);

readkey;

END.

2) Обчислити кількість символів „а” в заданому рядку.

program kilkist;

uses crt;

var

s:string; h1:char;

i:byte; k: byte;

BEGIN

clrscr;

writeln('Input string:');

readln(s); k:=0;

write('Input symbol:'); readln(h1);

for i:=1 to length(s) do begin

if s[i]=h1 then inc(k);

end;

writeln('k=',k);

readkey;

END.