Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Підручник КНУ-4кк11.doc
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
16.18 Mб
Скачать

3.3. Типи даних та засоби їх генерації для використання в збиральному прогрмуванні

Здатність до обєднання ї двох і більше компонентів або систем з метою обміну інформацією і використання її для організації обчислень визначена в мовах програмування (МП) у виді апарату підпрограм і функцій та засобах інтерфейсу зв'язку різномовних та різноплатформених програм, таких як модуль-посередник у мові MIL (Module Interconnection Language); у системах загального призначення (Sun IBM, Microsofts, CORBA, СОМ, JAVA і ін.) – у середовищі брокера; а також в системах Linux і Windows Server і в середовищах (Microsoft.Net, IBM Web Spheke – засобу Web Servises та єдиний вихідний код і т.п.

3.3.1. Проблема забезпечення сумісності типів даних при зборки кпв

Це потребує сумісності програм і систем за даними, що передаються між ними. Ці дані описуються МП на основі теорії фундаментальних типів даних (ФТД). Вона базується на формалізованому підході до визначення структур і типів даних шляхом аксіоматизації та правил виконання операцій над їх значеннями. Основу теорії структурної організації даних [1–4] складають типи, операції над ними і форма їх представлення на комп’ютері. Тип – це математичне поняття, яке визначає множину значень елементів. Базовий тип – це елементарний тип (наприклад, ціле, дійсне та ін.), значення якого обумовлюється апаратурою, компіляторами програм з МП та ін. Тип присвоюється змінній, обумовлюючій клас значень, кожне з яких належить одному й тільки одному типу. Операції над значеннями типу – це аксіоми. Кожне визначення типу “будується” за допомогою кінцевого числа операцій (наприклад, операція «+» має різну семантику для змінної, матриць і т.п..) і в пам'яті машини це значення – кінцеве.

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

Аксіоматична система включає типи даних (прості, структурні й складні), множину операцій і значень типів даних, їх властивості та зв'язки з іншими типами даних. Прості типи – це перелічувальні типи даних, структурні – це масиви й записи, складні типи – множини, списки, послідовності тощо [7–12].

Типи даних призначені для опису функцій та програм у МП. Вони реалізуються системами програмування на різних платформах комп'ютерів у вихідному коді, що служить джерелом не тільки для виконання програми на цій МП, але й для забезпечення взаємодії в різноманітних, відмінних між собою сучасних середовищах. Кожна реалізована програма відображає використовуваний тип даних конкретної МП, значення якого передається іншій програмі за допомогою виклику (звертання) і використовується при виконанні програми.

3.3.2. Аксіоматика простих типів даних

Прості типи – це перелічувані типи, а також “цілий – integer (i)”, “дійсний – real (r)“, “булевий – boolean (b)“ і “символьний – character (с)“. Вони мають вигляд:

type T = X (х1, х2, .... хn),

де Т – ім'я типу, а ( х1, х2, ...., хп ) – імена значень з множини значень X типу Т.

Операції над перелічуваними типами включають бінарні операції співставлення й унарні операції pred і succ, що задають відповідно попередній та наступний елементи в множині X. Операції співставлення (<, ≤, >, ≥, = , ≠), далі (≤), визначають лінійний порядок елементів множини X.

Булевий тип визначений на множині значень Хb і операцій b:

Хb = {false, true},

b = {&, V, ¬, pred, succ, ≤}.

Символьний тип визначений на множині значень Хс і множині операцій c :

Хс = {... , ’А’ ... , ’Х ’ ... , 0, 1, . .. , 9},

c ={pred, succ, ord, chаr, ≤}.

Операція ord додає кожному символові його порядковий номер, а chаr для цього номера – значення.

Аксіоми даних типів мають такий вид:

X . min X, X . max X,

( x X) & ( xX . max) succ (x) X.

( x X) & ( xX . max) succ (x) X . min,

де X.min і X.max – мінімальний та максимальний елементи множини X.

Числові типи (integer і real) мають обмеження, зв'язані з архітектурою або з явним описом параметрів компонентів. Їм відповідають базові типи, обумовлені як відрізки виду:

type T = (X.min, …, X.max),

де X.min і X.max мінімальний та максимальний елементи цього відрізку. Для будь-якого х Х виконується умова х.min < х < х.max. Значення х залежить від реалізації цього типу конкретним транслятором з урахуванням архітектури комп'ютера.

Над змінними цілого типу виконуються аналогічні операції, до них додаються операції цілочисельної арифметики: унарні мінус, +, –, , div і mod Цілий тип даних на заданому відрізку визначається наступними аксіомами:

Xi = {Хi.min, Xi.max + 1, … Хi .max},

i = {+, , div, –, ≤},

type Ti = (Xi.min ,…, Xi .max).

Дійсний тип визначається за допомогою операцій співставлення і звичайних арифметичних операцій (унарний мінус, +, –, , /). Аксіоми речовинного типу на відрізку такі:

Хr = {x | Хr.min ≤ x ≤ Хr.max },

r = {+, , /, – , ≤ },

type Tr = r.min ,…,Хr max).

Будь-які типи даних приводяться до базового типу, перетворюються до необхідного виду, заданого в програмі, і після одержання результату базовий тип приводиться до вихідного типу за допомогою наступних аксіом:

( x X) Т(Т0(х)) = х,

( x1 X) & ( x2 X) ( x1 ≤ x2 )(T0(x1) ≤. T0(x2)) .

В них Т0 позначає базовий тип для типу Т. Операції перетворення значення Т0(х) до Т(х) визначають відповідний базовий тип при виконанні арифметичних операцій :

( x1 X) & ( x2 X) (x1 x2 ) T(T0(x1) T0(x2)).