Данные — поддающееся многократной интерпретации представление информации в формализованном виде, пригодном для передачи, связи, или обработки (ISO/IEC 2382-1:1993) [1] .

Для долговременного хранения данных обычно используются базы данных. Данные в памяти могут быть организованы в различные виды структур данных, таких как массивы, связанные списки или объекты. Структуры данных могут хранить данные различных типов, включая числа, строки и другие структуры данных. Ввод и вывод данных в компьютеры производится через периферийные устройства.

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

В языках высокого уровня данные воплощаются в виде переменных. Данные с точки зрения процесса (выполняемой программы) — содержимое части адресного пространства.

Содержание

Организация данных [ править | править код ]

Традиционно применяют два способа организации данных: текстовые данные (в файловой системе: текстовый файл, в программировании: строковый тип данных) — последовательность символов алфавита, представленная в виде кодировки.

Двоичные данные — последовательность байтов. «Двоичная» организация не является способом организации данных как таковым, а лишь термином, объединяющим форматы (формы организации), отличные от текста. Могут включать в себя разнообразные элементы, такие как машинный (или иной исполняемый) код, числовые данные, условные коды, битовые карты, местоположение других данных (смещения, а также указатели в оперативной памяти), фрагменты текста (см. выше), сжатые и случайные данные.

Типы и иерархия данных в программировании [ править | править код ]

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

Передача и хранение данных [ править | править код ]

Хотя с логической точки зрения данные для вычислительных систем хранятся в виде битов 0 и 1, однако на физических носителях эти биты могут иметь разную физическую природу.

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

Контроль за доступом к данным в современных компьютерах осуществляется аппаратно.

В соответствии с принципом фон Неймана, одна и та же область памяти может выступать как в качестве данных, так и в качестве исполнимого кода.

Типы данных

Традиционно выделяют два типа данных — двоичные (бинарные) и текстовые.

Двоичные данные обрабатываются только специализированным программным обеспечением, знающим их структуру, все остальные программы передают данные без изменений.

Текстовые данные воспринимаются передающими системами как текст, записанный на каком-либо языке. Для них может осуществляться перекодировка (из кодировки отправляющей системы в кодировку принимающей), заменяться символы переноса строки, изменяться максимальная длина строки, изменяться количество пробелов в тексте.

Передача текстовых данных как бинарных приводит к необходимости изменять кодировку в прикладном программном обеспечении (это умеет большинство прикладного ПО, отображающего текст, получаемый из разных источников), передача бинарных данных как текстовых может привести к их необратимому повреждению.

Данные в ООП

Могут обрабатываться функциями объекта, которому принадлежат сами, либо функциями других объектов, имеющими для этого возможность.

Данные в языках разметки

Имеют различное отображение в зависимости от выбранного способа представления.

Данные в XML

В теории множеств

В отличие от операций над элементами множества, представляют собой множество (название и элементы множества)

В лингвистике

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

Метаданные

Множество данных может иметь надмножество, называемое метаданными.

Примечания

См. также

Ссылки

Инженерия знаний

ИнформатикаОбщие понятияДанные · Метаданные · Знания · Метазнание · Представление знаний · База знаний · ОнтологияЖёсткие моделиПродукции · Семантическая сеть · Фреймы · Логическая модельМягкие методыНейронная сеть · Генетический алгоритм · Нечёткая логика · Гибридная интеллектуальная система

Wikimedia Foundation . 2010 .

Смотреть что такое "Данные в программировании" в других словарях:

Данные (вычислительная техника) — В вычислительной технике данные обычно отличают от программ. Программа является набором инструкций, которые детализируют вычисление или задачу, которая производится компьютером. Данными же традиционно называется всё, что не выступает в роли… … Википедия

Данные — (калька от англ. data[источник не указан 101 день]) представление фактов и идей в формализованном виде, пригодном для передачи и обработки в некотором информационном процессе. Изначально данные величины, то… … Википедия

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

Парадигма — (Paradigm) Определение парадигмы, история возникновения парадигмы Информация об определении парадигмы, история возникновения парадигмы Содержание Содержание История возникновения Частные случаи (лингвистика) Управленческая парадигма Парадигма… … Энциклопедия инвестора

