Определить перечисляемый
тип — это значит перечислить все значения, которые может принимать переменная,
относящаяся к данному типу.
В общем виде объявление
перечисляемого типа выглядит так:
Тип =( Значение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;
Релятивисты и позитивисты утверждают, что "мысленный эксперимент" весьма полезный интрумент для проверки теорий (также возникающих в нашем уме) на непротиворечивость. В этом они обманывают людей, так как любая проверка может осуществляться только независимым от объекта проверки источником. Сам заявитель гипотезы не может быть проверкой своего же заявления, так как причина самого этого заявления есть отсутствие видимых для заявителя противоречий в заявлении.
Это мы видим на примере СТО и ОТО, превратившихся в своеобразный вид религии, управляющей наукой и общественным мнением. Никакое количество фактов, противоречащих им, не может преодолеть формулу Эйнштейна: "Если факт не соответствует теории - измените факт" (В другом варианте " - Факт не соответствует теории? - Тем хуже для факта").
Максимально, на что может претендовать "мысленный эксперимент" - это только на внутреннюю непротиворечивость гипотезы в рамках собственной, часто отнюдь не истинной логики заявителя. Соответсвие практике это не проверяет. Настоящая проверка может состояться только в действительном физическом эксперименте.
Эксперимент на то и эксперимент, что он есть не изощрение мысли, а проверка мысли. Непротиворечивая внутри себя мысль не может сама себя проверить. Это доказано Куртом Гёделем.
Понятие "мысленный эксперимент" придумано специально спекулянтами - релятивистами для шулерской подмены реальной проверки мысли на практике (эксперимента) своим "честным словом". Подробнее читайте в FAQ по эфирной физике.