Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Создание программ на С++.doc
Скачиваний:
15
Добавлен:
29.09.2019
Размер:
1.59 Mб
Скачать

Обработка нескольких условий

Программы, представленные в этом уроке, использовали if и else, чтобы указать один набор операторов, который программе следует выполнить, если условие истинно, и другой набор операторов, выполняемых, если условие ложно. Однако в некоторых случаях программам потребуется проверить несколько разных условий. Предположим, например, что вашей программе необходимо определить тестовые очки студента. Для этого программа должна проверить, больше тестовые очки или равны 90, 80, 70, 60 и т. д. Следующая программа SHOWGRAD.CPP использует для этого серию операторов if-else:

#include <iostream.h>

void main(void)

{     int test_score;     cout << "Введите тестовые очки и нажмите Enter: ";     cin >> test_score;     if (test_score >= 90)         cout << "Вы получили А!" << endl;     else if (test_score >= 80)         cout << "Вы получили В!" << endl;         else if (test_score >= 70)             cout << "Вы получили С" << endl;             else if (test_score >= 60)                  cout << "Ваша оценка была D" << endl;                  else                     cout << "Вы провалили тест" << endl;  }

При выполнении первого оператора if программа проверяет, больше тестовые очки или равны 90. Если это так, программа выводит сообщение пользователю, что он получил А. В противном случае, если тестовые очки не больше или равны 90, программа выполняет следующие else if, чтобы проверить, больше ли тестовые очки или равны 80. Программа повторяет данный процесс до тех пор, пока не определит правильную оценку. Как и ранее, экспериментируйте с этой программой, вводя разные тестовые очки.

Использование оператора switch

Как вы уже знаете, комбинируя серии операторов if-else, программы могут проверять несколько условий. В предыдущей программе использовались операторы if-else, чтобы определить, находятся ли тестовые очки в данномдиапазоне значений. В тех случаях, когда вашим программам необходимо осуществить проверку определенных значений, они могут использовать оператор C++ switch.

Если вы используете оператор switch, вы должны указать условие и затемодин или несколько вариантов (case), которые программа попытается сопоставить с условием. Например, следующая программа SWITCH.CPP использует оператор switch для вывода сообщения, основываясь на текущей оценке студента:

#include <iostream.h>

void main(void)

{     char grade = 'В';     switch (grade)

      {            case 'A': cout << "Поздравляем, вы получили А" << endl;break;            case 'В': cout << "Хорошо, у вас В" << endl; break;            case 'С': cout << "У вас всего лишь С" << endl; break;            case 'D': cout << "Плохо, у вас D" << endl; break;            default: cout << "Ужасно! Учите лучше!" << endl; break;      }  }

Оператор switch состоит из двух частей. Первая часть оператора switchпредставляет собой условие, которое появляется после ключевого словаswitch. Вторая часть представляет собой возможные варианты соответствия. Когда программа встречает оператор switch, она сначала исследует условие, а затем пытается найти среди возможных вариантов тот, который соответствует условию. Если программа находит соответствие, выполняются указанные операторы. Например, в предыдущей программе выбор варианта 'В' соответствует условию. Таким образом, программа выводит сообщение, что пользователь получил В. Найдите время для эксперимента с этой программой, изменяя оценку и наблюдая поведение программы. Если же ни один из указанных вариантов не соответствует условию, то выполняется вариант default.

Обратите внимание на использование оператора break в каждом варианте предыдущей программы. Оказывается, если C++ встречает вариант, соответствующий условию оператора switch, то он подразумевает, что все последующие варианты тоже соответствуют условию. Оператор breakуказывает C++ завершить текущий оператор switch и продолжить выполнение программы с первого оператора, следующего за операторомswitch. Если вы удалите операторы break из предыдущей программы, то программа выведет не только требуемое сообщение, но и сообщение для всех последующих вариантов (потому что если один вариант является истинным, то и все последующие варианты в C++ рассматриваются как истинные).