Тип данных

Эту статью следует викифицировать.
Пожалуйста, оформите её согласно общим правилам и указаниям.

Тип данных — понятие из теории программирования. Тип данных определяет диапазон значений и операций, которые могут быть применены к этим значениям.

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

Типизация — жесткая связка операций и типов обьектов, над которыми их можно выполнять. Таким образом для выполнения некоторой операции обьект должен явно или неявно преобразован к необходимому типу. Это увеличивает уверенность программиста в том, что операция даст ожидаемый результат, в противном случае она попросту не выполнится.

Содержание

Основы

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

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

  • Надёжность. Типы данных защищают от трёх видов ошибок:
  1. Некорректное присваивание. Пусть переменная объявлена как имеющая числовой тип. Тогда попытка присвоить ей символьное или какое-либо другое значение приведет к ошибке еще на этапе компиляции и позволит избежать многих трудностей, поскольку такого рода ошибки трудно отследить обычными средствами. Предварительное объявление используемых переменных сейчас обязательно практически во всех языках.
  2. Некорректная операция. Позволяет избежать попыток применения выражений вида «Hello world» + 1. Поскольку как уже говорилось все переменные в памяти хранятся как наборы битов, то при отсутствии типов подобная операция была выполнима (и могла дать результат вроде «Hello worle»!). С использованием типов (см. далее «Контроль типов») такие ошибки отсекаются опять же на этапе компиляции.
  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. Ссылки (тип данных).

Динамическая идентификация типа данных

Динамическое определение типа (англ. Run-time Type Information или RTTI) позволяет узнать тип объекта во время выполнении программы (run time).

Для этого применяется оператор dynamic_cast в C++.

«Целевой тип операции должен быть типом указателя, ссылки или void*.

  • Если целевой тип — тип указателя, то аргументом должен быть указатель на объект класса;
  • если целевой тип — ссылка, то аргумент должен также быть соответствующей ссылкой.
  • Если целевым типом является void*, то аргумент также должен быть указателем, а результатом операции будет указатель, с помощью которого можно обратиться к любому элементу „самого производного“ класса иерархии, который сам не может быть базовым ни для какого другого класса.»

См. также

 
Начальная страница  » 
А Б В Г Д Е Ж З И Й К Л М Н О П Р С Т У Ф Х Ц Ч Ш Щ Ы Э Ю Я
A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
0 1 2 3 4 5 6 7 8 9 Home