|
Программирование >> Дополнительные возможности наследования
Программа представляет собой простую логическую игру. Вначале предлагается ввести два числа - small и large. После этого меньшее значение увеличивается на единицу, а большее уменьшается на два до тех пор, пока они не встретятся . Цель игры: угадать число, на котором значения встретятся . В строках 12-15 осуществляется ввод значений. В строке 20 проверяется три условия продолжения цикла. 1. Значение переменной small не превышает значения large. 2. Значение переменной large неотрицательное и не равно нулю. 3. Значение переменной small не превышает значения константы MAXSMALL. Далее, в строке 23, вычисляется остаток от деления числа small на 5000, причем значение переменной small не изменяется. Если small делится на 5000 без остатка, результатом вьшолнения этой операции будет 0. В этом случае для визуального представления процесса вьиислений на экран выводится точка. Затем в строке 26 значение переменной small увеличивается на 1, а в строке 28 значение large уменьшается на 2. Цикл завершается, если хотя бы одно из условий перестает вьшолняться. После этого управление передается в строку 29, следующую за телом цикла. Операторы break п continue Часто бывает необходимо перейти на следующую итерацию цикла еще до завершения вьшолнения всех операторов тела цикла. Для этого используется оператор continue. Кроме того, в ряде случаев требуется выйти за пределы цикла, даже если условия продолжения цикла выполняются. В этом случае используется оператор break. Пример использования этих операторов приведен в листинге 7.4. Это несколько усложненный вариант уже знакомой игры. В этом случае, кроме меньшего и большего значений, предлагается ввести шаг и целевое значение. Как и в предьщущем примере, на каждой итерации цикла значение переменной small увеличивается на единицу. Значение large уменьшается на два, если меньшее число не кратно значению переменной шага (skip). Игра заканчивается, когда значение переменой small становится больше, чем значение large. Если значение переменной large совпадает с целевым значением (target), выводится сообщение и игра прерывается. Цель игры состоит в том, чтобы угадать число, в которое попадет значение target. Аистииг 7.4. ИспоАЬЗОваоое break о continue 10 11 12 13 Листинг 7.4. Пример использования операторов break и continue Sinclude <iostream.h> int main() { unsigned short small; unsigned long large; unsigned long skip; unsigned long target; const unsigned short MAXSMALL=65535; 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 cout Enter a small number: ; cin >> small; cout Enter a large number; ; cin >> large; cout Enter a skip number: ; cin >> skip; cout Enter a target number: ; cin >> target; cout \ n установка условий продолжения цикла while (small < large && large > 0 && small < MAXSMALL) small++; if (small % skip == 0) уменьшить значение large? { cout skipping on: small endl; continue; if (large == target) проверка попадания в цель { cout Target reached! ; break; large-=2; } конец цикла cout \ nSmall: small << Large: << large endl; return 0; } Enter a small number: 2 Enter a large number: 20 Enter a skip number: 4 Enter a target number: 6 skipping on 4 skipping on 8 Small: 10 Large: 8 !r Как видим, игра закончилась поражением пользователя, поскольку мень- шее значение превысило большее, а цель так и не была достигнута. В строке проверяются условия продолжения цикла. Если значение переменной small меньше значения large, а также если large больше нуля и small не превышает значение константы SMALLINT, управление передается первому оператору тела цикла. В строке 32 вычисляется остаток от деления значения переменной small на значение skip. Если значение small кратно skip, оператор continue запускает следующую итерацию цикла (срока 26). В результате такого перехода пропускается проверка целевого значения и операция уменьшения значения переменной large. Сравнение значений target и large выполняется в строке 38. Если эти значения равны, игра заканчивается победой пользователя. В этом случае программа выводит сообщение о победе, работа цикла прерывается оператором break и управление передается в строку 46. Использпванпв конструкции whilcltruc в качестве условия, проверяемого при переходе на очередную итерацию цикла, может выступать любое выражение, корректное с точки зрения синтаксиса языка С++. Цикл выполняется до тех пор, пока это выражение истинно. Для организации так называемых бесконечных циклов в качестве такого выражения применяется логическая константа true. Листинг 7.5 демонстрирует пример бесконечного цикла, выполняющего счет до десяти. Апстинг 7J. Еще один иримЕр использования опвратора while 2 3 4 5 6 7 10 11 12 13 14 15 16 17 18 Листинг 7.5. Пример бесконечного цикла Sinclude <iostream.h> int mainO { int counter = 0; while (true) { counter ++; if (counter > 10) break; cout << Counter: << counter << \ n : return 0; Counter: 11 Понятно, что условие продолжения цикла, заданное в строке 10, будет - выполняться всегда. В теле цикла (строка 12) значение переменной counter увеличивается на единицу. Работа цикла продолжается до тех пор, пока
|
© 2006 - 2025 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки. |