И процедуры-функции 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;


Поиск по сайту:

При помощи поиска вы сможете найти нужную вам информацию.

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

Если вам перенёс пользу информационный материал, или помог в учебе – поделитесь этим сайтом с друзьями и знакомыми.
helpiks.org - Хелпикс.Орг - 2014-2024 год. Материал сайта представляется для ознакомительного и учебного использования. | Поддержка
Генерация страницы за: 0.014 сек.