Отладка и внесение изменений в программу

      Комментарии к записи Отладка и внесение изменений в программу отключены

На этом этапе проверяется правильность работы программы. Ошибки, возникающие в процессе создания программы, могут быть вызваны и неадекватным моделированием, и некорректностью метода или алгоритма, и, наконец, неправильным применением самих средств VB.

В целом типы ошибок принято разделять на два неравнозначных класса. Один из них – это класс синтаксических ошибок, то есть ошибок, связанных с неправильной записью или употреблением языковых конструкций. Эти ошибки легко исправимы, так как соответствующее программное обеспечение – транслятор – осуществляет автоматический контроль синтаксической правильности программ пользователя, а с помощью контекстно-зависимой помощи можно получить как разъяснения об ошибке, так и узнать правильный вид языковой конструкции.

Другой вид ошибок, действительно представляющий проблему программирования, – смысловые ошибки. Обнаружение и исправление их, что собственно и представляет собой процесс отладки, дело очень сложное:

  • Как определить, что программа имеет смысловую ошибку? В лучшем случае программа не работает, то есть её работа прерывается в некоторый момент, и система выдаёт какое-нибудь сообщение типа «исчезновение порядка числа с плавающей точкой». В худшем случае программа успешно завершает свою работу и выдаёт результаты, отвечающие интуитивным представлениям о характере решения задачи.
  • Как обнаружить скрытые ошибки? Самый популярный метод – тестирование программы. Следует взять такие исходные данные, правильный результат расчёта для которых известен заранее, и выполнить программу с этими данными. Если полученный результат совпадает с известным результатом, то, как говорят, «тест прошёл успешно». Неприятность заключается в том, что, это совсем не означает, что программа не содержит ошибок.
  • Запустить программу, приведенную на рис. 4.2.5-7, на выполнение. Список полученных ошибок приведен на
    рис. 4.2.5-9.

<p>

Рис.4.2.5.9. Список ошибок

Так как в программе запрещено использовать неявные преобразования (оператор Option Strictимеет положение On), то преобразования из String в Single и из Double в Single невозможны.

Это было ясно и без выполнения программного кода, поскольку технология IntelliSense не только указывает на ошибку в преобразовании (красный прямоугольник на ошибочной строке), но и помогает исправить ошибку (рис. 4.2.5-10).

Рис. 4.2.5-10. Иллюстрация использования технологии IntelliSense

Подвести курсор на красный прямоугольник и щелкнуть на строке появившегося квадрата. Появится текст с параметрами исправления ошибок и их автоматического исправления.

VB считает содержимое текстового поля текстом (String), а не числом (Single), даже если в текстовое поле вводятся цифры. Поэтому для присваивания числовым переменным A, B и C значений, введенных в текстовые поля объектов TextBox1, TextBox2 и TextBox3, необходимо предварительно осуществить преобразование данных из типа String в тип Single. За такое преобразование отвечает функция CSng().

Аналогично при выводе вычисленных числовых значений периметра и площади в текстовые поля TextBox4 и TextBox5 числовые значения предварительно преобразуются в текст (String) с помощью функции CStr().

Последняя пятая ошибка – в выражении стоит лишняя скобка.

После устранения ошибок (рис. 4.2.5-11) необходимо запустить программу на выполнение и ввести значения сторон треугольника, как показано на рис. 4.2.5-12.

Option Strict OnOption Explicit OnImports System.MathPublic Class Form1Private Sub Button1_Click(ByVal sender As System.Object, _ByVal e As System.EventArgs) Handles Button1.ClickDim A, B, C As SingleDim P, Pp, S As Single’Присваивание переменной В значения поля TextBox2B = CSng(TextBox4.2.Text)’Присваивание переменной А значения поля TextBox1A = CSng((TextBox1.Text))’Присваивание переменной С значения поля TextBox3C = CSng((TextBox3.Text))’Вычисление периметра и присваивание значения РP = (A + B + C)’Вычисление полупериметра и присваивание значения РрPp = P / 2’Вычисление площади и присваивание значения переменной SS = CSng((Sqrt(Pp * (Pp — A) * (Pp — B) * (Pp — C))))’Вывод значения полупериметра в текстовое поле TextBox4TextBox4.Text = CStr(P)’Вывод значения площади в текстовое поле TextBox5.TextBox5.Text = CStr(S)End SubPrivate Sub Button2_Click(ByVal sender As System.Object, _ByVal e As System.EventArgs) Handles Button4.2.ClickEndEnd SubEnd Class

Рис.4.2.5-11 Усовершенствованный программный код проекта

  • Далее необходимо проанализировать результаты вычислений. Очевидно, что при тех данных, которые были введены, периметр треугольника должен быть равен 12, а площадь – 6. Отсутствие сообщений компьютера о синтаксических ошибках есть необходимое, но недостаточное условие правильности программы.
  • Поскольку программа достаточна простая, то полученный результат можно проверить вручную, а именно запустить программу на выполнение еще раз и ввести значения сторон, как показано на рис. 4.2.5-13. Система выдаст результат с ошибкой в поле Площадь треугольника.

Рис.4.2.5-12. Результат выполнения проекта с исходными данными:

А=3, В=4, С=5

Рис.4.2.5-13 Результат выполнения проекта с исходнымиданными: А=10, В=2, С=1

Ошибка произошла в связи с тем, что были введены данные, при которых треугольник не может существовать: подкоренное выражение имеет отрицательное значение. Обратите внимание, что все программы должны проверять вводимые данные на корректность. Проверить работу кнопки ЗАВЕРШИТЬ. Щелчок по ней должен привести к завершению программы. Сохраните изменения в проекте.

Статьи к прочтению:

Отладка VBS в К3Мебель (часть 2)


Похожие статьи:

  • Понятие о способах отладки программы.

    Отладка программ – это не менее серьезный этап, чем их подготовка, что, к сожалению, нечасто учитывают начинающие программисты, воодушевленные успехом…

  • Отладка и выполнение программы

    После того, как программа набрана в виде текста в окне редактирования, ее необходимо откомпилировать, устранить синтаксические и семантические ошибки и…