logo
Харви Дейтел, Пол Дейтел Как программировать на С++ / 02-Deitel-Стр-115-214

198 Глава 3

Другой популярный пример перечислимого типа:

enum Months {JAN = 1, FEB, MAR, APR, MAY, YUN, JUL, AUG, SEP, ОСТ, NOV, DEC};

Это объявление создает определенный пользователем тип Months с кон­стантами перечисления, представляющими месяцы года. Поскольку первое значение приведенного перечисления установлено равным 1, оставшиеся зна­чения увеличиваются на 1 от 1 до 12. В объявлении перечислимого типа любой константе перечисления можно присвоить целое значение.

Типичная ошибка программирования 3.14

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

Хороший стиль программирования 3.9

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

Хороший стиль программирования 3.10

Использование перечислений вместо целых констант облегчает чтение программы.

После первого бросания, если игра выиграна, структура while пропуска­ется, поскольку gameStatus не равна CONTINUE. Программа передает уп­равление в структуру if/else, которая печатает «Игрок выиграл», если gameS­tatus равна WON, и «Игрок проиграл», если gameStatus равна LOST.

После первого бросания, если игра не окончена, sum сохраняется в my-Point. Управление передается структуре while, потому что gameStatus равна CONTINUE. При каждом выполнении while вызывается rollDice для вычис­ления нового значения переменной sum. Если sum совпадает с myPoint, gameStatus устанавливается равной WON, проверка while терпит неудачу, структура if/else печатает «Игрок выиграл» и выполнение завершается. Если sum равна 7, gameStatus устанавливается в LOST, проверка while терпит неудачу, структура if/else печатает «Игрок проиграл» и выполнение завер­шается.

Обратите внимание на интересные применения различных механизмов управления вычислениями, которые мы обсудили. Программа «крепс» ис­пользует две функции — main и rollDice, структуры switch, while, if/else и вложенную структуру if. В упражнениях мы исследуем различные интерес­ные характеристики игры крепс.