И процедуры-функции Function
Постановка задачи
Заданы длины трех отрезков прямой. Определить, можно ли с помощью этих отрезков построить треугольник. Если можно, то какой треугольник можно построить: прямоугольный, тупоугольный или остроугольный. Для треугольника вычислить его площадь.
Анализ задачи
Анализ постановки задачи показывает, что в алгоритме задачи должны быть элементы ветвящейся структуры. В зависимости от длин заданных отрезков может быть построен разного типа треугольник. Исходные данные: значения длин трех отрезков A, B, C. Результат: 4 возможных сообщения и площадь треугольника.
При разработке алгоритма предусмотрим создание процедуры-подпрограммы Треугольник() для определения возможности построения треугольника и его типа, а также создания процедуры-функции Площадь(), вычисляющей площадь треугольника.
Алгоритм задачи
На рис. 8.1 – 8.4 приведены блок-схемы алгоритма.
Здесь реализован пример нисходящего проектирования схемы алгоритма. На рис. 8.1 алгоритм представлен в наиболее общем виде, а на остальных схемах (рис. 8.2 – 8.4) он детализируется.
Разработка пользовательского интерфейса
Один из вариантов разработки интерфейса формы представлен на рис.8.5.
Откройте приложение Visual Basic и создайте новый проект, следуя технологии, изложенной в задании № 1. Проект сохраните в своей папке под именем Процедуры_СвоиИнициалы.vbp. Введите Имя (Name)формы frmProc, а Название Caption) – Процедуры и функции.
Затем разработайте интерфейс новой формы. Интерфейс связан с тремя основными блоками: ввода исходных данных, блока вычислений, вывода результатов.
На рис. 8.5 маркерами выделен элемент управления Надпись (Label6) для размещения сообщения Soob(см. процедуру Треугольник).
Ниже в табл. 8.1 приведены объекты и их свойства, которые должны быть размещены на форме frmMatr. Эти объекты изображены также на рис. 8.5.
Таблица 8.1
Объект | Свойство | Установленное значение |
Label1 | Caption | Введите длины отрезков: |
Label2 | Caption | А |
Text1 | Имя | txtA |
Text | Пусто (для ввода А) | |
Label3 | Caption | В |
Text2 | Имя | txtB |
Text | Пусто (для ввода В) | |
Label4 | Caption | С |
Text3 | Имя | txtC |
Text | Пусто (для ввода С) | |
Label5 | Caption | Треугольник можно построить? |
Command1 | Имя | cmdОпределить |
Caption | Определить | |
Enabled | False | |
Label6 | Имя | lblMsg |
Caption | Пусто (для вывода сообщения) | |
Label7 | Caption | Площадь треугольника: |
Label8 | Имя | lblS |
Caption | Пусто (для вывода площади) | |
Command2 | Имя | cmdS |
Caption | Площадь | |
Enabled | False | |
Command3 | Имя | cmdEnd |
Caption | Выход |
Для свойства Fontвсех надписей на Labelи Commandвыберите размер шрифта в 10 пунктов.
Написание программного кода
Перед написанием программного кода в процедурах следует определить, какие переменные в этом проекте будут глобальными (Public). Такими переменными можно принять длины отрезков. Сделайте это следующим образом:
§ установите курсор на строку Проект и щелкните правой кнопкой мыши;
§ в появившемся контекстном меню выполните команду Добавить ] Модуль;
§ щелкните на плюс перед словом Модуль и затем щелкните дважды на слове Модуль1;
§ в открывшемся Окне написания кода в разделе (General)ниже слов Option Explicit (явный выбор) введите Public sngA As Single, sngB As Single, sngC As Single.
В этом же стандартном Модуле1 напишите коды процедур типа Sub и Function. Если процедура написана в модуле, то она становится процедурой общего назначения, т. е. к ней можно обратиться из любой формы проекта, в котором она разработана.
Для процедуры Sub Треугольник напишите следующий код:
Sub Треугольник(A As Single, B As Single, C As Single, strMsg As String)
If (A + B) > C And (A + C) > B And (B + C) > A Then
If (A * A + B * B) < C * C Or (A * A + C * C) _
< B * B Or (B * B + C * C) < A * A Then
strMsg = "Да! ТУПОУГОЛЬНЫЙ."
ElseIf (A * A + B * B) = C * C Or (A * A + C * C) _
= B * B Or (B * B + C * C) = A * A Then
strMsg = "Да! ПРЯМОУГОЛЬНЫЙ."
Else
strMsg = "Да! ОСТРОУГОЛЬНЫЙ."
End If
Else
strMsg = "Нет! НЕЛЬЗЯ!"
End If
End Sub
Для процедуры-функции Function Площадь напишите следующий код:
Function Площадь()
Dim P As Single
P = (sngA + sngB + sngC) / 2
Площадь = Sqr(P * (P - sngA) * (P - sngB) * (P - sngC))
End Function
Для события Click кнопки cmdОпределить напишите следующий код:
Private Sub cmdОпределить_Click()
Dim Soob As String
sngA = Val(txtA): sngB = Val(txtB): sngC = Val(txtC)
'обращение к процедуре Треугольник с заменой формальных параметров
'А, В, С, strMsg на фактические параметры sngA, sngB, sngC, Soob
Треугольник sngA, sngB, sngC, Soob
Label6.Caption = Soob ‘ вывод сообщения на форму
If Soob <> "Нет! НЕЛЬЗЯ!" Then
‘ если треугольник можно построить, то
‘ происходит разблокировка кнопки Command2 (Площадь)
Command2.Enabled = True
End If
End Sub
Для события Click кнопки cmdS (Площадь) напишите следующий код:
Private Sub cmdS_Click()
lblS.Caption = Format(Площадь, "0.00")
End Sub
Для события LostFocus (потеря фокуса) текстового поля txtС напишите следующий код:
Private Sub txtC_LostFocus()
If txtA <> "" And txtB <> "" And txtC <> "" Then
cmdОпределить.Enabled = True
cmdОпределить.SetFocus
Else
cmdОпределить.Enabled = False
cmdS.Enabled = False
txtA.SetFocus
End If
End Sub
Для события Click кнопки cmdEnd (Выход) напишите следующий код:
Private Sub cmdEnd_Click()
Unload Me ‘Закрытие формы frmProc
End Sub
После выполнения этого задания получите у преподавателя свой вариант задачи и выполните его самостоятельно. Перед программированием на компьютере в тетради составьте алгоритм задачи, проведите разработку интерфейса формы и напишите коды программы.
Дата добавления: 2015-02-05; просмотров: 1350;