Лабораторная работа №1 (1081987), страница 3
Текст из файла (страница 3)
Существует и другая возможность пропустить пошаговое выполнение некоторого куска программы: установите текстовый курсор в нужное место программы и нажмите клавиши Ctrl+F10.
Продолжим отладку программы Buggy:
□ Нажмите клавишу F10.
Указатель следующей выполняемой команды переместится на оператор
sum =sum + a[i];
1.10.4. Проверка значений переменных во время выполнения программы
Чтобы узнать значение переменной sum, в которой будет накапливаться сумма элементов массива а, задержите над ней указатель мыши. Рядом с именем переменной на экране появляется подсказка со значением этой переменной:
sum = -1.07374e+008 (или с другим произвольным значением).
Ага!!! Ведь еще не было никакого суммирования и, следовательно, переменная sum, по идее, должна быть равна нулю. Вот где собака зарыта! Мы забыли обнулить переменную sum до входа в цикл.
□ Нажмите комбинацию клавиш Shift+F5, чтобы выйти из отладчика и исправить
найденную ошибку. Найдите строку с объявлением
float sum, average;
и добавьте в нее инициализацию переменной sum:
float sum = 0, average;
□ Откомпилируйте заново проект — кнопка Build (F7).
□ Запустите на выполнение — кнопка Execute Program (Ctrl+F5).
Вы получите новый результат:
average = 2.8
Это как бы теплее, но все равно еще неправильно. Нажмите любую клавишу для завершения работы приложения. Необходимо продолжить отладку:
-
Установите точку прерывания перед оператором for. .
-
Запустите программу в отладочном режиме, нажав клавишу F5.
-
Нажмите клавишу F10.
Указатель следующей выполняемой команды переместится на оператор
sum = sum+a[i];
□ Нажмите клавишу F10.
Указатель следующей выполняемой команды переместится на оператор
for (i = 1; i < N; i++)
□ Задержите теперь над переменной sum указатель мыши. Рядом с именем переменной на экране появится подсказка со значением этой переменной
sum = 2.
Стоп!!! Позади 1-я итерация цикла, и в переменной sum должно находиться значение первого элемента массива а, т. е. число 1. А мы имеем число 2, то есть значение второго элемента массива а. Пришло время вспомнить, что в языке C++ нумерация элементов массива начинается с 0! Поэтому ошибка находится в заголовке цикла:
for (i = 1; i < N;i++)
и ее нужно немедленно исправить. Повторите действия, направленные на исправление ошибки:
-
выйти из отладчика,
-
исправить текст программы в операторе for:
for (i = 0: i < N; i++)
-
откомпилировать,
-
запустить на выполнение.
Если в процессе исправления вы не внесли новых ошибок, то должен получиться результат:
average = 3.0.
Итак, все ОК! — программа работает правильно.
В заключение отметим, что отладчик предоставляет и другие возможности для наблюдения за значениями переменных во время выполнения программы.
1.10.5. Окна Auto и Watch 1
Помимо экранной подсказки, переменная sum со своим значением отображается в окне Auto, расположенном в левом нижнем углу экрана. В этом окне приведены значения последних переменных, с которыми работал Visual C++.
Кроме этого, в окне Watch 1, которое находится в правом нижнем углу, можно задать имя любой переменной, за значениями которой вы хотите понаблюдать.
Более подробно о работе с этими окнами можно прочитать в справочной системе через меню Help главного окна Visual C++.
Задание.
Выполните программу п. 1.10 по шагам, используя для определения значений переменных окна Auto и Watch1.