Студопедия — End Sub. 8. Проверить правильность работы процедуры btnInput_Click
Студопедия Главная Случайная страница Обратная связь

Разделы: Автомобили Астрономия Биология География Дом и сад Другие языки Другое Информатика История Культура Литература Логика Математика Медицина Металлургия Механика Образование Охрана труда Педагогика Политика Право Психология Религия Риторика Социология Спорт Строительство Технология Туризм Физика Философия Финансы Химия Черчение Экология Экономика Электроника

End Sub. 8. Проверить правильность работы процедуры btnInput_Click






 

8. Проверить правильность работы процедуры btnInput _ Click. Следует организовать пошаговое выполнение оператора цикла, в котором элемент массива b(i) получает значение, вводимое с помощью функции InputBox, и просмотреть значения переменных b(i) и i. Работу приложения нужно остановить перед оператором цикла. Также следует сформировать список переменных, значение которых будем просматривать во время отладки. Для этого выполнить следующие действия:

8.1. Установить точку останова в первой строке оператора For, щелкнув по полосе индикатора (серая полоса слева) в строке For i=1 To 10. Строка закрасилась бордовым цветом, на полоске индикатора появилась красная точка.

8.2. Вывести панель инструментов «Отладка», выполнив из меню команду Вид\Панели инструментов\Отладка.

8.3. Нажать кнопку (Запуск). В окне приложения Отладка нажать кнопку Ввод чисел, затем в информационном диалоговом окне с сообщением нажать OK. Работа программы прерывается на операторе цикла. Строка, на которой произошел останов, выделяется желтым цветом и в полосе индикатора помечается маркером ð;.

8.4. Выделить в тексте процедуры b(i) и выполнить команду контекстного меню «Добавить контрольное значение». На экране появилось окно «Контрольные значения 1», в которое добавилась переменная b(i).

8.5. Аналогично добавить в окно «Контрольные значения» переменную i.

8.6. Нажать кнопку (Шаг с заходом) или клавишу F11. Наблюдать, как маркер ð; перешел на следующую строчку. Повторно выполнить команду «Шаг с заходом» и в окно Ввод числа ввести любое числовое значение, например 7, нажать OK. Тело цикла выполнилось один раз.

8.7. Если окно «Контрольные значения» отсутствует на экране, открыть его, нажав кнопку . В окне «Контрольные значения» наблюдать, что на этом шаге выполнения оператора цикла переменная i получила значение 1, а переменная b(i) – введенное значение (7).

8.8. Продолжить пошаговое выполнение оператора цикла, повторяя указанные в пунктах 8.6 и 8.7 действия. Если на каждом шаге выполнения оператора цикла переменная i увеличивает свое значение на 1, а переменная b(i) получает значение, равное введенному в окне Ввод числа значению, то процедура работает правильно.

8.9. Завершить работу приложения, нажав кнопку (Остановить отладку).

8.10. Снять точку останова, щелкнув по маркеру точки останова (красная точка на полоске индикатора).

9. Очистить окно «Контрольные значения», выбрав команду «Очистить все».

10. Перейти в окно конструктора форм.

11. С событием Click кнопки btnSum связать процедуру нахождения суммы чисел. Ввести следующий текст:

 

Private Sub btnSum_Click(sender As Object, e As EventArgs) Handles btnSum.Click

Dim b(10) As Short

Dim sum As Integer, i As Byte

sum = 0

For i = 1 To 10

sum = sum + b(i)

Next

MsgBox("сумма чисел равна" + Str(sum), MsgBoxStyle.OkOnly)

End Sub

12. Запустить программу на выполнение (кнопка (Запуск)). В окне Отладка нажать кнопку Ввод чисел и ввести числа 1, 2, 3, 4, 5, 6, 7, 8, 9, 10. Затем нажать кнопку Сумма чисел. В результате работы процедуры btnSum_Click сумма чисел почему-то равна 0.

13. Выполнить отладку процедуры btnSum_Click.

Для этого установить точку останова в начало оператора цикла процедуры подсчета суммы чисел. Нажать кнопку (Запуск). В окне Отладка нажать кнопку Ввод чисел и ввести числа: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10. Затем нажать кнопку Сумма чисел, и после прерывания работы программы добавить в окно Контрольные знаячения переменные Sum, i, b(i). Выполнить пошаговое выполнение процедуры до конца. Наблюдать за значениями переменных Sum, i, b(i) в окне Контрольные значения.

