поддержка
проекта:
разместите на своей странице нашу кнопку!И мы
разместим на нашей странице Вашу кнопку или ссылку. Заявку прислать на
e-mail
код нашей кнопки:
Тип данных
Тип данных - понятие, используемое в языках программирования для
характеристики данных (переменных, массивов и др.) в программах.
Указание конкретного типа определяет множество значений, которые могут
принимать данные этого типа, и набор операций, которые можно к ним
применять. Основная единица данных во всех языках - это переменная.
Каждая переменная, используемая в программе, должна иметь тип. Способы
указания типа определяются правилами (синтаксисом) языка. Обычно это
делается в начальных разделах программ (описаниях), в которых
перечисляются переменные, встречающиеся в программе, и перечисляются их
типы.
Наиболее употребительные типы обозначаются стандартными английскими
словами: integer (целый), real (действительный), Boolean (булевский, или
логический), char (символьный, или литерный).
Переменные типа integer принимают только целочисленные значения.
Максимальное возможное значение зависит от числа двоичных разрядов, ис-
пользуемых в данной ЭВМ для представления переменной этого типа. Над
переменными типа integer производят обычные арифметические операции
(сложение, вычитание, умножение, деление), результатом которых также
будут переменные типа integer. В частности, результатом деления является
целая часть частного.
Переменные типа real принимают действительные (вещественные) значения. В
каждой ЭВМ можно представить только конечное множество действительных
чисел, поэтому арифметические операции над переменными типа real
производятся по правилам действий над приближенными числами. Такая же
ситуация имеет место при составлении обычных таблиц тригонометрических
функций и логарифмов: все величины в этих таблицах имеют фиксированное
число знаков после запятой, и, следовательно, множество этих величин
конечно. С помощью этого конечного множества представляются бесконечные
множества аргументов функций и их значений. Такое представление
неизбежно будет приближенным, причем точность приближения зависит от
числа знаков после запятой, что в ЭВМ соответствует числу разрядов,
используемых для записи числа. Таким образом, результат арифметической
операции над переменными зависит не только от значений переменных, но и
от их типов: например, для х = 12, у = 5 результат деления х на у равен
2, если х и у имеют тип integer, и равен 2,4, если хну имеют тип real.
Точнее можно сказать, что деление целых чисел и деление действительных
чисел - это две разные операции. Переменные типа Boolean принимают два
логических значения, которые в большинстве языков обозначаются true
(истинно) и false (ложно). Над переменными этого типа можно производить
логические операции (см. Алгебра логики).
Значениями переменных типа char являются произвольные символы (буквы,
цифры, знаки операций, запятые, скобки и т.д.), используемые в данном
языке программирования. Значения этого типа считаются упорядоченными.
Способ упорядочения зависит от машинной реализации языка, однако всегда
предполагается, что цифры упорядочены по возрастанию, а буквы - по
алфавиту. Арифметические операции над переменными этого типа (даже если
их значениями являются цифры) не допускаются.
Тип данных называется стандартным, если вся информация о нем "встроена"
в язык и ее не нужно описывать в программе. Типы integer, real, Boolean
стандартны практически во всех универсальных языках. Это означает, что
если, например, для переменной х указан тип integer, то описывать
множество ее значений и допустимых операций не нужно. Транслятор все
необходимое сделает сам.
Тип данных называется простым, если он характеризует элементарные
данные, и сложным (производным), если данное этого типа состоит из
нескольких данных, которые, в свою очередь, могут быть простыми или
сложными. Среди сложных типов данных наиболее распространен массив (array),
который состоит из данных одного простого типа: массив целых чисел,
массив символов и т. д. Массив может быть одномерным
(последовательностью), двумерным (таблицей или матрицей) и т. д. Данное
сложного типа обладает структурой, которую указывают при его описании.
Например, в языке ПАСКАЛЬ описание/1: array [5... 19] of char означает,
что А - последовательность из 15 символов, имеющих номера от 5 до 19, т.
е. структура, состоящая из 15 компонентов с номерами от 5 до 19, каждый
элемент которой является простым данным типа char. Номер элемента
массива называется его индексом. Помимо массивов существуют и другие
сложные типы: множества, файлы, записи и др. Со сложным данным можно
оперировать как с единым целым: если А и В - одинаково описанные
массивы, то операция присваивания Л: = В означает, что в массив А
переписываются в том же порядке значения массива В. Однако можно
обращаться и к отдельным элементам массива. Например, если х -
переменная типа char, то в результате операции х: = В [12] в переменную
jc будет записан символ, стоящий в массиве В под номером 12.
Как видно из сказанного, описание типов может быть различным. Тип,
стандартный для данного языка, достаточно назвать. Для сложного типа
всегда нужно описывать его структуру (указать тип компонент, способ их
нумерации и т. д.). Но и простые типы - не всегда стандартные. Во многих
современных языках пользователь может ввести новый простой тип, указав
его название и множество допустимых значений. Например, в программе на
языке ПАСКАЛЬ может встретиться описание type - сезон = (весна, лето,
осень, зима). Это описание вводит новый простой тип "сезон"; переменные
этого типа могут принимать одно из указанных четырех значений.
Зачем нужны типы данных? Прежде всего, они указывают, как кодировать
данные в ЭВМ при их вводе и трансляции программ и как декодировать
данные при их выводе и исполнении программ. Все данные в ЭВМ
представляются в конечном счете последовательностями нулей и единиц; в
то же время одни последовательности обозначают числа, другие - буквы и
т. д. Кроме того, разные типы данных требуют для своего машинного
представления разного числа двоичных разрядов: логическому значению
достаточно одного разряда, символы обычно размещаются в одном байте (8
разрядов), целые числа требуют 16 - 32 разряда и т. д. Описание типа в
программе, с одной стороны, указывает транслятору, сколько места в
памяти отвести для одной единицы данных этого типа; с другой стороны,
"глядя" на полученный код (машинное представление), ЭВМ "понимает", что
означает данная последовательность нулей и единиц (число, букву или
что-то еще) и как с ней можно работать. Конкретная система кодирования
зависит не только от языка, но и от транслятора, а также от типа ЭВМ и
структуры ее памяти (размера ячейки, системы адресации и т.д.).
Благодаря этому кодированию становится возможным контроль над многими
ошибками в программе. Зная тип переменной, транслятор может обнаружить,
что переменной присваивается недопустимое значение, что к ней
применяется неправильная операция (например, требуется сложить буквы), и
выдать программисту сообщение об ошибке.