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

Наприклад

Var

x1: integer; x2: char; x3: boolean; x3: rainbow;

x1: =32766;

x2: =’A’;

x3: =true;

x4: = red;

inc (x1); { x1=32767 }

inc (x1,2); { x1=-32767 }

dec (x3,2); { x3=true }

dec (x4); { x4=magenta }

4.Структурокані типи даних:

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

а) Регулярні типимасиви

Масиви – структури даних, які є об’єднанням в одне ціле деякої фіксованої кількості однотипних елементів. Оголошуються масиви за допомогою службового слова array, після якого вказується розмір масиву, кількість елементів, а також тип самих елементів масиву.

TYPE<ідентифікатор типу >= ARRAY[<діапазон індексів>,<діапазон індексів >,…] OF<тип елементів > ;

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

Кількість діапазонів визначає розмірність масиву:

1 Діапазон – одновимірний масив;

2 Діапазони – двовимірний ( таблиці, матриці);

п діапазонів – п-вимірний.

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

Наприклад

Type

rainbow =(red, orange, yellow, blue, dark blue, magenta);

vector = array [1..3] of real;

mas1 = array[‘A’..’Z’] of byte;

mas2 = array[1..8,’A’..’H’] of byte;

mas3 = array[false,true, red..yellow] of char;

mas4 =array[-100..-50] of vector;

Оголошення змінних типу масив може здійснюватися або використанням ідентифікаторів раніше описаних

x:= mas1; y:= mas4;

або явним чином

a: array[1..26] of byte;

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

В пам’яті під змінні масивних типів відводяться поля, розмір яких у байтах є сумою розмірів всіх елементів.

У випадку багатовимірних масивів елементи їх розміщуються послідовно в пам’яті в порядку задання розмірностей.

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

б) Регулярний типрядки символів:

Структура даних, елементи якої є символами у Pascal є рядки символів. По способу організації і розміщення у пам’яті подібні до масивів. Їх відносять до однієї групи складених типів – регулярних.

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

В ранніх версіях Pascal рядки навіть оголошувалися як масиви( упорядковані масиви символів).

В Turbo Pascal рядки символів оголошуються службовим словом STRING. При оголошенні може задаватися граничне значення довжини рядка, що слідує після слова string у квадратних дужках.

Це значення може лежати в межах від 0 до 255.

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

Величини записуються в апострофах.

Наприклад

Var

S1: string;

S2: string[6];

S1:=’ABCDEFGH’;

S2:=S1; {S2=’ABCDEF’}

Для того, щоб апостроф сам став символом, а не лише його обмеженням, він повинен бути записаний двічі.

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

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

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

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

Зауваження Рядок з одного символу і окремий символ типу char не одне і теж.

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

Об’єднання (конкатенація).

Конкатенація – приєднання одного рядка в кінець іншого.

Наприклад

S:=’і’ + ‘ стань’ + ‘ зіркою’; {і стань зіркою}

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

Операція порівняння

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

Наприклад

S1: string;

S2:string;

S1:= ‘ABCD’; {S1=S2}

S2:= ‘ABCD’;

Порівняння рядків порівнюється по-байтно, починаючи з першого символа.

в) Регулярний типмножини

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

Оголошення множини, при доповненні стандартних слів set of, після яких вказується ідентифікатор елементів множини. В якості базових типів можуть бути лише порядкові типи і кількістю елементів до 256. це цілі byte, shorting, символи char, логічні boolean.

Наприклад

Var

A: set of byte;

B: set of 0..100;

C: set of char;

D: set of rainbow;

Значення множинних величин задається в парі квадратних дужок, переліком через кому або інтервалом.

Наприклад

A:=[109,100,0,5..50];

B:=[100,0..99];

C:=[‘A’,’Z’];

D:=[red];

Множини можуть бути пустими[ ].

В пам’яті множини представляються у вигляді чисел достатньо великого розміру. Кожне із цих чисел в своєму подвійному записі матиме одиничний біт у позиції, що відповідає присутньому елементу. Таким чином множини займають у пам’яті 256 бітів і до 32 байт.

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

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]