Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Методтичка по контрольной Частина 1.doc
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
413.7 Кб
Скачать

2.7.2 Інтервальний тип даних

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

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

Над змінними, які відносяться до інтервального типу, можуть виконуватися всі операції і застосовуватися всі стандартні функції, що допустимі для відповідного базового типу.

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

2.7.3 Масиви

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

Уся сукупність компонентів визначається одним ім'ям. Для позначення окремих компонентів використовується конструкція, яку називають змінною з індексом чи з індексами:

A[5] S[k+1] B[3,5].

Як індекс може бути використане виразу. Тип індексів може бути тільки інтервальним чи типом, що перелічується. Дійсний і цілий типи неприпустимі. Індекси інтервального типу, для якого базовим є цілий тип, можуть приймати від’ємні, нульові і додатні значення.

В операторній частині програми один масив може бути привласнений іншому, якщо їхні типи ідентичні, наприклад:

R1:=Z.

Для вводу чи виводу масиву до списку вводу чи виводу вводять змінну з індексом, а оператори вводу чи виводу виконуються в циклі.

Перший індекс визначає номер рядка, другий - номер стовпця. Двовимірні масиви зберігаються в пам'яті ЕОМ по рядках.

Ініціалізація масивів (присвоєння початкових значень усім компонентам масивів) здійснюється двома способами.

  • Перший спосіб - з використанням типізованих констант, наприклад:

type Dim10= Array[1..10] of Real;

const raM10: Dim10 = ( 0, 2.1, 4, 5.65, 6.1, 6.7, 7.2, 8, 8.7, 9.3 );

При ініціалізації двовимірних масивів значення компонент кожного з вхідних у нього одномірних масивів записується в дужках:

type Dim3x2= Array[1..3,1..2] of Integer;

const iaM3x2: Dim3x2= ( (1, 2)

(3, 4)

(5, 6) );

  • Другий спосіб ініціалізації - використання різновиду процедури FillChar:

FillChar( var V; NBytes: Word; B: Byte );

Ця процедура заповнює ділянку пам'яті однобайтовим значенням. Наприклад, для занулення масиву A[1..10] of Real можна записати: FillChar(A, 40, 0) чи FillChar(A, SizeOf(A), 0);

2.7.4 Рядки

Особливе місце в мові ПАСКАЛЬ займають масиви символів. Стандартний ПАСКАЛЬ допускає два способи збереження символьних масивів у пам'яті ЕОМ: розпакований і запакований. Розпаковані масиви символів зберігаються в пам'яті ЕОМ по одному символі в машинному слові, запаковані - по одному символі в байті. При описі запакованого масиву символів використовують службове слово 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 включені процедури і функції, що забезпечують редагування і перетворення рядків.