русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

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

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

Совместимость и преобразование типов


Дата добавления: 2015-07-23; просмотров: 550; Нарушение авторских прав


Турбо Паскаль – это типизированный язык. Он построен на основе строгого соблюдения концепции типов, в соответствии с которой все применяемые в языке операции определены только над операндами совместимых типов. Ниже приводится более полное определение совместимости типов.

Два типа считаются совместимыми, если:

· оба они есть один и тот же тип;

· оба вещественные;

· оба целые;

· один тип есть тип-диапазон второго типа;

· оба являются типами-диапазонами одного и того же базового типа;

· оба являются множествами, составленными из элементов одного и того же базового типа;

· оба являются упакованными строками (определены с предшествующим словом PACKED) одинаковой максимальной длины;

· один тип есть тип-строка, а другой – тип-строка, упакованная строка или символ;

· один тип есть любой указатель, а другой – нетипизированный указатель;

· один тип есть указатель на объект, а другой – указатель на родственный ему объект;

· оба есть процедурные типы с одинаковыми типом результата (для типа-функции), количеством параметров и типом взаимно соответствующих параметров.

Совместимость типов приобретает особое значение в операторах присваивания. Пусть T1 – тип переменной, а Т2 – тип выражения, т.е. выполняется присваивание T1 := T2. Это присваивание возможно в следующих случаях:

· T1 и T2 есть один и тот же тип и этот тип не относится к файлам или массивам файлов, или записям, содержащим поля-файлы, или массивам таких записей;

· T1 и T2 являются совместимыми порядковыми типами и значение T2 лежит в диапазоне возможных значений T1;

· T1 и T2 являются вещественными типами и значение T2 лежит в диапазоне возможных значений T1;

· T1 - вещественный тип и T2 - целый тип; ,

· T1 - строка и T2 – символ;

· T1 - строка и T2 – упакованная строка;

· T1 и T2 – совместимые упакованные строки;



· T1 и T2 – совместимые множества и все члены T2 принадлежат множеству возможных значений T1;

· T1 и T2 – совместимые указатели;

· T1 и T2 – совместимые процедурные типы;

· T1 – объект и T2 – его потомок.

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

При явном преобразовании типов используются вызовы специальных функций преобразования, аргументы которых принадлежат одному типу, а значение – другому. Таковыми являются уже рассмотренные функции ORD, TRUNC, ROUND, CHR.

Неявное преобразование типов возможно только в двух случаях:

· в выражениях, составленных из вещественных и целочисленных переменных, последние автоматически преобразуются в вещественный тип, и все выражение в целом приобретает вещественный тип;

· одна и та же область памяти попеременно трактуется как содержащая данные то одного, то другого типа (совмещение в памяти данных разного типа).

Совмещение данных в памяти может произойти при использовании записей с вариантными полями, типизированных указателей, содержащих одинаковый адрес, а также при явном размещении данных разного типа по одному и тому же абсолютному адресу. Для размещения переменной по нужному абсолютному адресу она описывается с последующей стандартной директивой ABSOLUTE, за которой помещается либо абсолютный адрес, либо идентификатор ранее определенной переменной. Абсолютный адрес указывается парой чисел типа WORD, разделенных двоеточием; первое число трактуется как сегмент, второе – как смещение адреса. Например:

b : Byte absolute $0000:$0055; w : Longlnt absolute 128:0;

Если за словом ABSOLUTE указан идентификатор ранее определенной переменной, то происходит совмещение в памяти данных разного типа, причем первые байты внутреннего представления этих данных будут располагаться по одному и тому же абсолютному адресу, например:

var

х : Real;

у : array [1..3] of Integer absolute x;

В этом примере переменные X и Y будут размещены, начиная с одного и того же абсолютного адреса. Таким образом, одну и ту же область памяти длиной 6 байт, а следовательно, и размещенные в этой области данные теперь можно рассматривать как данные либо типа REAL, либо как массив из трех данных типа INTEGER.

Неявные преобразования типов могут служить источником трудно обнаруживаемых ошибок в программе, поэтому везде, где это возможно, следует избегать их [8,9].

 



<== предыдущая лекция | следующая лекция ==>
Указатели | Константы и константные выражения


Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.

Генерация страницы за: 0.474 сек.