Лекция №2 АППАРАТНО И ПРОГРАММНО-РЕАЛИЗУЕМЫЕ ТИПЫ ДАННЫХ
Аппаратно-реализуемые типы данных
Информация - данные принятые, понятые и оцененные как полезные получателем данных. Т.е. без определения процедур использования (интерпретации) информация, представленная на любых носителях не является таковой.
Для ЭВМ в этом аспекте понимание (интерпретация) связана с правилами работы с битовыми комбинациями. Если соблюдается условие непротиворечивости, то с битовой комбинацией могут быть связаны любые смысловые значения. Например, значение x может интерпретироваться как адрес и как целое число:
x=1252
float * x; int x;
x = x + 1 x=1256 x=x+1 x=1253
Аппаратная реализация типа данных определяется методами интерпретации бытовых комбинаций, характерными для команд конкретной ЭВМ.
При создании средств программирования применительно к аппаратно-реализуемым типам данных (АРТД) принципиально важным оказывается решение двух вопросов:
- каким образом определить типы данных, т.е. разрешенные для интерпретации бытовые комбинации;
- какие типы данных использовать для интерпретации заданной бытовой комбинации.
Таким образом:
АРТД = .
Каждая ЭВМ имеет свой "родной" набор аппаратно-реализуемых типов данных, т.е. содержит механизмы манинулирования бытовыми комбинациями в соответствии с объектами, которые ими представлены.
Примеры АРТД:
- указатели,
- целые числа,
- вещественные числа,
- десятичные числа с фиксированной точкой, и т.д.
Но для большинства специалистов по программному обеспечению в большей степени важны интерпретация типов данных с точки зрения потребностей пользователя.
Например: сложение чисел в десятичной системе счисления
13 + 15 = 28.
Здесь предпочтительно работатьс концепцией целого числа, а не с понятием бытовых комбинаций. Более того, естественно на базе концепции целых десятичных чисел строить на логическом уровне конструкции типа целочисленных массивов из кодов объектов или логических значений.
При этом с того момента, как концепцию типа данных отделена от аппаратных возможностей ЭВМ, появляется перспектива построения практически неограниченного количества структур данных.
Программно-реализуемая структура данных - абстрактная концепция типа данных, определяемая набором логических возможностей по созданию данных этого типа и манипулированию ими на базе других типов данных.
Базовые вычислительные структуры алгоритмических языков.
Объекты и типы объектов
Дискретное сообщение N вместе с сопоставленной ему информацией J в дальнейшем будем называть объектом:
отображение
L
N J
обозначение значение
Отображение L не обязательно обратимо
0.00001
0.1Е-4 единое значение
1Е-5
На практике объекты группируются благодаря тому, что на них определен некоторый естественный процесс обработки сообщений. Например, можно определить группу объектов, над которыми определены следующие операции:
- переход к следующему числу;
- сложение;
- умножение;
- вычитание;
- деление с остатком.
Чтобы объект мог служить операндом в некотором алгоритме, он должен быть представлен конечным числом знаков из какого-либо алфавита. При этом требуется, чтобы выполнялись три принципа [ ]:
- принцип порождения - "каждый объект порождается за конечное число шагов";
- "принцип выделенных элементов" - каждый объект порождается из конечного числа элементов;
- "принцип перечислимости " - множество объектов должны быть перечисленным посредством некоторого алгоритма.
Множество объектов с однородными значениями, для которых естественным образом определена некоторая совокупность операций, называется множеством объектов определенного типа (тип данных).
Наиболее распространенные типы:
- целые (integer);
- вещественные (real);
- значения истинности (Bool);
- символы (литер) (char);
- конечные последовательности знаков (slring);
- битовые последовательности (bit) и т.д.
Вычислительная структура состоит из одного или нескольких типов объектов и некоторых основных операций над этими типами, каждая с результатом одного из этих типов.
Сигнатура вычислительной структуры: совокупность типов и операций.
Внутренние операции - операции, у которых операнды и результат относятся к одному типу.
В противном случае имеют место смешанные операции.
В качестве примера рассмотрим сигнатуру для типа целых чисел (табл. 2.1). Для этой структуры типы объектов - целые числа и логические значения.
Программная реализация вычислительной структуры в рамках компилятора алгоритмического языка позволяет интерпретировать соответствующие типы данных как базовые типы алгоритмического языка.
Переходы между типами
Наряду с общим применением символов операций для внутренних операций, например: над целыми или вещественными числами алгоритмические языки предполагают смешанные операнды. Это достигается с помощью предварительного отображения одного типа в другой (обычно обладающий большей общностью) тип.
Такую вспомогательную операцию называют неявным обобщением:
а = "СПРУТ" в = "1"
а + в "СПРУТ 1"
неявное обобщение
`1` "1"
3 + 4,17 7,17
3 3.00
Таким образом, при проектировании
базовых типов данных для алгоритмических языков необходимо определить сигнатуру
соответствующей вычислительной структуры и возможные переходы между типами в операциях.
Таблица 2.1
Основные вычислительные операции над целыми числами
Тип операции (операция) |
Функциональный тип операции и обозначения |
Двуместные внутренние операции |
(int, int) int |
- сложение |
.+. |
- вычитание |
.-. |
- умножение |
.x. |
- частное |
.div. |
- остаток |
.mod. |
- минимум |
.min. |
- максимум |
.max. |
- НОД |
.ged. |
- НОК |
.lcm. |
- степень |
.. |
Одноместные внутренние операции |
(int) int |
- предшественник |
.pred. (инкримент) |
- приемник |
.Succ. (декримент) |
- удвоение |
.x |
- деление пополам |
div |
- абсолютное значение |
abs |
- знак |
sign |
- перемена знака Предикаты: - равно, не равно - меньше, больше - меньше или равно - больше или равно Свойство быть: - равным нулю - не равным нулю - быть четным - быть нечетным |
(int, int) Boolean .=., < >. .<., .>. .<=. .>=. =0 0 odd |
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.