1.1 Типы данных |
Предыдущая Содержание Следующая |
Типы данных являются неотъемлемой частью каждого языка программирования. Вот названия некоторых из них в ANSI-C: int, double и char. Программисты редко бывают довольны тем, что доступно, и обычно язык программирования предоставляет средства создания новых типов данных от предопределённых. Одним из простых подходов является формирование групп, таких как массивы, структуры или объединения. Указатели, согласно Ч. Э. Р. Хоару ''подход, от которого мы никогда не сможем излечиться'', позволяют представлять и манипулировать данными практически неограниченной сложности. Что именно представляет собой тип данных? Можно рассмотреть несколько точек зрения. Тип данных представляет собой набор значений — char обычно имеет 256 различных значений, int имеет много больше; оба являются линейно упорядоченными множествами и ведут себя более или менее похоже на натуральные или целые числа математики. В свою очередь double имеет гораздо больше значений, но они, конечно, не ведут себя как действительные числа математики. В качестве альтернативы можно определить тип данных как набор значений плюс операции для работы с ними. Как правило, значения это то, что имеет компьютерное представление, а операции более или менее отражают имеющиеся аппаратные инструкции. int в ANSI-C не слишком хороший пример в этом отношении: диапазон значений может изменяться между машинами, и такие операции, как арифметический сдвиг вправо, могут вести себя по-разному. С более сложными примерами дело обстоит ненамного лучше. Обычно элемент линейного списка определяется как структура
typedef struct node { struct node * next; ... информация ... } node;
а для операций определяются заголовочные функции, например
node * head (node * elt, const node * tail);
Такой подход, однако, весьма неряшлив. Принципы хорошего программирования требуют скрывать представление элемента данных и декларировать только допустимые манипуляции.
|
Предыдущая Содержание Следующая |