русс | укр

Мови програмуванняВідео уроки php mysqlПаскальСіАсемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование


Linux Unix Алгоритмічні мови Архітектура мікроконтролерів Введення в розробку розподілених інформаційних систем Дискретна математика Інформаційне обслуговування користувачів Інформація та моделювання в управлінні виробництвом Комп'ютерна графіка Лекції


Сумісність в операціях присвоювання


Дата додавання: 2014-02-04; переглядів: 896.


Сумісність типів

Тотожність типів

Тотожність типів потрібна тільки для змінних фактичних і формальних параметрів при виклику процедур і функцій.

Два типи, скажімо T1 і T2, є тотожними, якщо є істинним одне з наступних тверджень:

ü T1 і T2 являють собою той самий ідентифікатор типу;

ü T1 описаний як еквівалентний типу, тотожному T2.

Друга умова означає, що T1 не обов'язково повинен бути описаний як безпосередньо еквівалентний T2. Наступні описи типів:

T1 = integer; T2 = T1; T3 = integer; T4 = T2;

означають, що T1, T2, T3, T4 і integer є тотожними типами.

Наступні описи типів: T5 = set of integer; T6 = setofinteger; – не визначають T5 і T6 як тотожні, оскільки set of integer не є ідентифікатором типу. Дві змінні, описані в тому самому описі, наприклад: V1, V2: set of integer; мають тотожні типи, оскільки їх описи не роздільні. Опис:V1: set of integer; V2: set of integer; V3: integer; V4: integer; означають, що V3 і V4 мають тотожний тип, а V1 і V2 – ні.

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

Сумісність типів має місце, якщо виконується принаймні одна з наступних умов:

ü Обидва типи є тотожними.

ü Обидва типи є дійсними типами.

ü Обидва типи є цілочисловими.

ü Один тип є піддіапазоном іншого.

ü Обидва типи є відрізками того самого основного типу.

ü Обидва типи є множинними типами із сумісними базовими типами.

ü Один тип є рядковим, а інший тип є або рядковим типом, або символьним типом.

ü Один тип є вказівником (Pointer), а інший є будь-яким типом вказівників.

ü Обидва типи є процедурними з ідентичними типами результатів, однаковим числом параметрів і відповідністю між параметрами.

 

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

Значення типу T1 є сумісним по присвоюванню з типом T2 (тобто допустимо оператор T1:=T2), якщо виконується одна з наступних умов:

ü T1 і T2 мають тотожні типи, і жоден з них не є файловим типом або структурним типом, що містить компонент із файловим типом на одному зі своїх рівнів.

ü T1 і T2 є сумісними Перерахованими типами, і значення типу T2 попадають у діапазон можливих значень T1.

ü T1 і T2 є дійсними типами, і значення типу T2 попадають у діапазон можливих значень T1.

ü T1 є дійсним типом, а T2 є цілочисловим типом.

ü T1 і T2 є рядковими типами.

ü T1 є рядковим типом, а T2 є символьним типом.

ü T1 і T2 є сумісними множинними типами, і всі члени значення типу T2 попадають у діапазон можливих значень T1.

ü T1 і T2 є сумісними типами вказівників.

ü T1 і T2 є сумісними процедурними типами.

ü T1 являє собою процедурний тип, а T2 - процедура або функція з ідентичним типом результату, ідентичним числом параметрів і відповідністю між типами параметрів.

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


<== попередня лекція | наступна лекція ==>
Тотожні й сумісні типи | Стандартні функції


Онлайн система числення Калькулятор онлайн звичайний Науковий калькулятор онлайн