Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Прогр.на_ЯВУ_уч.пос.DOC
Скачиваний:
24
Добавлен:
01.07.2025
Размер:
2 Мб
Скачать
☆

§3.5. Перечисляемый тип

Часто в программах число используется не в качестве арифметической величины, а как указатель некоторого элемента множества. В Паскале предусмотрена возможность называть элементы множества своими именами, то есть можно определить новый тип путем явного перечисления всех его возможных значений, причем каждое такое значение будет определяться только именем. Считается, что значения перечисляемого типа указаны в порядке возрастания, начиная с нулевого, поэтому над этими элементами можно выполнять операции отношения. Причем наиболее часто используются операции = и .

При описании этого типа используется список, заключенный в круглые скобки, а его значения (константы) являются именами:

(<имя1>[,<имя2>...])

Например:

Type

Color = (Red,Yellow,Green); {Светофор}

Day = (Mon,Tue,Wed,Thu,Fri,Sat,Sun);

Var c:Color;

d:day;

...

If d>Fri Then Writeln ('Выходной день');

Для любого перечисляемого типа Т, определенного записью

T = (w0,w1,...,wn) ,

справедливы свойства:

1. Различимости

wi  wj , если i  j.

2. Упорядоченности

wi < wj , если i < j.

Причем значениями типа Т могут быть только w0, w1, ..., wn. Более того, эти имена должны быть уникальны, то есть не должны повторяться ни в других типах, ни при описании переменных.

§3.6. Диапазоны (интервальный тип)

Часто при описании переменных известно, что они будут принимать ограниченное множество значений, например часы, дни недели и др. Для облегчения восприятия программы и введения дополнительного контроля используются диапазоны, иначе интервальный тип.

Диапазоны можно задавать для любого простого, но дискретного типа. Дискретными или счетными типами являются такие, для которых можно указать два соседних значения, между которыми нельзя добавить еще одно. Например, для целого 1 и 2, для перечисляемого Sat и Sun и т. д. Единственным исключением здесь являются вещественные числа. В дальнейшем будет показано, что вещественные числа не могут использоваться в некоторых операторах и конструкциях языка Паскаль, в том числе и в диапазонах.

Для указания диапазона используются 2 точки:

Type C = '0'..'9';

Var Min,Sec:0..59;

Hour:0..23;

Так как диапазоны есть подмножества других типов, то для них определены и соответствующие операции.

Дополнительные типы в Delphi

В Delphi определен новый тип данных – денежный, описываемый словом Currency. Он аналогичен вещественному формату Comp, не имеющему дробной части. Здесь же добавлено 4 значащих цифры после запятой, то есть точность вычислений составляет 0.0001.

К логическому типу добавлено еще 3 разновидности для совместимости со стандартами Windows: ByteBool, WordBool, LongBool, с занимаемой памятью соответственно 1, 2 и 4 байта.

К символьному типу добавлены типы AnsiChar и WideChar. Первый полностью аналогичен Char, хотя в Windows и используется кодировка ANSI вместо АSСII. Второй же используется для хранения символов в кодировке UNICODE с размером таблицы 65 536 символов, поэтому под каждый символ выделяется 2 байта.

Контрольные вопросы

  1. Что такое тип переменной?

  2. Что означает выражение «типизированный язык программирования»?

  3. Перечислите служебные слова, которыми в Турбо-Паскале обозначаются целые типы со знаком, каков их размер?

  4. Каков диапазон короткого целого со знаком?

  5. Каков приблизительно диапазон стандартного целого со знаком?

  6. Каков приблизительно диапазон длинного целого со знаком?

  7. Перечислите служебные слова, которыми в Турбо-Паскале обозначаются целые типы без знака, каков их размер?

  8. Каков диапазон беззнакового однобайтного целого?

  9. Каков приблизительно диапазон беззнакового двухбайтного целого?

  10. Что такое целая константа?

  11. Какие системы счисления используются и как обозначаются в Турбо-Паскале?

  12. Какие операции используются над целыми значениями?

  13. Какие две операции предназначены только для целого типа данных?

  14. Кроме арифметических, какие еще группы операций можно использовать над целыми данными?

  15. Какова точность представления (в количестве цифр мантиссы) и занимаемый объем памяти для вещественных чисел типа Real?

  16. Какова точность представления (в количестве цифр мантиссы) и занимаемый объем памяти для вещественных чисел типа Single?

  17. Какова точность представления (в количестве цифр мантиссы) и занимаемый объем памяти для вещественных чисел типа Double?

  18. Какова точность представления (в количестве цифр мантиссы) и занимаемый объем памяти для вещественных чисел типа Extended?

  19. Какова точность представления (в количестве цифр мантиссы) и занимаемый объем памяти для вещественных чисел типа Comp?

  20. Как представляются константы с фиксированной точкой?

  21. Как представляются константы с плавающей точкой?

  22. Запишите три формы представления числа «двойка».

  23. Какие операции используются над вещественными значениями?

  24. Какое служебное слово используется для описания логических переменных?

  25. Как записываются логические константы?

  26. Перечислите четыре логические операции, используемые в Турбо-Паскале.

  27. Как выполняются логические операции над целыми данными?

  28. Перечислите операции отношения (сравнения).

  29. Какой тип результата дают операции отношения?

  30. Какое служебное слово используется для описания литерных (символьных) переменных?

  31. Какая кодировочная таблица используется в Турбо-Паскале?

  32. Как обычно записываются символьные константы, отображаемые на экране монитора?

  33. Как записываются любые символьные константы?

  34. Как записываются управляющие коды в виде литерных констант?

  35. Какие операции можно выполнять над литерными данными?

  36. В каких целях используется перечисляемый тип?

  37. Как описываются значения перечисляемого типа?

  38. Что такое свойство различимости для перечисляемого типа?

  39. Что такое свойство упорядоченности для перечисляемого типа?

  40. В каких целях используются диапазоны?

  41. Что такое дискретный тип?

  42. Какой простой тип нельзя использовать как базовый в диапазонах?

  43. Какие операции допускается использовать для интервальных типов?