Студопедия

Главная страница Случайная страница

КАТЕГОРИИ:

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника






Перечисления (enum)






Лабораторная работа №10. Типы данных, определяемые пользователем. Структуры и объединения

Цель и порядок работы

Цель работы – ознакомиться с типами данных, определяемыми пользователем и их применением в процессе программирования.

 

Порядок выполнения работы:

- ознакомиться с описанием лабораторной работы;

- получить задание у преподавателя, согласно своему варианту;

- написать программу и отладить ее на ЭВМ;

- оформить отчет.

Краткая теория

В реальных задачах, обрабатываемая информация может иметь достаточно сложную структуру. Язык программирования C++ позволяет определять свои типы данных и правила работы с ними. Рассмотрим эти возможности подробней.

Определение типов (typedef)

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

Директива typedef позволяет задать синоним для встроенного или пользовательского типа данных. Имена, определенные с помощью директивы typedef, можно использовать точно так же, как обычные спецификаторы типов.

Синтаксис директивы typedef имеет два варианта:

 

typedef тип новое_имя;

 

typedef тип новое_имя [ размерность ];

 

Второй вариант используется при определении нового имени типа для массива, а квадратные скобки являются элементом синтаксиса.

Например:

 

typedef unsigned int UINT; //UINT - беззнаковое целое

typedef char msg[100]; //msg - массив из ста символов типа char

 

Объявленные таким образом имена типов используются так же, как и имена стандартных типов:

 

UINT i, j; //две переменных типа unsigned int

UINT А[10]; //массив переменных типа unsigned int

msg m; //массив (строка) из ста символов типа char

msg strs[10]; //массив из 10 строк по сто символов каждая

 

Кроме задания типам более коротких псевдонимов typedef используется для облегчения переносимости программ. При изменении машинно-зависимых типов, при переносе необходимо будет изменить только оператор определения типа без изменения всей остальной программы.

Перечисления (enum)

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

Формат объявления перечисляемого типа данных:

 

enum [ имя типа ] { список_констант };

 

Здесь квадратные скобки указывают на необязательность использования.

 

Имя типа задается в том случае, если в программе требуется определять переменные этого типа. Компилятор обеспечивает, чтобы эти переменные принимали значения только из списка констант. Константы должны быть целочисленными и могут инициализироваться обычным образом. При отсутствии инициализатора первая константа будет рана нулю, а каждой следующей присваивается на единицу большее значение, чем предыдущей.

Например:

 

enum Err {ERR_READ, ERR_WRITE, ERR_CONVERT};

 

Err error;

 

switch (error)

{

case ERR_READ: /* операторы */ break;

case ERR_WRITE: /* операторы */ break;

case ERR_CONVERT: /* операторы */ break;

}

 

enum {two = 2, three, four, ten = 10, eleven, fifty = ten + 40};

 

Константам ERR_READ, ERR_WRITE, ERR_CONVERT присваивается значения 0, 1 и 2 соответственно.

Константам three и four присваиваются значения 3 и 4, константе eleven – 11. Имена перечисляемых констант должны быть уникальными, а значения могут совпадать. Преимущество применения перечисления перед описанием именованных констант и директивой typedef состоит в том, что связанные константы нагляднее; кроме того, компилятор при инициализации констант может выполнять проверку типов.

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

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


Поделиться с друзьями:

mylektsii.su - Мои Лекции - 2015-2024 год. (0.007 сек.)Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав Пожаловаться на материал