Слайд 2 ENUM
Иногда, удобной заменой константам является объявление специального ПЕРЕЧИСЛИМОГО ТИПА, ENUM, который
![ENUM Иногда, удобной заменой константам является объявление специального ПЕРЕЧИСЛИМОГО ТИПА, ENUM, который содержит набор перечислимых констант.](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/1164812/slide-1.jpg)
содержит набор перечислимых констант.
Слайд 3 ENUM
enum Months {
JAN = 1, FEB, MAR, APR, MAY, YUN,
![ENUM enum Months { JAN = 1, FEB, MAR, APR, MAY, YUN,](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/1164812/slide-2.jpg)
YUL, AUG, SEP, OCT, NOV, DEC
};
short month;
Months yourMonth;
cin >> month;
yourMonth = (Months)month;
switch (yourMonth) {
case JAN:
cout << "Январь";
break;
case FEB:
cout << "Февраль";
break;
}
cout << endl;
Слайд 4 ENUM
enum Months {
JAN = 1, FEB, MAR, APR, MAY, YUN,
![ENUM enum Months { JAN = 1, FEB, MAR, APR, MAY, YUN,](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/1164812/slide-3.jpg)
YUL, AUG, SEP, OCT, NOV, DEC
};
short month;
cin >> month;
switch ((Months)month) {
case JAN:
cout << "Январь";
break;
case FEB:
cout << "Февраль";
break;
}
cout << endl;
Слайд 5 ENUM
enum Months {
JAN = 1, FEB, MAR, APR, MAY, YUN,
![ENUM enum Months { JAN = 1, FEB, MAR, APR, MAY, YUN,](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/1164812/slide-4.jpg)
YUL, AUG, SEP, OCT, NOV, DEC
};
Months yourMonth;
yourMonth = MAR;
switch (yourMonth) {
case JAN:
cout << "Январь";
break;
case FEB:
cout << "Февраль";
break;
}
cout << endl;
Слайд 6 ENUM
enum Months {
JAN = 1, FEB, MAR, APR, MAY, YUN,
![ENUM enum Months { JAN = 1, FEB, MAR, APR, MAY, YUN,](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/1164812/slide-5.jpg)
YUL, AUG, SEP, OCT, NOV, DEC
};
Months yourMonth;
yourMonth = YUN;
switch (yourMonth) {
case JAN:
cout << "Январь";
break;
case FEB:
cout << "Февраль";
break;
}
cout << endl;
Слайд 7 ENUM
Перечислимый тип вводится ключевым словом enum и задает набор значений, определяемый пользователем.
![ENUM Перечислимый тип вводится ключевым словом enum и задает набор значений, определяемый](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/1164812/slide-6.jpg)
Набор значений заключается в фигурные скобки и является набором целых именованных констант, представленных своими идентификаторами.
Эти константы называются перечислимыми константами.
Слайд 8 ENUM
enum Months {JAN = 1, FEB, MAR, APR, MAY, YUN, YUL,
![ENUM enum Months {JAN = 1, FEB, MAR, APR, MAY, YUN, YUL,](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/1164812/slide-7.jpg)
AUG, SEP, OCT, NOV, DEC};
Это объявление создает определенный пользователем тип Months с константами перечисления, представляющими месяцы года.
Поскольку первое значение приведенного перечисления установлено равным 1, оставшиеся значения увеличиваются на 1 от 1 до 12.
В объявлении перечислимого типа любой константе перечисления можно присвоить целое значение.
Слайд 9 ENUM
Типичная ошибка:
После того, как константа перечисления определена, попытка присвоить ей
![ENUM Типичная ошибка: После того, как константа перечисления определена, попытка присвоить ей](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/1164812/slide-8.jpg)
другое значение является синтаксической ошибкой.
Слайд 10 ENUM
Правила хорошего тона:
Наименование перечислимого типа следует писать прописными буквами, первая
![ENUM Правила хорошего тона: Наименование перечислимого типа следует писать прописными буквами, первая](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/1164812/slide-9.jpg)
буква пишется заглавной (в отличии от переменных), слова пишутся слитно, разделение слов осуществляется верблюжьим стилем.
Идентификаторы константных значений перечислений пишут ЗАГЛАВНЫМИ буквами, слова разделяются нижней чертой _ как имена констант.
Пример: TestEnum {TEST_NAME = 1, SUPER_TEST = 2}
Слайд 11Основные моменты перечислений
Использование перечислений вместо целых констант облегчает чтение программы.
Идентификаторы в enum
![Основные моменты перечислений Использование перечислений вместо целых констант облегчает чтение программы. Идентификаторы](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/1164812/slide-10.jpg)
должны быть уникальными, но отдельные константы перечисления могут иметь одинаковые целые значения.
Константы перечисления могут иметь только целые значения.
Набор идентификаторов перечислимого типа — собственный уникальный тип, отличающийся от других целочисленных типов.
Слайд 12Основные моменты перечислений
Перечислимые константы могут определяться и инициализироваться произвольными целочисленными константами, а также константными
![Основные моменты перечислений Перечислимые константы могут определяться и инициализироваться произвольными целочисленными константами,](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/1164812/slide-11.jpg)
выражениями:
enum Ages {MILTON= 47, IRA, GOGA= 56, PHILIP = GOGA + 7};
Каждое перечисление является отдельным типом. Типом элемента перечисления является само перечисление. Например, в
enum Keyword {ASM, AUTO, BREAK};
Значение AUTO принадлежит типу Keyword
Keyword testWord;
Переменная testWord имеет тип Keyword и способна принимать только 3 значения: ASM, AUTO или BREAK; Например:
testWord = ASM;
Слайд 13Основные моменты перечислений
Перечислимая константа может быть объявлена анонимно, то есть без имени
![Основные моменты перечислений Перечислимая константа может быть объявлена анонимно, то есть без](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/1164812/slide-12.jpg)
типа.
enum {FALSE, TRUE};
enum {LAZY, HAZY, CRAZY} why;
Первое объявление — распространенный способ объявления мнемонических целочисленных констант.
Второе объявление объявляет переменную перечислимого типа why, с допустимыми значениями этой переменной lazy, hazy и crazy
Слайд 14Основные моменты перечислений
Перечисления могут неявно преобразовываться в обычные целочисленные типы, но не наоборот.
enum
![Основные моменты перечислений Перечисления могут неявно преобразовываться в обычные целочисленные типы, но](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/1164812/slide-13.jpg)
Boolean {FALSE, TRUE} q;
enum Signal {OFF, ON} a = ON; // а инициализируется в on enum
int i, j = TRUE; // верно true преобразуется в 1
a = OFF; // верно
і = а; // верно i становится 1
q = а; // неверно два различных типа
q = (Boolean)а; // верно явное преобразование (приведение)