5.2.1. Типы данных


Тип данных – понятие из теории программирования. Тип данных определяет диапазон значений и операций, которые могут быть применены к этим значениям. Например, если переменная имеет числовой тип данных, то таким образом определен диапазон значений, которые могут быть сохранены в этой переменной (числа) и определены операции, которые могут быть применены к этой переменной (арифметические). Каждый язык программирования поддерживает один или несколько типов данных.

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

Преимущества от использования типов данных:

  • Надежность. Типы данных защищают от трех видов ошибок:

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

2. Некорректная операция. Позволяет избежать попыток применения выражений вида "Hello world" + 1. Поскольку, как уже говорилось, все переменные в памяти хранятся как наборы битов, то при отсутствии типов подобная операция была выполнима (и могла дать результат вроде "Hello wordle"!). С использованием типов  такие ошибки отсекаются на этапе компиляции.

3. Некорректная передача параметров. Если функция "синус" ожидает, что ей будет передан числовой аргумент, то передача ей в качестве параметра строки "Hello world" может иметь непредсказуемые последствия. При помощи контроля типов такие ошибки также отсекаются на этапе компиляции.

Классификация типов данных.  Согласно стандартной классификации, типы данных бывают следующие:

1. Простые.

1.1. Числовые. Хранятся числа. Могут применяться обычные арифметические операции.

1.1.1. Целочисленные: со знаком, то есть могут принимать как положительные, так и отрицательные значения; и без знака, то есть могут принимать только неотрицательные значения.

1.1.2. Вещественные: с фиксированной точкой, то есть хранятся знак и цифры целой и дробной частей и с плавающей точкой, то есть число приводится к виду m*2e, где m — мантисса, e — экспонента причем 1/2<=m<=1, а e - целое число и хранятся знак, и числа m и e.

1.2. Символьный тип. Хранит один символ. Могут использоваться различные кодировки.

1.3. Строковый тип. Хранит строку символов. Может применяться операция конкатенация (сложение строк). Вообще говоря, может рассматриваться как массив символов, но как правило выделяется в качестве простого.

1.4. Логический тип. Имеет два значения: истина(true) и ложь(false). Могут применяться логические операции. Используется в операторах ветвления и циклах. В некоторых языках является подтипом числового типа, при этом false=0, true=1.

1.5. Перечислимый тип. Может хранить только те значения, которые прямо указаны в его описании.

2. Составные. Формируются на основе комбинаций простых типов.

2.1. Массив. Является индексированным набором элементов одного типа. Одномерный массив — вектор, двумерный массив — таблица.

2.2. Запись. Набор различных элементов (полей записи), хранимый как единое целое. Возможен доступ к отдельным полям записи.

2.3. Множество (тип данных). В основном совпадает с обычным математическим понятием множества. Допустимы стандартные операции с множествами и проверка на принадлежность элемента множеству.

3. Другие типы данных. Если описанные выше типы данных представляли какие-либо объекты реального мира, то рассматриваемые здесь типы данных представляют объекты компьютерного мира, то есть являются исключительно компьютерными терминами.

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

3.2. Ссылки (тип данных).