Функциональное программирование — Парадигмы программирования Агентно ориентированная Компонентно ориентированная Конкатенативная Декларативная (контрастирует с Императивной) Ограничениями Функциональная Потоком данных Таблично ориентированная (электронные таблицы) Реактивная … Википедия

Model-View-Controller — Шаблон проектирования Model View Controller Кон … Википедия

Антипаттерн — Возможно, эта статья содержит оригинальное исследование. Добавьте ссылки на источники, в противном случае она может быть выставлена на удаление. Дополнительные сведения могут быть на странице обсуждения. (25 мая 2011) … Википедия

Объектно-ориентированное программирование — Эта статья во многом или полностью опирается на неавторитетные источники. Информация из таких источников не соответствует требованию проверяемости представленной информации, и такие ссылки не показывают значимость темы статьи. Статью можно… … Википедия

Битовые операции — Не следует путать с булевой функцией. Битовая операция в программировании некоторые операции над цепочками битов. В программировании, как правило, рассматриваются лишь некоторые виды этих операций: логические побитовые операции и… … Википедия

Рекурсия — У этого термина существуют и другие значения, см. Рекурсия (значения). Визуальная форма рекурсии (эффект Дросте) … Википедия

Содержание

Дополнительно

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

Классификация типов данных

Изначально, типы данных делятся на простые и составные. Простой — это тип данных, объекты (переменные или постоянные) которого не имеют доступной программисту внутренней структуры. Для объектов составного типа данных, в противовес простому, программист может работать с элементами внутренней его структуры.

Числовой тип данных разработан для хранения естественно чисел. Символьный — для хранения одного символа. Логический тип имеет два значения: истина и ложь. Перечислимый тип может хранить только те значения, которые прямо указаны в его описании.

Для простых типов данных определяются границы диапазона и количество байт, занимаемых ими в памяти компьютера.

В большинстве языков программирования, простые типы жестко связаны с их представлением в памяти компьютера. Компьютер хранит данные в виде последовательности битов, каждый из которых может иметь значение 0 и 1. Фрагмент данных в памяти может выглядеть следующим образом

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

Числовые типы данных

Целочисленные типы данных

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

Беззнаковые типы данных, в отличии от соответствующих знаковых, имеют в два раза больший диапазон. Это из-за их машинного представления. В знаковых типах первый бит указывает на знак числа: 1 — отрицательное, 0 — положительное.

Исходя из машинного представления целого числа, в ячейке памяти из n бит может хранится 2 n для беззнаковых, и 2 n-1 для знаковых типов.

Рассмотрим теперь конкретные целочисленные типы в трёх языках.

ТипРазрядность в битахДиапазон чисел
byte80 — 255
sbyte8-128 — 127
short16-32 768 — 32 767
ushort160 — 65 535
int32-2 147 483 648 — 2 147 483 647
uint320 — 4 294 967 295
long64-9 223 372 036 854 775 808 — 9 223 372 036 854 775 807
ulong640 — 18 446 744 073 709 551 615
ТипРазрядность в битахДиапазон чисел
unsigned short int / unsigned short160 — 65 535
short int16-32 768 — 32 767
unsigned long int / unsigned long320 — 4 294 967 295
long int / long32-2 147 483 648 — 2 147 483 647
int (16 разрядов)16-32 768 — 32 767
int (32 разряда)32-2 147 483 648 — 2 147 483 647
unsigned int (16 разрядов)160 — 65 535
unsigned int (32 разряда)320 — 4 294 967 295

У некоторых типов есть приписка "16 разрядов" или "32 разряда". Это означает, что в зависимости от разрядности операционной системы и компилятора данный тип будет находится в соответствующем диапазоне. По-этому, рекомендуется не использовать int, unsigned int, а использовать их аналоги, но уже жестко определенные, short, long, unsigned short, unsigned long.

ТипРазрядность в битахДиапазон чисел
byte8-128 — 127
short16-32 768 — 32 767
int32-2 147 483 648 — 2 147 483 647
long64-9 223 372 036 854 775 808 — 9 223 372 036 854 775 807

В Java нет беззнаковых целочисленных типов данных.

Вещественные типы данных

Числа вещественного типа данных задаются в форме чисел с плавающей запятой.

