Глава 10. Написание выражений________________________________237

когда размер интервала достигнет нуля. Может ли случится так, что это условие не будет удовлетворено и цикл будет бесконечным? Может ли переменная дар (интервал) застрять в промежутке между l и 2? Нет. В конце концов значение gap достигнет l, а при следующем делении на 2 уменьшится до 0.5, что при отбрасывании целой части (так как gap — целое) даст ноль.

Средний цикл сравнивает элементы массива, разделенные интервалом gap. Переменной цикла i изначально присваивается значение gap. На каждом шаге цикла ее значение увеличивается на единицу; таким образом, условие окончания цикла всегда достижимо.

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

Операторы перехода

Операторы перехода (jump statements) осуществляют безусловную передачу управления в определенное место программы. Существует 4 оператора перехода: break, continue, return И goto.

break

Вы уже встречали оператор break в разделе, посвященном оператору switch. Когда оператор break употребляется в последовательности операторов case, управление программой передается следующему за блоком switch оператору. Вообще, оператор break прерывает исполнение ближайшего внешнего оператора while, do, for или switch. Управление передается следующему за прерванным оператору.

Листинг 10.8 показывает пример использования оператора break в циклах while и for. Программа представляет из себя очень простую игру. От игрока требуется вводить символы до тех пор, пока не будут нажаты <Ctd>+<0 или пока игрок не введет "секретный" символ, выиграв таким образом игру.

h02371.jpg

ttinclude <iostream.h>

void main() {

const unsigned MAX_STR_LEN = 100;