Типы и объекты данных
Тип данных задает набор возможных значений и набор операций, допустимых над этими значениями. Все типы данных Ada 95 разделяют на две большие группы: элементарные и составные. Данные элементарного типа имеют значения, которые логически неразделимы. Данные составного типа имеют значения, которые составлены из значений компонентов.
В свою очередь, элементарные типы делят на скалярные типы (дискретные и вещественные) и ссылочные типы (чьи значения являются указателями на данные и подпрограммы). Дискретные типы включают целые типы (знаковые и беззнаковые) и перечисляемые типы. Вещественные типы включают типы с плавающей точкой и типы с фиксированной точкой (двоичные и десятичные).
Составные типы данных подразделяются на комбинированные типы (записи), расширения типа запись, регулярные типы (массивы), задачные типы, защищенные типы. Задачные и защищенные типы используются при программировании параллельных процессов.
Описание типа приводится в декларативной части программы. Общая форма объявления типа имеет вид
type <ИмяТипа> is <ОпределениеТипа>;
где в угловых скобках указывается название, которое в реальной программе заменяется конкретной конструкцией (именем, выражением, оператором).
Приведем примеры объявления типов:
q целый знаковый тип
type Temperature is range -70..70:
q модульный целый тип
type Time_of_Day is mod 86400;
type Day_of_Month is mod 32;
q вещественный тип с плавающей точкой – задает значения, представляемые восемью десятичными цифрами
type Distance is digits 8;
q двоичный вещественный тип с фиксированной точкой – задает значения с погрешностью 0,001 в диапазоне от 0.00 до 200.00
type Price is delta 0.001 range 0.00 ..200.00;
q десятичный вещественный тип с фиксированной точкой – задает значения, представляемые восемью десятичными цифрами с погрешностью 0,1 (то есть значения до 9999999,9)
type Miles is delta 0.1 digits 8;
q перечисляемый тип
type Day is ( mon. tue. wed, thu. fri. sat. sun );
type Colour is ( red. blue, green, black );
q тип записи
type Date_Type is
record
Day : Day_Type;
Month : Month_Day;
Year : Year_Type;
end record;
q тип массива
type Week is array ( 1 .. 7 ) of Day:
Некоторые типы в языке предопределены. Предопределенные типы не нужно объявлять в декларативной части программы. К ним относятся:
q целый тип Integer с диапазоном значений -32 767...+32 768;
q вещественный тип с плавающей точкой Float;
q перечисляемые типы Boolean (логический), Character (символьный);
q регулярный тип String (задает массивы из элементов символьного типа).
После того как тип объявлен, можно объявлять экземпляры этого типа. Экземпляры типов называются объектами. Объекты содержат значения. Значения объектов-переменных могут изменяться, значения объектов-констант постоянны.
Общая форма объявления объекта имеет вид
<ИмяОбъекта> : [constant] <ИмяТипа> [:=НачальноеЗначение];
где в квадратных скобках указаны необязательные элементы, а НачальноеЗначение – некоторое выражение соответствующего типа.
Примеры объявлений объектов-переменных:
q символьный объект с начальным значением
Symbol : Character :– 'A';
ПРИМЕЧАНИЕ
Значение символьного объекта записывается в апострофах.
q строковый объект с начальным значением
Name : String ( 1 .. 9 ) := "Aleksandr";
ПРИМЕЧАНИЕ
Значение строкового объекта записывается в кавычках.
q объект перечисляемого типа
Car_Colour : Colour := red;
q объект модульного типа
Today : Day_of_Month := 31;
ПРИМЕЧАНИЕ
Значение этого объекта может изменяться в диапазоне от 0 до 31. К модульному типу применяется модульная арифметика, поэтому после оператора Today := Today + 1 объект Today получит значение 0.
Примеры объявлений объектов-констант:
Time : constant Time_of_Day := 60;
Best_Colour : constant Colour := blue;
Отметим, что если константа является именованным числом (целого и вещественного типа), то имя типа можно не указывать:
Minute : constant := 60;
Hour : constant := 60 * Minute;
Дата добавления: 2019-02-07; просмотров: 263;