Переменная i меняет свое значение на каждом шаге выполнения оператора цикла. Переменные Sum и b(i) остаются равными 0, несмотря на то, что при выполнении процедуры btnSum_Click были введены числа, отличные от 0. Ошибка в неправильном объявлении массива b.

Массив объявлен в каждой процедуре и является локальной переменной. Значение локальной переменной доступно только в той процедуре, где она объявлена. Поэтому те значения, которые вводятся в массив в процедуре btnInput_Click, не доступны в процедуре btnSum_Click. Элементы массива b процедуры btnSum_Click получили значения 0 при объявлении массива, поэтому и сумма равна 0.

Необходимо значения массива b сделать доступными для всех процедур модуля формы. Для этого его нужно объявить в секции FormOtl Объявления.

14. Внести исправления в модуль формы:

· выделить строку с объявлением массива в процедуре btnSum_Click и переместить ее в буфер обмена (команда Cut);

· вставить (команда Paste) строку из буфера обмена в секцию FormOtl Объявления;

· выделить строку с объявлением массива в процедуре
btnInput_Click и удалить (клавиша Delete).

15. Проверить правильность работы процедуры btnSum_Click. Для этого запустить программу на выполнение, в окне Отладка нажать кнопку Ввод чисел и ввести числа: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10. Затем нажать кнопку Сумма чисел, и после прерывания работы программы выполнить пошаговое выполнение процедуры до конца. Наблюдать за значениями переменных Sum, i, b(i) в окне Контрольные значения. Если сумма чисел равна 55, процедура работает правильно. Завершить работу программы.

16. Самостоятельно разработать процедуру нахождения произведения чисел (элементов массива b), добавить кнопку с именем btnPr в форму. Связать разработанную процедуру c событием Click кнопки btnPr. Выполнить отладку процедуры.

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

Для этого:

· добавить в форму кнопку с именем btnSa и надписью «Ср. арифм. четных чисел»;

· связать с событием Click кнопки btnSa следующую процедуру:

 

Private Sub btnSa_Click(sender As Object, e As EventArgs) Handles btnSa.Click

Dim i As Byte, k As Byte

Dim sum As Single, sa As Single

sum = 0

For i = 1 To 10

If b(i) Mod 2 = 0 Then

sum = summ + b(i)

k = k + 1

End If

Next

sa = sum / k

MsgBox("Среднее арифметическое четных чисел" + Str(sa), vbOKOnly, "Результат")

End Sub

18. При попытке выполнить программу выведется сообщение об ошибке: Чтобы понять, в чём дело необходимо посмотреть на содержимое окна «Список ошибок», в нём вы увидите следующее: поле «Описание» будет содержать текст – «’summ’ не объявлен», а поле «Строка» – номер ошибочной строки. Данное сообщение говорит о том, что переменная summ не объявлена. Действительно, если посмотреть на процедуру btnSa_Click, мы нигде не увидим объявления этой переменной. Как теперь стало понятно имя переменной задано неправильно – надо удалить лишнюю букву m,чтобы имя переменной стало – sum.

19. Ввести большие числа 11111, 22222, 33333, 44444 и т.д. При вводе числа большего 32767 программа завершается аварийно, так как возникает ошибка выполнения – Необработанное исключение типа "System.OverflowException" в Otladka.exe, т.е. ошибка переполнения. Цветом выделяется строка с оператором, выполнение которого привело к возникновению ошибки. Это строка, в которой вызывается функция InputBox для ввода значения в элемент массива b(i). Так как тип элементов массива Short, то вводимое значение не должно превышать 32767. Если требуется работать с большими по значению целыми числами, нужно выбрать тип Integer или Long.

20. Перейти из режима отладки в режим конструктора. Для этого нажать кнопку (Остановить отладку) и в секции
FormOtl Объявления изменить тип элементов массива b(10) Short на Long. Запустить программу и повторить ввод больших чисел. Затем проверить работу процедур нахождение суммы чисел и среднего арифметического четных чисел. В случае возникновения ошибки OverflowException (переполнение), изменить тип переменной, при работе с которой произошло переполнение.