Плавающая запятая — форма представления действительных чисел, в которой число хранится в форме мантиссы и показателя степени. В случае языков программирования, любое число может быть представлено в следующем виде

где N — записываемое число;
M — мантисса;
p (целое) — порядок.
Например: 14441544=1,4441544*10 7 ; 0,0004785=4,785*10 -4 . Компьютер же на экран выведет следующие числа:

Следовательно, в отведенной памяти хранится мантисса и порядок записываемого числа. Рассмотрим на примера типа данных, который хранится в 8 байтах или 64 битах. В данном случае, мантисса составляет 53 бита: 1 для знака числа и 52 для её значения; порядок 10 битов: 1 бит для знака и 10 для значения. Мы можем в данном случае говорить о диапазоне точности, то есть насколько малое и насколько большое число может хранить данный тип данных: 4,94×10 −324 до 1.79×10 308 . Но, поскольку, память компьютера не безразмерна, да и далеко не всегда нужно, храниться несколько первых разрядов мантиссы, которые называются значащими.

Вывод: вещественные типы данных, в отличии от целочисленных, характеризуются диапазоном точности и количеством значащих разрядов.

Рассмотрим конкретные типы данных в наших трёх языках.

ТипРазрядность в битахКоличество значащих цифрДиапазон точности
float327от 1,5*10 -45 до 3,4*10 38
double6415от 4,9*10 -324 до 1,7*10 308
decimal12828от 1,0*10 -28 до 7,9*10 28

Тип decimal создан специально для операций высокой точности, в частности финансовых операций. Он не реализован как примитивный тип, по-этому его частое использование может повлиять на производительность вычислений.

ТипРазрядность в битахКоличество значащих цифрДиапазон точности
float327от 1,5*10 -45 до 3,4*10 38
double6415от 4,9*10 -324 до 1,7*10 308
ТипРазрядность в битахКоличество значащих цифрДиапазон точности
float327от 1,5*10 -45 до 3,4*10 38
double6415от 4,9*10 -324 до 1,7*10 308

Символьный тип данных

Значение переменной этого типа данных представляет собой один символ. В действительности, это есть целое число. В зависимости от кодировки, это число превращается в некий символ. Данные типы данных характеризуются лишь размером выделяемой под них памяти.

ТипРазрядность в битах
char16
ТипРазрядность в битах
char8
wchar_t16
ТипРазрядность в битах
char16

Логический тип данных

Это тип данных, значения которых могут быть: true (правда) или false (ложь). Логическому типу данных соответствуют в С# и C++ тип bool, в Java — boolean.

Перечислимый тип данных

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

Чтобы прочувствовать эту концепцию, приведем пример на языке С++ (в С# и Java аналогично)

Теперь переменные перечислимого типа Forms могут принимать лишь значения, определенные в примере кода. Это очень удобно, ведь мы уже оперируем не с числами, а с некими смысловыми значениями, замечу лишь, что для компьютера эти значения всё-равно являются целыми числами.

Массив

Далее перейдем к сложным типам данных. Первый из них — это массив. Массив — это набор однотипных переменных, расположенных в памяти непосредственно друг за другом, доступ к которым осуществляется по индексу. Индекс массива — целое число, указывающее на конкретный элемент массива.

Каждый массив характеризуется типом данных его элементов, который может быть как простым, так и сложным, то есть любым.

В языках программирования нельзя оперировать всем массивом, работают с конкретным элементом. Чтобы доступиться до него в трёх рассматриваемых нами языках используют оператор "[]".

Структура

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

Структуры реализованы в языке программирования, чтобы собрать некие близки по смыслу вещи воедино.

Например, есть колесо автомобиля. У колеса есть диаметр, толщина, шина. Шина в свою очередь является структурой, у которой есть свои параметры: материал, марка, чем заполнена. Естественно, для каждого параметра можно создать свою переменную или константу, у нас появится большое количество переменных, которые, чтобы понять к чему они относятся, нужно в именах общую часть выделять. Имена будут нести лишнюю смысловую нагрузку. Получается запутанная история. А так мы определяем две структуры, а затем параметры в них.

Класс

Еще одним пользовательским типом данных является класс. Класс умеет всё, что и структура, но кроме параметров, у него есть и методы, и поддерживает большое количество вещей, связанных с объектно-ориентированным программированием.