Программирование >>  Дополнительные возможности наследования 

1 ... 54 55 56 [ 57 ] 58 59 60 ... 265


1 . , Enter a number between 1 and 5: 3 Excellent! Masterful! Incredible!

Enter a number between 1 and 5: 8 Too large!

Сначала программа предлагает ввести число. Затем введенное число обрабатывается оператором switch. Если вводится О, то это соответствует значению оператора case из строки 13 и на экран выводится сообщение Too small, sorry!, после чего оператор break завершает выполнение конструкции switch. Если вводится число 5, управление передается в строку 15 и выводится соответствующее сообщение. Затем выполняется строка 16, в которой также выводится сообщение, и так до строки 20. В этой строке оператор break завершает выполнение блока с оператором switch.

Таким образом, при вводе чисел от 1 до 5 на экран будет выводиться ряд сообщений. Если же вводится число, превышающее 5, выполняется строка 21 с оператором default, в которой выводится сообщение Too large!.

ООраОотка команд меню с помощью онвратпра switch

Вернемся к теме циклов с оператором for(;;). Такие конструкции называют бесконечными циклами, поскольку, если выполнение такого цикла не прервать оператором break, он будет работать бесконечно. Циклы подобного типа удобно использовать для обработки команд меню (листинг 7.17). Пользователь выбирает одну из предложенных команд, затем выполняется определенное действие и осуществляется возврат в меню. Так продолжается до тех пор, пока пользователь не выберет команду выхода.

В бесконечных циклах не существует условия, при нарушении которого цикл прерывается. Поэтому выйти из такого цикла можно только посредством оператора break,

ДИШИИа 7.17. ПриНВр ОВЕКВНВЧНОВО цикжв

12 13 14 15

17 18 19 20 21

Листинг 7,17,

Обработка диалога с пользователем посредством бесконечного цикла Sinclude <iostream,h>

прототипы функций int menu(); void DoTaskOnoO; void DoTaskMany(int);

int mainO {

bool exit = false;

for (;;)

int choice = menuO;

switch(choice)

case (1);

DoTaskOneO;



22: break;

23: case (2):

24: DoTaskMany(2);

25; break;

26: case (3):

27: DoTaskMany(3);

28: break;

29: case (4):

30: continue; необязательная строка

31: break;

32; case (5):

33: exit=true;

34; break;

35: default:

36: cout Please select again!\ n ;

37: break;

38: } конец блока switch

40: if (exit)

41: break;

42: } и так до бесконечности

43: return 0;

44: > конец функции main()

46: int menu() 47: {

48: int choice;

50: cout * * Menu **\ n\ n ;

51: cout (1) Choice one.\ n ;

52: cout (2) Choice two.\ n ;

53: cout (З) Choice three.\ n ;

54: cout (4) Redisplay menu.\ n ;

55: cout -(5) Quit,\ n\ n ;

56: cout ; ;

57: cin choice;

58: return choice;

59: }

61: void DoTaskOneO 62: {

63: cout Task 0ne!\ n :

64: >

66: void DoTaskMany(int which) 67: {

68: if (which == 2)

69: cout Task Two!\ n ;

70: else

71: cout Task Three!\ n ;

72: }



** Menu **** * (1) Choice one.

(2) Choice two.

(3) Choice three.

(4) Redisplay menu.

(5) Quit.

Task One! **** Menu ****

(1) Choice one.

(2) Choice two.

(3) Choice three.

(4) Redisplay menu.

(5) Quit.

Task Three! **** Menu ****

(1) Choice one.

(2) Choice two.

(3) Choice three.

(4) Redisplay menu.

(5) Quit.

В данной профамме используются многие средства профаммирования, рассмофенные на этом и предьщущих занятиях. Тут же вы найдете пример использования консфукции switch.

Работа бесконечного цикла начинается в сфоке 15. Функция menu() обеспечивает вывод на экран команд меню и возвращает номер выбранной пользователем команды. Обработка введенного номера осуществляется в консфукции switch в сфоках 18-38.

При выборе первой команды управление передается следующему после сфоки case (1): оператору (строка 21). Далее, в сфоке 21, вызывается функция DoTaskOneO, которая выводит на экран сообщение о выборе пользователя. После заверщения работы функции осуществляется возврат в точку вызова и выполняется оператор break (сфока 22). Оператор break прерывает работу блока switch и управление передается в сфоку 39. Далее, в сфоке 40, проверяется значение переменной exit. Если оно истинно, бесконечный цикл прерывается оператором break в сфоке 41. В противном случае выполняется следующая итерация цикла (сфока 15).

Особое внимание следует уделить оператору continue в строке 30. Внимательно проанализировав структуру программы, вы заметите, что этот оператор можно опустить, причем работа программы не изменится. Если бы строки с этим оператором не было, выполнялся бы оператор break, затем оператор if и, так как переменная exit содержала бы значение false, запускалась следующая итерация цикла. Использование оператора continue просто позволяет перейти на новую итерацию без проверки значения exit.



1 ... 54 55 56 [ 57 ] 58 59 60 ... 265

© 2006 - 2025 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки.
Яндекс.Метрика