21. Ввести числа 1, 3, 5, 7, 9, 11, 13, 15, 17, 19 (кнопка Ввод чисел). Найти среднее арифметическое (кнопка Ср.арифм. четных чисел). При попытки расчёта среднего арифметического, программа выдаст строку: «Среднее арифметическое четных чисел NaN». Чтобы определить причину возникновения ошибки следует просмотреть значения всех переменных процедуры. Для этого поставим точку останова на строке sa = sum / k. После остановки программы на этой строке посмотрим значения переменных sum и k, они оказались равными нулю. Значит, ошибка в расчёте среднего арифметического возникла из-за деления на нуль. Можно воспользоваться любым из рассмотренных выше способов просмотра значения переменной, однако мы сделает это новым способом – нажать кнопку (Локальные). В окне «Локальные» отображаются все локальные переменные и их текущее значение. Использовать возможности отладчика, и посмотреть, почему переменные sum и k остаются равными нулю. Для этого:

- установить точку останова на строке sum = 0;

- выполнить трассировку процедуры, наблюдая за выделением в строках и значением переменных в окне «Локальные». При выполнении строки с оператором If строки с операторами sum = sum + b(i) и k = k + 1 пропускаются, что означает, что они не выполняются, поэтому значения переменных sum и k остаются равными 0.

- перейти из режима отладки в режим конструктора. Для этого нажать кнопку (Остановить отладку).

В данном случае ошибка в расчёте возникла при делении нуля на нуль, и произошло это в том случае, когда были введены одни нечётные числа. Если бы результирующая переменная sa имела бы тип не Single, а какой-нибудь целочисленный тип данных, то произошло бы переполнение. Следует предусмотреть в алгоритме процедуры обработку ошибок выполнения.

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

22. Добавить процедуру Function в модуль формы. Для этого следует в конец файла с кодом программы, между строками
End Sub и End Class ввести следующий текст.

23. Ввести текст процедуры:

 

Public Function Obr_Err(ByVal Err_Num As Integer) As Integer

Dim txt As String

Select Case Err_Num

Case 6 ' переполнение переменной

txt = "Произошло переполнение переменной"

Obr_Err = 2

Case Else ' нераспознанная ошибка

txt = "Нераспознанная ошибка выполнения " & Err_Num

Obr_Err = 3

End Select

Err.Clear()

MsgBox(txt, vbOKOnly, "Ошибки выполнения")

End Function

Функция анализирует передаваемый ей код ошибки (Err_Num), выдает предупредительное сообщение и возвращает числовое значение, определяющее дальнейшее действие программы.

24. Отредактировать процедуру btnInput_Click в соответствии с приведенным ниже текстом:

 

Private Sub btnInput_Click(sender As Object, e As EventArgs) Handles btnInput.Click

Dim i As Byte







Дата добавления: 2015-10-15; просмотров: 446. Нарушение авторских прав; Мы поможем в написании вашей работы!



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

Расчетные и графические задания Равновесный объем - это объем, определяемый равенством спроса и предложения...

Кардиналистский и ординалистский подходы Кардиналистский (количественный подход) к анализу полезности основан на представлении о возможности измерения различных благ в условных единицах полезности...

Обзор компонентов Multisim Компоненты – это основа любой схемы, это все элементы, из которых она состоит. Multisim оперирует с двумя категориями...

Виды сухожильных швов После выделения культи сухожилия и эвакуации гематомы приступают к восстановлению целостности сухожилия...

КОНСТРУКЦИЯ КОЛЕСНОЙ ПАРЫ ВАГОНА Тип колёсной пары определяется типом оси и диаметром колес. Согласно ГОСТ 4835-2006* устанавливаются типы колесных пар для грузовых вагонов с осями РУ1Ш и РВ2Ш и колесами диаметром по кругу катания 957 мм. Номинальный диаметр колеса – 950 мм...

Философские школы эпохи эллинизма (неоплатонизм, эпикуреизм, стоицизм, скептицизм). Эпоха эллинизма со времени походов Александра Македонского, в результате которых была образована гигантская империя от Индии на востоке до Греции и Македонии на западе...

Менадиона натрия бисульфит (Викасол) Групповая принадлежность •Синтетический аналог витамина K, жирорастворимый, коагулянт...

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

Дренирование желчных протоков Показаниями к дренированию желчных протоков являются декомпрессия на фоне внутрипротоковой гипертензии, интраоперационная холангиография, контроль за динамикой восстановления пассажа желчи в 12-перстную кишку...

Studopedia.info - Студопедия - 2014-2024 год . (0.01 сек.) русская версия | украинская версия