Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Пример отладки программы




Рассмотрим процесс отладки программы, решающей уравнение вида АХ+В=0 без сохранения данных в файле (постановку задачи см. в гл. 3). Будем считать, что форма содержит только элементы, помещенные на вкладке "Данные" (рис. 3.5), и имеет вид (рис. 8.6). Имена текстовых окон для ввода коэффициентов TBA и TBB, а также имя метки для вывода корня LBX, помещены внутри графических изображений указанных объектов. Имена СВ1, СВ2 и СВ3 присвоены командным кнопкам. Имена данных А,В,Х для коэффициентов a,b и корня Х соответственно. Входные и выходные данные

 
 

 


Рис. 8.6. Форма отлаживаемого
программного средства

хранятся в свойствах TBA.Text, TBB.Text и LBX.Caption. Р-граф программы показан на рис. 8.7, условные обозначения к рис. 8.7 приведены в табл. 8.1. Структура программы показана на рис. 8.8 и включает в себя три процедуры, одну функцию вычисления корня и три обработчика событий, обрабатывающих нажатия командных кнопок CB1_Click(), CB2.Click() и CB3_Click(). Вместо текста процедур на рис. 8.8 показаны "заглушки", имитирующие работу процедур.

 
 
 
ВХОД
 

 


Рис. 8.7. Р-граф программы

 


Таблица 8.1 Условные обозначения к рис. 8.7   Реализующая процедура (функция) Условия         Действия Процедура InDan() Реализуется объектами управления формой То же То же
Соответствующее действие или условие Нажата кнопка завершения программы Нажата кнопка СВ2 "Корень" Нажата кнопка СВ1 "Очистить" Введен символ, который можно рассматривать как допустимый при вводе чисел Инициализация данных (присвоение им начальных значений) Нажатие доступной кнопки, щелчок мыши или ввод символа Выбор объекта ТВА Выбор объекта ТВВ
Обозначение Выход Корень Очистить Введен символ числа Init Ввод команды Активизация TBА Активизация TBB

 

Продолжение табл. 8.1   Реализующая процедура (функция) Функция MessX и оператор присваивания Реализуется объектом Text Box Реализуется объектом Text Box Процедура ProgEnd Состояния        
Соответствующее действие или условие Расчет корня уравнения и вывод в метку LBX Добавление символа в ТВА.Техt Добавление символа в ТВВ.Техt Завершение программы Начата работа программы, на экране видна форма, ожидается ввод команды или символа На экране видна форма, введена команда Вычислены коэффициенты и корень, сформировано сообщение о корне В буфер клавиатуры введен произвольный символ
Обозначение LBX.Caption=MessX Simb® TBA.Text Simb® TBB.Text Зав. прог Вход, 1      

Структура программы

Имя модуля, объекта, секции Содержание
OpDan Описание данных a,b,x Public a as single: Public b as single: Public x as single
Форма Form1
Секция General Sub InDan() 'Инициализация данных I=MsgBox("Инициализируются данные", vbOkOnly,"") End sub Sub NullDan() 'Очистка формы и данных I=MsgBox("Очистка формы и данных", vbOkOnly,"") End sub Function MessX() 'Вычисление корня I=MsgBox("Вычислено а=10, b=5, x=-2", vbOkOnly,"") MessX= "-2" End function Sub EndProg() 'Завершение программы I=MsgBox("Программа завершена", vbOkOnly, "") End sub
Form1 Sub Form1_Load() 'Загрузка формы Call InDan End sub Sub Form1_Unload 'Выгрузка формы из памяти Call EndProg() End sub
CB1 Sub CB1_Click() 'Нажатие кнопки Очистить Call NullDan End sub
CB2 Sub CB1_Click() 'Нажатие кнопки Корень LBX.Caption=MessX() End sub
CB3 Sub CB3_Click() 'завершение программы Call EndProg End End sub

Рис. 8.8. Структура программы

 

При данном коде программы происходит тестирование интерфейса. Программа должна реагировать на нажатия кнопок появлением соответствующих сообщений, щелчки по объектам Text Box должны устанавливать внутрь объектов курсор, ввод символа должен изменять содержимое активного объекта Text Box. Карта тестирования интерфейса приведена в табл. 8.2.

Таблица 8.2

Карта тестирования интерфейса

