Определить перечисляемый
тип — это значит перечислить все значения, которые может принимать переменная,
относящаяся к данному типу.
В общем виде объявление
перечисляемого типа выглядит так:
Тип =( Значение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;
Приведенную инструкцию
можно записать и так:
if
Day > FRI then begin
{ действия, если день — суббота или воскресенье }
end;
Очевидно, что программа,
написанная с использованием объявленного программистом типа, более наглядна,
легче читается и, следовательно, уменьшается вероятность появления ошибки.
Во время компиляции
Delphi проверяет соответствие типа переменной типу выражения, которое присваивается
переменной. Если тип выражения не может быть приведен к типу переменной, то
выводится сообщение об ошибке.
Например, в фрагменте
программы
type
TDayOfWeek
= (MON, TUE, WED, THU, FRI, SAT, SUN) ;
ThisDay:
TDayOfWeek; begin
ThisDay:=1;
if
ThisDay = 6 then begin
{ блок инструкций } end;
инструкция ThisDay:=
i; ошибочна, т. к. переменная ThisDay принадлежит к определенному программистом
перечисляемому типу TDayOfWeek, а константа, значение которой ей присваивается,
принадлежит к целому типу (integer). В условии инструкции if тоже ошибка.
Можно утверждать, что
объявление перечисляемого типа — это сокращенная форма записи объявления именованных
констант. Например, приведенное выше объявление типа TDayOfWeek равносильно
следующему объявлению:
const
MON=0; TUE=1; WED=2; THU=3; FRI=4; SAT=5; SUN=6;
1. Электромагнитная волна (в религиозной терминологии релятивизма - "свет") имеет строго постоянную скорость 300 тыс.км/с, абсурдно не отсчитываемую ни от чего. Реально ЭМ-волны имеют разную скорость в веществе (например, ~200 тыс км/с в стекле и ~3 млн. км/с в поверхностных слоях металлов, разную скорость в эфире (см. статью "Температура эфира и красные смещения"), разную скорость для разных частот (см. статью "О скорости ЭМ-волн")
2. В релятивизме "свет" есть мифическое явление само по себе, а не физическая волна, являющаяся волнением определенной физической среды. Релятивистский "свет" - это волнение ничего в ничем. У него нет среды-носителя колебаний.
3. В релятивизме возможны манипуляции со временем (замедление), поэтому там нарушаются основополагающие для любой науки принцип причинности и принцип строгой логичности. В релятивизме при скорости света время останавливается (поэтому в нем абсурдно говорить о частоте фотона). В релятивизме возможны такие насилия над разумом, как утверждение о взаимном превышении возраста близнецов, движущихся с субсветовой скоростью, и прочие издевательства над логикой, присущие любой религии.
4. В гравитационном релятивизме (ОТО) вопреки наблюдаемым фактам утверждается об угловом отклонении ЭМ-волн в пустом пространстве под действием гравитации. Однако астрономам известно, что свет от затменных двойных звезд не подвержен такому отклонению, а те "подтверждающие теорию Эйнштейна факты", которые якобы наблюдались А. Эддингтоном в 1919 году в отношении Солнца, являются фальсификацией. Подробнее читайте в FAQ по эфирной физике.