Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Методичка_VB_ч_1_МГУС.doc
Скачиваний:
45
Добавлен:
23.08.2019
Размер:
1.41 Mб
Скачать

Задание № 8. Процедуры-подпрограммы Sub и процедуры-функции 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

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