Название теста Действия программиста Реакция программы
Пуск Запуск программы Появление на экране формы и окна с сообщением "Инициализируются данные"
Инициализация ТВА "Щелчок" мышью по текстовому окну TBA Курсор ставится в ТВА
Инициализация ТВА "Щелчок" мышью по текстовому окну TBB Курсор ставится в ТВВ
Ввод символов Нажимать алфавитно-цифровые клавиши К содержимому активного текстового окна добавляются вводимые символы. При нажатии клавиши "Забой" правый символ в окне стирается
Очистка "Щелчок" мышью по кнопке "Очистить" Появляется сообщение "Очистка формы"
Расчет "Щелчок" мышью по кнопке "Корень" Появляется сообщение "Вычислено а=10, b=5, x= -2"
Завершение программы "Щелчок" мышью по кнопке "Выход" или по кнопке "Х" Появляется сообщение "Программа завершена"

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

Sub InDan() 'Инициализация данных OpDan.a=0: OpDan.b=0: OpDan.x=0 TBA.Text="": NBB.Text="" LBX.Caption="" I=MsgBox("Инициализируются данные"+str(OpDan.a)+" "+str(OpDan.b) +" "+str(OpDan.x), vbOkOnly,"") end sub Рис. 8.9. Текст процедуры InDan() в период отладки Начинаем с процедуры InDan. Назначение процедуры – обнуление данных и очистка формы. Текст процедуры в период отладки приведен на рис. 8.9. В результате тестирования процедуры должны быть достигнуты результаты: переменные a,b,x модуля OpDan должны принять значение нуль, текстовые окна и метка LBX должны быть пустыми.
Sub NullDan() 'Очистка формы и данных OpDan.a=0: OpDan.b=0: OpDan.x=0 TBA.Text="": NBB.Text="" LBX.Caption="" I=MsgBox("Очистка формы и данных" +str(OpDan.a)+""+str(OpDan.b)+"" +str(OpDan.x), vbOkOnly,"") End sub Рис. 8.10. Текст процедуры NullDan() в момент отладки Далее отлаживаем процедуру очистки формы. Ее текст в момент отладки приведен на рис. 8.10. Текст процедуры можно скопировать из процедуры InDan, т.к. она выполняет аналогичное назначение. В данном случае вполне можно вместо двух процедур иметь одну. Результат отладки процедуры – нулевые значения данных, описанных в модуле OpDan и пустые текстовые окна и метка LBX.
Процесс отладки обеих процедур одинаков. Запустив программу на исполнение можно по сообщениям проконтролировать правильность выполнения процедур. В случае появления неверных результатов можно перейти в пошаговый режим и, наводя указатель мыши на имена данных, контролировать результаты вычислений. Возможно и применение пошагового режима с включением окна Watches, в которое следует добавить имена перечисленных выше переменных.
Function MessX() 'Вычисление корня Dim S as String OpDan.a=val(TBA.Text) OpDan.b=val(TBB.Text) If a<>0 then S=str(-b/a) Elseif ((a=0) and (b=0)) then S="Неопределенный корень" Elseif ((a=0) and (b=0)) then S="Корень не существует" End if MessX= S TBA.Text = str(OpDan.a) TBB.Text = str(OpDan.b) LBX.Caption = str(OpDan.b) I=MsgBox("Вычислены а, b, x", vbOkOnly,"") End function Рис. 8.11. Текст функции MessX в момент отладки Отладка функции MessX (рис. 8.10) выполняется в пошаговом режиме с установкой курсора на первый оператор текста функции. Целесообразно включить окна Watches и Locals и добавить в первое из них имена переменных из модуля OpDan, а во второе будет выводиться значение переменной S. Для отладки используются три набора данных: · a=10.6, b=31.8; · a=0, b=0; · a=0, b=10. Программа запускается командой "Debug/Run to Cursor". Наборы данных вводятся через окна формы. Выполнение программы прерывается на операторе OpDan.a=val(TBA.Text). Далее, применяя команду "Debug/Step Into", выполняем программу в пошаговом режиме и отслеживаем значения переменных.
     

Первый набор данных инициирует выполнение оператора S=str(-b/a), второй – оператора S="Неопределенный корень", третий – оператора S="Корень не существует". В первом случае значение корня равно (– 3). Вычисленные значения коэффициентов и корня можно наблюдать на форме в текстовых окнах и метке LBX[22].

