1.Закомментируйте строку программного кода N=N+1 (представьте себе, что вы забыли вести в программе подсчет количества введенных чисел).
Рис. 14.11
2. Запустите программу на выполнение, введите три числа и щелкните по кнопке < Саnсеl >. Система не выдаст сообщения об ошибке, но результат будет таким, которого вы не ожидали (рис. 14.11).
3. Запустите проект на выполнение не кнопкой < Start >, как вы привыкли это делать, а с помощью команд меню Debug => Step Into или нажав клавишу [ F8] на клавиатуре.
4. Щелкните по кнопке < Начало ввода>.
Вы сразу почувствуете разницу. Проект остановится на самой первой строке процедуры (эта строка будет подсвечена желтым цветом):
Private Sub cmdЦикл_Click()
Чтобы узнать, чему равны значения переменных во время остановок программы, достаточно под указатель мыши к обозначению переменной. При этом появится маленький прямоугольник со значением переменной, как показано на рис. 14.12.
Рис. 14.12
5. Нажимайте на клавишу [ F8 ] до тех пор, пока не будет выделена строка
Р = InputВох("Введите число и щелкните по кнопке <ОК>.
|
|
Для завершения ввода щелкните по кнопке <Саnсе1>, "Ввод очередного числа").
6. Еще раз нажмите на клавишу [ F8 ]. В результате появится окно для ввода числа. Введите число 10 и щелкните по кнопке «OK >.
7. Нажмите на клавишу [ F8 ]. Проверьте значение переменной Р (рис. 14.13).
Рис. 14.13
8. Нажимайте на клавишу [ F8 ] до тех пор, пока в цикле не будет выделена строка
Р = InputBox ("Введите число и щелкните по кнопке <ОК>.
Для завершения ввода щелкните по кнопке <Саnсеl>, "Ввод очередного числа").
9. Проверьте значение переменной sum. Оно равно 10. Следовательно, накопление суммы проходит нормально.
10. Еще раз нажмите на клавишу [ F8 ]. В результате появится окно для ввода числа. Щелкните по кнопке < Саnсеl >. Будет подсвечена строка Loop.
11. После следующего нажатия клавиши [ F8 ] будет подсвечена строка Do Until P = "".
12. Проверьте, что Р= "", т.е. цикл должен завершиться.
13. После следующего нажатия клавиши [ F8 ] будет подсвечена строка If N=0. Проверьте, что N=0, т.е. количество чисел не увеличилось. Дальнейший результат после очередного нажатия клавиши [ F8 ] предсказуем: появляется окно с сообщением " Не введено ни одного числа!"
14. После следующего нажатия клавиши [ F8 ] будет подсвечена строка End If, а далее End Sub.
15. Устраните ошибку.
16. В программе может происходить зацикливание.
Замените строку
Do Until P = ""
строкой
Do
(представьте себе, что вы "забыли" ввести условие выполнения цикла). Относительно синтаксиса все нормально.
17.Запустите программу на выполнение, введите число и щелкните по кнопке < Саnсе1 >. В результате появится следующее окно для ввода числа. Снова щелкните по кнопке < Саnсе1 > и т.д. Произошло зацикливание программы.
|
|
18.Прервите выполнение программы, нажав комбинацию клавиш [ Ctrl+Break ]. После прерывания будет выделена строка Loop.
19.Если снова применить пошаговое выполнение программы, то можно будет увидеть, что после строки Loop будет подсвечиваться строка N=N+1, т.е. никакое условие продолжения цикла не проверяется: оно просто отсутствует.
Инструментарий отладки. В среде разработки Visual Basic инструменты поиска ошибок объединены в меню Debug (рис. 14.14).
Рис. 14.14
Воспользовавшись командой Toolbars меню View, можно отобразить панель инструментов Debug для доступа к основным средствам отладки (рис. 14.15).
Рис. 14.15
Назначение кнопок панели приведено в табл. 14.1.
Таблица 14.1
Кнопка | Название | Назначение |
Start/Continue | Запускает программу или продолжает ее выполнение после прерывания | |
Break | Вызывает прерывание программы в необходимом месте (без использования точек останова) | |
End | Завершает выполнение программы | |
Toggle Breakpoint | Устанавливает/Снимает точку останова на текущей строке кода | |
Step Into | Пошаговая обработка с заходом в процедуры | |
Step Over | Пошаговая обработка без захода в процедуры | |
Step Out | Пошаговая обработка до выхода из процедуры | |
Locals Window | Открывает окно для контроля значений переменных | |
Immediate Window | Открывает окно для ввода и выполнения команд | |
Watch Window | Открывает окно для просмотра выражений, включенных в список наблюдения | |
Quick Watch | Открывает окно для просмотра выражения и значения, которое оно возвращает в данный момент в точке останова программы или на определенном шаге при пошаговом запуске программы | |
Call Stack | Открывает окно для просмотра списка выполнямых поцедур |
Как видно из рис. 14.14 и 14.15, некоторые инструменты панели Debug дублируют меню Debug или взаимосвязаны с ним.
Окно Immediate Window. При работе с окном Immediate удобно использовать объект Debug и его метод Print. В процессе выполнения программы с помощью метода Debug. Print выводятся сообщения в окне Immediate. Познакомьтесь с тем, как это происходит.