Теми рефератів
> Реферати > Курсові роботи > Звіти з практики > Курсові проекти > Питання та відповіді > Ессе > Доклади > Учбові матеріали > Контрольні роботи > Методички > Лекції > Твори > Підручники > Статті Контакти
Реферати, твори, дипломи, практика » Курсовые проекты » Сумісність і перетворення типів даних

Реферат Сумісність і перетворення типів даних





на порожній терм, записуваний по ключу alias. опис цього псевдоніма типу включається у вигляді предиката declared. p> type (B, tid (A, B)) ->

[array, `[, n (M),`:, n (N), `], of], type (B, T),

{recorda (alias, _, A),

assert (declared (A, B, type (arr (M, N, T)))}.

type (B, tid (A, B)) ->

[record], field (B, F), fields (B, LF),

{correct (F, LF),

recorda (alias, _, A),

assert (declared (A, B, type (rec ([F | LF])))},

[end].

type (B, tid (A, B)) ->

[`^, id (I)],

{(type_id2 (I, B, B1, type (_));

assert (declared (I, B, type (referred))),

B1 = B),

recorda (alias, _, A),

assert (declared (A, B, type (ref (I, B1)))}.

Предикат consist в цьому випадку визначається таким чином:

consist (T1, T2): T1 = int, T2 = real;%, що приводиться

equiv (T1, T2) ;% Еквівалентність

error ("Несумісні типи ").

equiv (T, T).

equiv (tid (I, B), tid (I1, B1)): declared (I, B, type (tid (I1, B1)));

declared (I1, B1, type (tid (I, B))).

Іменна еквівалентність порівняно просто реалізується. Але це - відношення (Рефлексивне і симетричне) не транзитивній, і тому не є еквівалентністю ні в математичному, ні в звичному, повсякденному сенсі. Поняття псевдоніма типу зазвичай не дається програмістам, Тому початківці програмісти на Паскалі часто роблять помилки, на зразок зазначених у прикладі. Мотивацією для введення іменний еквівалентності в 1970-і роки послужило бажання уникнути помилок програмування, начебто присвоювання "яблукам" "крабів", коли і ті, й інші описані як цілі. З розвитком об'єктно-орієнтованого програмування подібні хитрощі стали зайвими, а іменна еквівалентність залишилася в деяких мовах як анахронізм.

Структурно-іменна еквівалентність

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

consist (T1, T2): base_type (T1, BT1), base_type (T2, BT2),

(BT1 = int, BT2 = real ;%, Що приводиться

BT1 = BT2 ;% Еквівалентність

error ("Несумісні типи ")).

При цьому немає необхідності вводити псевдоніми типу, як у випадку іменний еквівалентності. Замість предиката acc_type при аналізі доступу можна застосовувати предикат base_type. p> Ставлення структурно-іменний еквівалентності рефлексивно, симетрично і транзитивній. За вкладенню воно лежить строго між структурним та іменний еквівалентності. Їм легко користуватися на практиці.

Приклади

1.

З допомогою нескладної програми ми зможемо дізнатися внутрішній код довільного символу.

Program Code_pf_Char;

{Програма читає символ з клавіатури і виводить на екран

цей символ і відповідний йому внутрішній код}

var p> ch: Char; {У цю змінну читається символ}

begin p> Write (&...


Назад | сторінка 7 з 8 | Наступна сторінка





Схожі реферати:

  • Реферат на тему: Способи Досягнення еквівалентності при перекладі англійської Економічної лі ...
  • Реферат на тему: Поняття перекладацької еквівалентності
  • Реферат на тему: Еквівалентність та мінімізація кінцевих автоматів
  • Реферат на тему: Адекватність і еквівалентність перекладу власних назв при локалізації ігор
  • Реферат на тему: Умови еквівалентності обміну