4. КОНЦЕПЦИЯ ТИПА
ДЛЯ ДАННЫХ
В математике принято классифицировать переменные в соответствии с
некоторыми важными характеристиками. Производится строгое разграниче
ние между вещественными, комплексными и логическими переменными, меж
ду переменными, представляющими отдельные значения и множество значе
ний и так далее.
При обработке данных на ЭВМ такая классификация еще более важна. В
любом алгоритмическом языке каждая константа, переменная, выражение
или функция бывают определенного типа.
В языке ПАСКАЛЬ существует правило: тип явно задается в описании
переменной или функции, которое предшествует их использованию. Кон
цепция типа языка ПАСКАЛЬ имеет следующие основные свойства:
-любой тип данных определяет множество значений, к которому при
надлежит константа, которые может принимать переменная или выражение,
или вырабатывать операция или функция;
-тип значения, задаваемого константой, переменной или выражением,
можно определить по их виду или описанию;
-каждая операция или функция требует аргументов фиксированного ти
па и выдает результат фиксированного типа.
Отсюда следует, что транслятор может использовать информацию о ти
пах для проверки вычислимости и правильности различных конструкций.
Тип определяет:
-возможные значения переменных, констант, функций, выражений, при
надлежащих к данному типу;
-внутреннюю форму представления данных в ЭВМ;
-операции и функции, которые могут выполняться над величинами,
принадлежащими к данному типу.
Обязательное описание типа приводит к избыточности в тексте прог
рамм, но такая избыточность является важным вспомогательным средс
твом разработки программ и рассматривается как необходимое свойство
современных алгоритмических языков высокого уровня. В языке ПАСКАЛЬ
существуют скалярные и структурированные типы данных.
К cкалярным типам относятся стандартные типы и типы, определяе
мые пользователем.
Стандартные типы включают целые, действительные, символьный,
логические и адресный типы. Типы, определяемые пользователем, - пере
числяемый и интервальный.
Структурированные типы имеют четыре разновидности: массивы, мно
жества, записи и файлы.
Кроме перечисленных, TURBO PASCAL включает еще два типа - проце
дурный и объектный.
Из группы скалярных типов можно выделить порядковые типы,
которые характеризуются следующими свойствами:
-все возможные значения порядкового типа представляют собой
ограниченное упорядоченное множество;
-к любому порядковому типу может быть применена стандартная
функция Ord, которая в качестве результата возвращает порядко
вый номер конкретного значения в данном типе;
-к любому порядковому типу могут быть применены стандартные
функции Pred и Succ, которые возвращают предыдущее и последую
щее значения соответственно;
-к любому порядковому типу могут быть применены стандартные функ
ции Low и High, которые возвращают наименьшее и наибольшее значения
величин данного типа.
В языке ПАСКАЛЬ введены понятия эквивалентности и совместимости типов.
Два типа Т1 и Т2 являются эквивалентными (идентичными), если выполняется
одно из двух условий:
-Т1 и Т2 представляют собой одно и то же имя типа;
-тип Т2 описан с использованием типа Т1 с помощью равенства или
последовательности равенств. Например:
type
T1 = Integer;
T2 = T1;
T3 = T2;
Менее строгие ограничения определены совместимостью типов. Напри
мер, типы являются совместимыми, если:
-они эквивалентны;
-являются оба либо целыми, либо действительными;
-один тип - интервальный, другой - его базовый;
-оба интервальные с общим базовым;
один тип - строковый, другой - символьный.
В ТУРБО ПАСКАЛЬ ограничения на совместимость типов можно обойти с
помощью приведения типов. Приведение типов позволяет рассматривать
одну и ту же величину в памяти ЭВМ как принадлежащую разным типам.
Для этого используется конструкция
Имя_Типа(переменная или значение).
Напрмер,
Integer('Z')
представляет собой значение кода символа 'Z' в двухбайтном представ
лении целого числа, а
Byte(534)
даст значение 22, поскольку целое число 534 имеет тип Word и занима
ет два байта, а тип Byte занимает один байт, и в процессе приведения
старший байт будет отброшен.