Читайте также: |
|
Глава 8
Типы данных, определяемые программистом
До этого момента в программах использовались стандартные типы данных: integer, Real, Char, string и Boolean. Вместе с тем, язык Delphi позволяет программисту определить свой собственный тип данных, а затем данные этого типа использовать в программе.
Объявляемый программистом новый тип данных базируется на стандартных типах или на типах, созданных программистом ранее. Тип, определенный программистом, может быть отнесен к:
Перечисляемый тип
Определить перечисляемый тип — это значит перечислить все значения, которые может принимать переменная, относящаяся к данному типу.
В общем виде объявление перечисляемого типа выглядит так:
Тип =(Значение1, Значение2,... Значение i)
где:
Примеры: TDayOfWeek = (MON,TUE,WED,THU,FRI,SAT,SUN);
TColor = (Red,Yellow,Green);
Примечание
Согласно принятому в Delphi соглашению, имена типов должны начинаться с буквы Т (от слова Туре — тип).
После объявления типа можно объявить переменную, относящуюся к этому типу, например:
Type
TDayOfWeek = (MON,TUE,WED,THU, FRI,SAT,SUN);
Var
ThisDay, LastDay: TDayOfWeek;
Помимо указания значений, которые может принимать переменная, описание типа задает, как значения соотносятся друг с другом. Считается, что самый левый элемент списка значений является минимальным, а самый правый — максимальным. Для элементов типа DayOfWeek справедливо:
MON < TUE < WED < THU < FRI < SAT < SUN
Свойство упорядоченности элементов перечисляемого типа позволяет использовать переменные перечисляемого типа в управляющих инструкциях, например, так:
if (Day = SAT) OR (Day = SUN) then
Begin
{ действия, если день — суббота или воскресенье }
end;
Приведенную инструкцию можно записать и так:
IfDay > FRIthen begin
{ действия, если день — суббота или воскресенье }
end;
Очевидно, что программа, написанная с использованием объявленного программистом типа, более наглядна, легче читается и, следовательно, уменьшается вероятность появления ошибки.
Во время компиляции Delphi проверяет соответствие типа переменной типу выражения, которое присваивается переменной. Если тип выражения не может быть приведен к типу переменной, то выводится сообщение об ошибке.
Например, в фрагменте программы
Type
TDayOfWeek = (MON, TUE, WED, THU, FRI, SAT, SUN);
ThisDay: TDayOfWeek;
Begin
ThisDay:=1;
if ThisDay = 6 then begin { блок инструкций } end;
инструкция ThisDay:= 1; ошибочна, т. к. переменная ThisDay принадлежит к определен-ному программистом перечисляемому типу TDayOfWeek, а константа, значение которой ей присваивается, принадлежит к целому типу (integer). В условии инструкции if тоже ошибка.
Можно утверждать, что объявление перечисляемого типа — это сокращенная форма записи объявления именованных констант. Например, приведенное выше объявление типа TDayOfWeek равносильно следующему объявлению:
Const
MON=0; TUE=1; WED=2; THU=3; FRI=4; SAT=5; SUN=6;
Интервальный тип
Интервальный тип является отрезком или частью другого типа, называемого базовым. В качестве базового обычно используют целый тип данных (integer).
При объявлении интервального типа указываются нижняя и верхняя границы интервала, т. е. наименьшее и наибольшее значение, которое может принимать переменная объявляемого типа. В общем виде объявление интервального типа выглядит так:
Тип = НижняяГраница.. ВерхняяГраница;
где:
Примеры:
TIndex = 0..100; TRusChar = 'А'..'я';
В объявлении интервального типа можно использовать именованные константы. В следующем примере в объявлении интервального типа TIndex использована именованная константа HBOUND:
Const
HBOUND=100;
Type
TIndex=l..HBOUND;
Интервальный тип удобно использовать при объявлении массивов, например, так:
Type
TIndex =1..100;
Var
tab1: array[TIndex] of integer; i:TIndex;
Помимо целого типа в качестве базового можно использовать перечисляемый тип, созданный программистом. В следующем фрагменте на основе типа TMonth объявлен интервальный тип TSammer:
Type
TMonth = (Jan, Feb, Mar, Apr, May, Jun,
Jul, Aug, Sep, Oct, Nov, Dec);
TSammer = Jun.. Aug;
Запись
В практике программирования довольно часто приходится иметь дело с данными, которые естественным образом состоят из других данных. Например, сведения об учащемся содержат фамилию, имя, отчество, число, месяц и год рождения, домашний адрес и другие данные. Для представления подобной информации в языке Delphi используется структура, которая носит название запись (record).
С одной стороны, запись можно рассматривать как единую структуру, а с другой — как набор отдельных элементов, компонентов. Характерной особенностью записи является то, что составляющие ее компоненты могут быть разного типа. Другая особенность записи состоит в том, что каждый компонент записи имеет имя.
Итак, запись — это структура данных, состоящая из отдельных именованных компонентов разного типа, называемых полями.
Дата добавления: 2015-02-16; просмотров: 88 | Поможем написать вашу работу | Нарушение авторских прав |