Dim x As Double, y As Double, z As Double
внутрь событийной процедуры, при этом оставив такую же строку с описанием глобальных объектов (в самом начале программного кода модуля формы, перед описаниями всех процедур). Обоснуйте результат работы измененного программного кода, выполнив отладку проекта по шагам.
9)Снова измените, программный код третьего проекта, убрав строку с описанием глобальных объектов (закомментируйте или удалите ее). Объясните возникшие ошибки при выполнив отладку проекта по шагам.
10)Результаты выполнения трех проектов должны быть одинаковыми (рис. 4.3.7-8).
Рис. 4.3.7-8. Результаты выполнения Проекта 3.1.1
3.5. Доказательства правильности результатов:
Для доказательства правильности результатов выполните расчет арифметического выражения с использованием калькулятора или программы Microsoft Excel, сделайте вывод о том, что результаты, полученные вручную, подтверждают правильность выполнения программы.
4) Реализация 2-го задания:
Вычисления периметра и площади треугольника по заданным координатам трех его вершин.
4.1) Задание на разработку задачи:
Создайте приложение с именем Проект 3.4, для вычисления периметра и площади треугольника по заданным координатам трех его вершин: x1, y1; x2, y2; x3, y4.3.
Т.е. определите: Р – периметр треугольника и S – площадь
треугольника. Ограничения на значения исходных данных и их
соотношения: А>0, В>0, C>0, А+В>С, А+C>В, В+C>А
одновременно.
4.2) Формализация и уточнение задания:
Для решения задачи существуют известные формулы:
Р = А + В + С;
S= (формула Герона);
A = ; B = ;
C = .
Где Рр = Р/2– полупериметр; A, B, C – стороны треугольника.
В соответствии с требованиями задания разобьем решение задачи на несколько отдельных задач и создадим процедуры пользователя, реализующие эти задачи:
· процедуру-Function ДлинаОтрезка(), вычисляющую длину отрезка по координатам двух точек;
· процедуру-Sub PS(), вычисляющую периметр и площадь треугольника;
· процедуру- Function vvod() для ввода действительного числа из объекта типа TextBox;
· процедуру-Sub vivod() для вывода действительного числа в объект типа TextBox.
Выбор типа процедуры (Function или Sub) определяется следующими критериями. Процедуры-функции Function предназначены для вычислений и могут быть частью выражения. Результатом выполнения процедуры-Function является значение какой-либо одной величины числового, строкового или логического типа, которое функция возвращает или через свое имя, или оператором Return. Следовательно, ДлинаОтрезка( )и vvod( ) – это процедуры типа Function.
Если же процедура должна вычислить и возвратить несколько величин (PS()), или просто выполнить определенные действия, не возвращая никаких значений (vivod()), то такую процедуру следует оформить как процедуру-Sub.
4.3) Элементы, разрабатываемого проекта:
4.3.1)Графический интерфейс пользователя:
Разработайте графический интерфейс пользователя.
Форма приложения изображена на рис. 4.3.7-9.
Рис. 4.3.7-9. Форма проекта Проект 3.4
4.3.2)Таблица свойств объектов:
Определите и сведите в таблицу свойства объектов
(эта таблица аналогична табл. 4.2.8-2);
4.3.3)Схемы алгоритмов процедур проекта Проект 3.4
Разработайте схемы алгоритмов процедур PS()и
ДлинаОтрезка() приведены на рис. 4.2.8-10, а процедура
события на рис. 4.2.8-11.
Рис. 4.3.7-10. Схемы алгоритмов процедур ДлинаОтрезка() и PS() Проекта 3.4
Рис. 4.3.7-11. Схемы алгоритмов событийной процедуры
проектаПроект 3.4
4.3.4)Программный код проекта Проект 3.4
Разработайте программный код проекта (рис. 4.3.7-9).
Imports System.Math Public Class Form1 'Функция ввода координаты точки в TextBox Function vvod(ByVal T As TextBox) As Single Return CSng(Val(T.Text)) End Function 'Процедура вывода результата в TextBox Sub vivod(ByVal Z As Single, ByVal T As TextBox) T.Text = CStr(Z) End Sub 'Функция вычисления длины отрезка по координатам двух точек Public Function ДлинаОтрезка(ByVal x1 As Single, _ ByVal y1 As Single, ByVal x2 As Single, _ ByVal y2 As Single) As Single Return CSng(Sqrt((x2 - x1) ^ 2 + (y2 - y1) ^ 2)) End Function 'Процедура вычисления периметра и площади треугольника Sub PS(ByVal x1 As Single, ByVal y1 As Single, ByVal x2 As_ Single, ByVal y2 As Single, ByVal x3 As Single,_ ByVal y3 As Single, ByRef P As Single, ByRef S As Single) Dim A, B, C, Pp As Single A = ДлинаОтрезка(x1, y1, x2, y2) 'Вызов ф-ции выч-я дл.отр. B = ДлинаОтрезка(x2, y2, x3, y3) C = ДлинаОтрезка(x3, y3, x1, y1) P = (A + B + C) Pp = P / 2 S = CSng(Sqrt(Pp * (Pp - A) * (Pp - B) * (Pp - C))) End Sub Private Sub Button1_Click(sender As Object, _ e As EventArgs) Handles Button1.Click Dim x1, x2, x3, y1, y2, y3, Пер, Пло As Single x1 = vvod(TextBox1) : y1 = vvod(TextBox2) x2 = vvod(TextBox3) : y2 = vvod(TextBox4) x3 = vvod(TextBox5) : y3 = vvod(TextBox6) PS(x1, y1, x2, y2, x3, y3, Пер, Пло) vivod(Пер, TextBox7) : vivod(Пло, TextBox8) End Sub Private Sub Button2_Click(sender As Object, _ e As EventArgs) Handles Button2.Click End End Sub End Class |
Рис. 4.3.7-9. Программный код Проект 3.4
4.4) Результаты выполнения проекта Проект 3.4:
Результаты выполнения проекта приведены на рис. 4.3.7-10:
Рис. 4.3.7-10. Результаты выполнения проекта Проект 3.4
4.5) Доказательство правильности результата:
A = = 2.82843 B = = 2
C = = 2 Р = А + В + С = 6.828427
Рр = Р/2 = 3.414213 S= = 2
4.3.7.6. Контрольные вопросы
1)Какой алгоритм называется линейным?
2)В чем отличие передачи результатов выполнения функций и процедур?
3)Доказывает ли получение правдоподобного результата правильность программы?
4)Какие ошибки могут остаться не выявленными, если не провести проверку (просмотр, прокрутку) программы?
5)Чем тестирование программы отличается от её отладки?
6)Можно ли с помощью тестирования доказать правильность программы?
7)Назовите основные этапы процесса тестирования.
8)В чём отличие синтаксических ошибок от семантических?
9)О чём свидетельствует отсутствие сообщений машины о синтаксических ошибках?
10)Какие разновидности ошибок транслятор не в состоянии обнаружить?
11)Что такое программа?
12)На каком этапе происходит поиск и устранение ошибок в программе?
13)Что такое система программирования?
14)Что такое процедура?
15)Какими преимуществами обладает программа, имеющая процедуры?
16)Какие средства процедурного программирования имеются в языке VB?
17)Каким образом происходит обмен данными между отдельными процедурами программы?
18)Что такое фактические и формальные параметры?
19)Каким образом передать в качестве параметра: константу, переменную, выражение?
20)Как используются глобальные переменные?
21)Как используются локальные переменные?
22)Что происходит при вызове процедуры?
23)Каким образом параметры могут передаваться в процедуру?
24)Какие параметры передаются по значению?
25)Какие параметры передаются по адресу?
26)Что относится к средствам процедурного программирования?
27)Что является результатом выполнения функции?
28)Каким образом надо объявить отдельные переменные, чтобы внутри функции они были локальными?
29)Какой оператор используется для досрочного выхода из функции?
30)Что контролируется при вызове функций и процедур?
31)Как необходимо объявить формальные параметры, чтобы передать параметр-переменную по значению?
32)Как необходимо объявить формальные параметры, чтобы передать параметр-переменную по адресу?
33)Каким образом осуществляется вызов процедуры-функции из вызывающей программы?
34)Что может быть результатом выполнения процедуры?
35)Какой оператор используется для досрочного выхода из процедуры?
36)Где могут находиться описания функций и процедур?
37)Где будет доступна переменная, объявленная с помощью оператора Public?
38)Где может находиться оператор Private?
39)Какие значения имеют переменные в начале программы?
40)Для чего описываются (определяются) процедуры и функции?
41)Как осуществляется вызов процедур?
42)Как осуществляется вызов функций?
43)В чем заключается принцип процедурного программирования?
44)Какие типы процедур существуют в VB .NET?
45)Напишите синтаксис Sub-процедуры, каков синтаксис списка параметров?