Информационный сайт

 

Реклама
bulletinsite.net -> Книги на сайте -> Программисту -> Лафоре Р. -> "Объектно-ориентированное программирование в С++" -> 38

Объектно-ориентированное программирование в С++ - Лафоре Р.

Лафоре Р. Объектно-ориентированное программирование в С++ — М.: Питер, 2004. — 992 c.
Скачать (прямая ссылка): obektnoorentprogramm2004.djvu
Предыдущая << 1 .. 32 33 34 35 36 37 < 38 > 39 40 41 42 43 44 .. 341 >> Следующая


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

for(numb=l:numb<=10: numb++){ cout «setw(4)«numb: int cube =numb*numb*numb;

cout «setw(6)«cube «endl: }

Такой способ делает листинг на одну строку короче, но восприятие текста становится менее удобным, поскольку открывающая фигурная скобка теряется из виду и путаются связи между открывающими и закрывающими фигурными скобками. Еще одним вариантом оформления циклов служит сдвиг вправо тела цикла вместе с обрамляющими фигурными скобками:

for(numb=l:numb<=10: numb++) {

cout «setw(4)«numb; int cube =numb*numb*numb:

cout «setw(6)«cube «endl: }

Этот подход является весьма распространенным, однако и у него есть свои противники. Разумеется, выбор способа оформления кода программы зависит только от ваших предпочтений, и вы можете форматировать текст программы так, как вам кажется удобнее. 100

Глава 3. Циклы и ветвления

Обнаружение ошибок

С помощью средств компилятора, позволяющих облегчить процесс обнаружения ошибок в программах, вы можете создать динамическую модель, иллюстрирующую процесс выполнения вашего цикла. Главным из таких средств является пошаговое выполнение. Откройте окно проекта для отлаживаемой программы и окно с текстом программы. Детали работы с отладчиком зависят от компиляторов, информацию о которых можно получить из приложения В «Microsoft Visual С++» или приложения Г «Borland С++ Builder». Нажимая соответствующую функциональную клавишу, можно построчно исполнять код вашей программы. Таким образом, вы сможете увидеть работу программы в том порядке, в котором записаны ваши операторы. При работе с циклом вы сможете убедиться в том, что сначала исполняется тело вашего цикла, затем происходит переход, и тело цикла исполняется снова.

Отладчик можно также использовать для того, чтобы следить за значениями переменных в процессе исполнения программы. Вы можете поэкспериментировать с программой cubelist, поместив переменные numb и cube в окно Watch window вашего отладчика, и посмотреть на изменения их значений при исполнении программы. Чтобы получить информацию об использовании окна Watch, загляните в соответствующее приложение.

Watch window и пошаговое исполнение программы являются мощным отладочным инструментом. Если поведение вашей программы отличается от задуманного, вы можете использовать эти средства для контроля над объектами программы. Как правило, причина ошибки после такой отладки становится ясной.

Варианты цикла for

Инкрементирующий оператор не обязательно должен производить операцию инкрементирования счетчика цикла; вместо инкрементирования может использоваться любая другая операция. В следующем примере под названием FACTOR в операторе цикла используется декрементирование счетчика цикла. Программа запрашивает значение у пользователя, а затем подсчитывает факториал этого числа (факториал числа представляет из себя произведение всех целых положительных чисел, не превышающих данное число. Например, факториал числа 5 равен 1*2*3*4*5=120).

Il factor.срр

И подсчет факториала числа с помощью цикла for !include <iostream> using namespace std; int main()

unsigned int numb:

unsigned long fact = 1; // тип long для результата

cout « "Введите целое число: ":

сіп » numb:

for(int j=numb: j>0; j--) fact *- y.

Il ввод числа Il умножение 1 на К numb, numb-L.....2, 1 Обнаружение ошибок 101

cout « "Факториал числа равен " « fact « endl: return 0:

}

В этом примере инициализирующий оператор присваивает переменной j значение, вводимое пользователем. Условием продолжения цикла является положительность значения j. Инкрементирующее выражение после каждой итерации уменьшает значение j на единицу.

Мы использовали тип unsigned long для переменной, хранящей значение факториала, потому, что даже для небольших чисел значения их факториалов очень велико. В 32-битных системах размеры типов int и long совпадают, но в 16-бит-ных системах размер тина long больше. Следующий результат работы программы показывает, насколько велико может быть значение факториала даже для небольшого числа:

Введите целое ЧИСЛО: 10 Факториал числа равен 3626600

Самое большое число, которое можно использовать для ввода в этой программе, равно 12. Для чисел больше 12 результат работы программы будет неверен, поскольку произойдет переполнение.

Определение счетчика цикла внутри оператора цикла for

В последней программе есть еще одно полезное нововведение: переменная j описана прямо внутри оператора цикла:

for (int j = numb: j>0: j--)

Подобная конструкция является типичной для С++, и, как правило, наиболее удобна для работы со счетчиками цикла. Такое определение переменной стоит наиболее близко к месту ее употребления. Переменная, описанная в операторе цикла, видна только внутри этого цикла (компилятор Microsoft делает такие переменные видимыми от точки объявления до конца программы, но это не является стандартом С++).
Предыдущая << 1 .. 32 33 34 35 36 37 < 38 > 39 40 41 42 43 44 .. 341 >> Следующая
Реклама
Авторские права © 2009 AdsNet. Все права защищены.
Rambler's Top100