Тестирование завершенного кода программы выполняется в соответствии с картой тестирования программы (табл. 8.3).

Таблица 8.3

Карта тестирования программы

Название теста Действия программиста Реакция программы
Пуск Запуск программы Появление на экране формы и окна MsgBox с сообщением "Инициализируются данные"
Инициализация ТВА "Щелчок" мышью по текстовому окну TBA Курсор ставится в ТВА
Инициализация ТВА "Щелчок" мышью по текстовому окну TBB Курсор ставится в ТВВ
Ввод набора данных Ввести набор данных · a=10.6, b=31.8; · a=0, b=0; · a=0, b=10.2 В активном текстовом окне (ТВА или ТВВ) появляются вводимые данные. Должна действовать клавиша "Забой2
Очистка "Щелчок" мышью по кнопке "Очистить" Появляется сообщение "Очистка формы", далее очищаются текстовые окна и метка LBX
Расчет "Щелчок" мышью по кнопке "Корень" Появляется сообщение "Вычислены а, b, x", на форме появляются вычисленные значения коэффициентов и корней
Возврат Повторить один за другим тесты "Очистка", "Ввод данных" и "Расчет" Очищается форма, вводятся данные, вычисляется корень, выводятся коэффициенты (повторно) и корень
Завершение программы "Щелчок" мышью по кнопке "Выход" или по кнопке "Х" Появляется сообщение "Программа завершена"

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

8.2. Создание инсталляционного комплекта
программного средства

После завершения работы по отладке программного средства достаточно легко получить ее исполняемый код. Он может быть построен в двух формах: как независимый исполняемый код и как P-cod (псевдокод), для исполнения которого необходим файл, входящий в комплект поставки Visual Basic и обеспечивающий выполнение программы. Первый код длиннее, но может работать без всяких добавок системы Visual Basic, второй код короче, но требует наличия указанного файла. Обычно предпочитают первый вариант. Способ компиляции указывается в окне "Свойства проекта".

Для построения инсталляционного комплекта (дистрибутива) запускается специальное приложение (Application SetupWizard для Visual Basic 5 и Package and Deployment Wizard для Visual Basic 6). Процесс создания дистрибутива происходит в диалоговом режиме в несколько шагов. Общий вид окон приложения (мастера) Application Setup Wizard приведен на рис. 8.12.

а) б) Рис. 8.12. Окна приложения Application SetUp Wizard "Выбор проекта и настройка" (а) и "Метод распространения" (б) В первом окне Application Setup Wizard выводятся различные сообщения, в частности, о назначении программы и основных действиях, выполняемых ею. Это окно здесь не показано. Следующим шагом является выбор проекта для создаваемого инсталляционного комплекта и настройка работы приложения. Для этой цели служит окно "Выбор проекта и настройка" (рис. 8.12,а). В этом окне устанавливается путь к файлу проекта и опции, позволяющие открыть программу установки с созданием или без создания зависимого файла, создать комплект поставки для распространения через Internet и просто создать зависимый файл. В следующем окне "Метод распространения" (рис. 8.12,б) выбирается способ размещения комплекта на носителях: на одной дискете, в одном каталоге на жестком диске для копирования на CD-Rom или в нескольких каталогах с именами Disk1, Disk2, … для создания комплекта дискет.

 

а) б) Рис. 8.13. Окна приложения Application Setup Wizard "Каталог-приемник" (а) и "Итоговый файл" (б) В следующем окне делается выбор каталога-приемника, который будет содержать создаваемый инсталляционный комплект. В этом окне указывается диск и путь к файлам инсталляционного комплекта. Дерево папок позволяет выбрать нужный путь к указанным файлам. В следующем окне мастера указываются серверные и локальные компоненты ActiveX. Это окно на рисунке не показано. В предпоследнем окне приложения "Итоговый файл" (рис. 8.13,б) показаны файлы, присоединяемые к файлам проекта. Как правило, это библиотеки *.dll. Приложение Application Setup Wizard автоматически составляет список файлов, которые необходимо добавить в комплект. Имеется возможность добавить свои файлы, кроме добавляемых приложением автоматически. В последних двух окнах выводятся сообщения о том, что комплект собран, и работа приложения завершена. Эти окна

ничем не примечательны и в пособии не показаны.




Поделиться с друзьями:


Дата добавления: 2014-11-29; Просмотров: 574; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.024 сек.