Понедельник, 29 Апреля 2024, 07.02.47
Приветствую Вас Гость

Всё о Паскале

Меню сайта
реклама
Наш опрос
Каким языком программирования вы владеете ?
Всего ответов: 571
Целый тип Логический Символьный Тип-диапазон Перечисляемый Массивы Записи

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

Перечисленный тип задается перечислением тех значений, которые он может получать. Каждое значение именуется некоторым идентификатором и располагается в списке, обрамленном круглыми скобками, например:
type
colors = (red, white, blue);

Применение перечисленных типов делает программы нагляднее. Если, например, в программе используются данные, связанные с месяцами года, то такой фрагмент программы:
  type
      типМесяц=(янв,фев,мар,апр,май,июн,июл,авг,сен,окт,ноя,дек);
  var
      месяц : ТипМесяц;
  begin
      if месяц = авг then WriteLn('Хорошо бы поехать к морю!');
  end.
был бы, согласитесь, очень наглядным. Увы! В Турбо Паскале нельзя использовать кириллицу в идентификаторах, поэтому мы вынуждены писать так:
  type
      TypeMonth=(jan,feb,inar,may,jun,jul,aug,sep,oct,nov,dec);
  var
      month: TypeMonth;
  begin
      if month = aug then WriteLn('Хорошо бы поехать к морю!');
  end.

Соответствие между значениями перечисленного типа и порядковыми номерами этих значений устанавливается порядком перечисления: первое значение в списке получает порядковый номер 0, второе — 1 и т. д. Максимальная мощность перечисленного типа составляет 65 536 значений, поэтому фактически перечисленный тип задает некоторое подмножество целого типа WORD и может рассматриваться как компактное объявление сразу группы целочисленных констант со значениями О, 1 и т. д.

Благодаря перечисленным типам повышается надежность программ за счет возможности контроля тех значений, которые получают соответствующие переменные. Пусть, например, заданы такие перечисленные типы:
  type
      colors = (black, red, white);
      ordenal = (one, two, three);
      days = (monday, tuesday, Wednesday);
С точки зрения мощности и внутреннего представления все три типа эквива- лентны:
      ord(black)=0, ..., ord(white)=2,
      ord(one)=0, ..., ord(three)=2,
      ord(monday)=0, ..., ord(Wednesday)=2.

Однако, если определены переменные
  var
      col : colors;
      num : ordenal;
      day : days ;
то допустимы операторы
      col := black;
      num := succ(two);
      day := pred(tuesday);
но недопустимы
      col := one;
      day := black;

Как уже упоминалось, между значениями перечисленного типа и множеством целых чисел существует однозначное соответствие, задаваемое функци ей ORD ( X ) . В Турбо Паскале допускается и обратное преобразование: любое выражение типа WORD можно преобразовать в значение перечисленного типа, если только значение целочисленного выражения не превышает мощности перечисленного типа. Такое преобразование достигается применением автоматически объявляемой функции с именем перечисленного типа. Например, для рассмотренного выше объявления типов эквивалентны следующие присваивания:
      col := one;
      col := colors(0);

Разумеется, присваивание
      col := 0;
будет недопустимым.

Переменные любого перечисленного типа можно объявлять без предварительного описания этого типа, например:
  var
      col: (black, white, green);

Форма входа
Календарь новостей
«  Апрель 2024  »
ПнВтСрЧтПтСбВс
1234567
891011121314
15161718192021
22232425262728
2930
Поиск
Друзья сайта
Статистика

Онлайн всего: 1
Гостей: 1
Пользователей: 0