ОБЪЕКТНО-ОРИЕНТИРОВАННОЕ ПРОГРАММИРОВАНИЕ В C++ (4-Е ИЗДАНИЕ) (часть 3) онлайн

Оператор continue

Оператор break производит выход из цикла. Тем не менее, могут возникнуть и такие ситуации, когда необходимо при определенном условии не выходить из цикла, а досрочно возвращаться в его начало. Именно таким эффектом обладает применение оператора continue (строго говоря, continue делает переход на завер- шающую фигурную скобку цикла, откуда производится обычный переход в нача- ло тела цикла). Действие оператора continue проиллюстрировано на рис. 3.18.

Расширенная таблица символов ASCII

Рис. 3.18. Исполнение выражения continue

Теперь немного изменим программу DIVDO. Как мы уже видели, эта програм- ма производит операцию деления, но в ней возможна фатальная ошибка: если пользователь введет ноль в качестве делителя, то произойдет аварийное завер- шение программы с выдачей сообщения Ошибка деления на ноль. Мы изменим исходный пример таким образом, чтобы подобная ситуация обрабатывалась более аккуратным способом.

// divdo2.cpp

// применение оператора continue  #include <iostream>  using namespace std;

int main() {

long dividend, divisor; char ch; do {

cout << "Введите делимое: "; cin >> dividend; cout << "Введите делитель: " ; cin >> divisor; if( divisor == 0 )                // при попытке

{              // деления на ноль

  cout << "Некорректный делитель!\n"; // вывод сообщения   continue;              // возврат в начало цикла

}

 cout << "Частное равно " << dividend / divisor;  cout << ", остаток равен " << dividend % divisor;  cout << "\nЕще раз?(y/n);  ";  cin >> ch; } while( ch != 'n'); return 0;

}

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

Введите делимое: 10 Введите делитель: 0 Некорректный делитель! Введите делимое:

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

Обратите внимание на то, что мы немного сократили формат цикла do: ключе- вое слово do находится в одной строке с открывающей фигурной скобкой, а сло- во while — с закрывающей фигурной скобкой.

 

47