Совместимость и преобразование типов данных
| Категория реферата: Топики по английскому языку
| Теги реферата: дипломная работа исследование, реферат египет
| Добавил(а) на сайт: Kapnist.
Предыдущая страница реферата | 2 3 4 5 6 7 8 9 10 11 12 | Следующая страница реферата
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.
Отношение структурно-именной эквивалентности рефлексивно, симметрично и транзитивно. По вложению оно лежит строго между структурной и именной эквивалентностями. Им легко пользоваться на практике.
Примеры
1.
С помощью несложной программы мы сможем узнать внутренний код произвольного символа.
Program Code_pf_Char;
{Программа читает символ с клавиатуры и выводит на экран
этот символ и соответствующий ему внутренний код}
var
ch: Char; {В эту переменную читается символ}
begin
Write('Введите любой символ: ');
ReadLn(ch); {Читаем один символ}
WriteLn(ch, ' = ',ord(ch)); {Преобразуем его к целому и выводим на экран}
END.
Рекомендуем скачать другие рефераты по теме: сочинение сказка, рефераты,, оформление доклада титульный лист.
Категории:
Предыдущая страница реферата | 2 3 4 5 6 7 8 9 10 11 12 | Следующая страница реферата