|
Программирование >> Аргументация конструирования
Цикл также удобен и тогда, когда значение переменной цикла необходимо увеличивать, а не уменьшать. Это осуществляется небольшим изменением цикла for. Вводится счетчик цикла. На экран выводится количество выполненных циклов for #includ& <stdio.h> #include <iostrea;n.h> int main lint arg, char* pszArgs[]) { / / ввод счетчика цикла int loopCount; cout Введите loopCount: ; cin loopCount; вычисляем, пока не нарушится условие for (int i = 1; i <= loopCount; i++) cout << i завершили << i цикл\п ; return 0; Согласно последнему стандарту языка индексная переменная, объявленная в части инициализации цикла известна только в пределах этого цикла. Программисты на С + + в этом случае говорят, что область видимости переменной ограничена циклом for. Например, в инструкции return рассмотренного выше примера, т.е. за пределами цикла, переменная i недоступна и не может использоваться. Однако этого новейшего правила придерживаются далеко не все компиляторы, и вам нужно протестировать свой компилятор, чтобы узнать, как он действует в этом случае. Вы можете задать вопрос: если цикл for эквивалентен циклу while, зачем забивать себе им голову? Цикл намного легче для понимания, поскольку главные части любого цикла for (инициализация, условие, увеличение) имеют фиксированное местоположение и соответствуют стандартному формату записи. Избегайте бесконечных циклов Бесконечным называют такой цикл, который выполняется вечно. Бесконечный цикл создается каждый раз, когда нельзя нарушить условие выполнения цикла, обычно вследствие какой-то ошибки в коде. Рассмотрим следующую разновидность рассмотренного ранее цикла: while (loopCount > 0) f cout << Осталось выполнить <<loopCount << циклов\п Программист заб1л уменьшить переменную loopCount, как это делалось в ранее рассмотренных циклах. В результате получен счетчик цикла, значение которого никогда не изменяется. При этом условие выполнения цикла будет либо всегда истинно, либо всегда ложно. Выполнение такой программы никогда не закончится естественным путем, т.е., как говорят, программа зацикливается. Но... ничто не вечно под Луной! В конечном счете правительство сменится, компьютер поломается, Microsoft обанкротится... Или цикл прервется, и вам не о чем будет тревожиться. Существует гораздо больше способов создания бесконечных циклов, чем показано здесь; но обычно они слишком сложны дл того, чтобы приводить их в такой простой книжке. Специальные операторы циклов В C++ определены две специальные управляющие программой команды - break и conti:;je. Может случиться, что условие работы цикла нарушится не в начале или в конце, а где-то посередине цикла. Рассмотрим программу, которая суммирует введенные пользователем значения. Цикл прерывается, когда пользователь вводит отрицательное число. Проблема в том, что программа не сможет выйти из цикла, пока пользователь не введет число, но должна сделать это пере те.м. как значение будет добавлено к сумме. В таких случаях используют определенную в C++ команду break. Она немедленно передает управление в конец текущего цикла. После инструкции break программа будет выполнять инструкцию, следующую сразу же после закрывающей скобки цикла. Схематически работу команды break можно проиллюстрировать так: wh-i, 1 е (условие) if (какое-то другое условие) break; выход из цикла } когда программа встретит break, управление будет передано этой строке Вооружась новой командой break, я реализовал в программа MkDimo решение проблемы последовательного накопления суммы чисел. kDemo - ЗЕОдям множество чисел. Суммируем эти числа, пока пользователь не введет / / отрицательное число #incl.ucle <srdio.h> #ir.clude <io3tream.h> in-c iriaindnt arg, char* ps2Args[]) введите счетчик цикла int accuinu later = 0; cout << Эта программа суммирует числа, введенные пользователем\п ; cout << Выполнение цикла < 4ивается после введения отрицательного чкслаХп ; бесконечный цикл for(;;) ввод следующего числа int value = 0; cout << Введите следующее число: ; cin >> value; / / если оно отрицательно.. . if (value < 0) тогда ЕЫХОДИМ из цикла break; ...иначе добавляем число к общей сумме accumulator = accumulator + value; после выхода из цикла выводим результат суммирования cout << ХпОбщая сумма равна accumulator \ п ; return После объяснения правил пользователю (что нужно ввести, чтобы выйти из цикла, и что делает эта программа) управление получает нечто подобное бесконечному циклу for. Сначала на экран выводится запрос на введение числа с клавиатуры. Проверить его на соответствие критерию выхода из цикла можно только после того, как оно считано программой. Если введенное число отрицательно, управление переходит к оператору break и программа в1ходит из цикла. Если же число оказывается положительным, программа пропускает команду break и к накопленной сумме добавляет новое значение. После выхода из цикла программа выводит значение общей суммы всех введенных чисел и завершает работу. При повторяющемся выполнении операций над переменной в цикле проследите, чтобы инициализация переменной осуществлялась еще до входа в цикл. В нашем случае программа обнулила переменную accumulator перед входом в цикл, в котором к ней добавляются новые числа. Несколько реже используется команда continue. Столкнувшись с ней, программа немедленно возвращается к началу цикла. Остальные инструкции цикла игнорируются. В следующем фрагменте программы отрицательные числа, которые может ввести пользователь, игнорируются: while (1) I Ввсд значения cout << Введите значение ; can inputVal; если число отрицательное if (inputVal < 0) выводим сообщение об ошибке cout Не допускается ввод отрицательных чисел/п ; возвращаемся к началу цикла continue; введено приемлемое значение
|
© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки. |