#include
using namespace std;
int main()
{
enum DaysOfWeek
{
Sunday = 0,
Monday,
Tuesday,
Wednesday,
Thursday,
Friday,
Saturday
};
15
|
|
Условное выполнение с использованием конструкции if...else
|
121
|
16:
|
cout
|
«
|
"Find what days of the week arenamedafter!" « endl;
|
|
17:
|
cout
|
«
|
"Enter a number for aday(Sunday
|
=0): ";
|
|
18:
|
|
|
|
|
|
int Day = Sunday; // Инициализация днем Sunday
cin » Day;
2 1 :
if (Day == Sunday)
cout « "Sunday was named after the Sun" « endl;
else if (Day == Monday)
cout « "Monday was named after the Moon" « endl;
else if (Day == Tuesday)
cout « "Tuesday was named after Mars" « endl;
28: else if (Day == Wednesday)
cout « "Wednesday was named after Mercury" « endl;
else if (Day == Thursday)
cout « "Thursday was named after Jupiter" << endl;
else if (Day == Friday)
cout « "Friday was named after Venus" « endl;
else if (Day == Saturday)
cout « "Saturday was named after Saturn" « endl;
else
cout « "Wrong input, execute again" « endl;
38:
return 0;
}
Результат
Find what days of the week are named after! Enter a number for a day (Sunday = 0): 5 Friday was named after Venus
Следующий запуск:
Find what days of the week are named after!
Enter a number for a day (Sunday = 0): 9
Wrong input, execute again
Анализ
Конструкция i f . . . e l s e . . . i f , используемая в строках 22 -37, проверяет ввод поль зователя и создает соответствующий вывод. Вывод при втором запуске свидетельствует, что программа в состоянии указать пользователю, что он ввел номер вне диапазона 0-6,
следовательно, не соответствующий дню недели. Преимущ ество этой конструкции в том, что она отлично подходит для проверки множества взаимоисключающих условий, т.е. понедельник не может быть вторником, а недопустимый ввод не может быть никаким днем недели. Другим интересным моментом, на который стоит обратить внимание в этой программе, является использование перечисляемой константы DaysOfWeek, объявленной в строке 5 и используемой повсюду в операторе i f . Можно было бы просто сравнивать пользовательский ввод с целочисленными значениями; так, например, 0 соответствовал бы воскресенью и т.д. Однако использование перечисляемой константы S un d ay делает код более наглядным.
122 ЗАНЯТИЕ 6. Ветвление процесса выполнения программ
Условная обработка с использованием конструкции switch-case
Задача конструкции s w itc h - c a s e в том, чтобы сравнить результат некоего выражения
набором возможных констант и выполнить разные действия, соответствующие каждой из этих констант. Новые ключевые слова C++, которые используются в такой конструк ции, — это s w itc h , c a s e , d e f a u l t и b re a k .
Конструкция s w itc h - c a s e имеет следующий синтаксис:
switch(выражение)
{
case МеткаА:
СделатьНечто;
break;
case МеткаВ:
Сдела тьНечтоДругое;
break;
//И так далее...
default:
СделатьНечтоЕслиВыражениеНеСоответствуетНичемуВыше; break;
}
Код вычисляет результат выражения и сравнивает его на равенство с каждой из меток частей c a s e ниже, каждая из которых должна быть константой, а затем выполняет код по сле этой метки. Когда результат выражения не соответствует метке МеткаА, он сравнивает ся с меткой МеткаВ. Если значения совпадают, выполняется часть СделатьНечтоДругое. Выполнение продолжается до тех пор, пока не встретится оператор b re a k . Вы впервые встречаете оператор b re a k . Он означает выход из блока кода. Операторы b r e a k не обя зательны; однако без них выполнение продолжится в коде следующей метки и так далее, до конца блока. Такого явления, как правило, желательно избегать. Часть d e f a u l t также является необязательной, она выполняется тогда, когда результат выражения не соответ ствует ни одной из меток в конструкции s w itc h - c a s e .
Do'stlaringiz bilan baham: |