- •Содержание
- •Лабораторна робота № 1. Оболонка системи програмування visual basic. Заняття 1
- •1. Запустите Visual Basic и произведите необходимую настройку.
- •2. Задайте различные свойства формы:
- •3. Запустите программу на выполнение.
- •17. Запустите программу на выполнение и проверьте ее работу.
- •20. Сохраните проект на рабочем диске.
- •Лабораторна робота № 1.Этапи розробки windows-додатків в середовищі програмування visual basic (на прикладі створення простого додатку). Заняття 2.
- •1. Постановка задачи
- •3. Напишите программные коды
- •4. Отладьте6 программу
- •Завдання до самостійної роботи № 1 (в,лс,вс).
- •I. Содержательная постановка задачи.
- •II. Математическая постановка задачи.
- •III. Разработка пользовательского интерфейса.
- •Лабораторна робота № 2. Дані в visual basic. Типи даних.
- •Завдання на самостійну (в) й практичну роботу (вс, лс)
- •Лабораторна робота № 3. Область видимості змінної.
- •ИмяФормы. ИмяПеременной
- •Лабораторна робота № 4. Арифметичні вырази й вбудовані функції visual basic
- •Лабораторная работа № 5. Введення-виведення даних. Функція inputbox и msgbox. Вікно й функція inputbox.
- •Лабораторна робота №6. Проектування додатків vb6, що містять лінійні алгоритмічні структури
- •Завдання на самостійну роботу(в,вс,лс)
- •Лабораторна робота № 7. Проектування додатків vb6, що містять галужені алгоритмічні структури. Заняття 1
- •Завдання на самостійну (в) й практичну роботу (вс, лс)
- •Лабораторна робота 7. Проектування додатків vb6, що містять галужені алгоритмічні структури. Заняття 2
- •Завдання на самостійну роботу(в,вс,лс)
- •Лабораторна робота №8. Проектування додатків vb6, що містять циклічні алгоритмічні структури. Заняття 1. Цикли з лічильником
- •Завдання на самостійну роботу(в,вс,лс)
- •Лабораторна робота №8. Проектування додатків vb6, що містять циклічні алгоритмічні структури. Заняття 2. Цикли з умовою
- •Завдання на самостійну роботу(в,вс,лс)
- •Завдання на практичну роботу (вс,лс)
- •Лабораторна робота №9. Проектування додатків vb6, що містять вкладені циклічні алгоритмічні структури. Заняття 1.
- •Завдання на самостійну роботу(в,вс,лс)
- •Лабораторна робота №9. Проектування додатків vb6, що містять вкладені циклічні алгоритмічні структури. Заняття 2
- •Завдання на самостійну роботу(в,вс,лс)
- •Лабораторна робота №10. Проектування додатків vb6, у яких дані організовані у вигляді одновимірних масивів. Заняття 1.
- •Завдання на самостійну роботу(в,вс,лс)
- •Лабораторна робота №10. Проектування додатків vb6, у яких дані організовані у вигляді одновимірних масивів. Заняття 2
- •Завдання на самостійну (в) й практичну роботу (вс,лс)
- •Завдання на самостійну роботу(в,вс,лс)
- •Лабораторна робота №10. Проектування додатків vb6, у яких дані організовані у вигляді одновимірних масивів. Заняття 3. Сортування елементів масиву. Обмін значеннями.
- •Ilорядок действий
- •Завдання на самостійну роботу(в,вс,лс)
- •Завдання на практичну роботу(вс,лс)
- •Лабораторна робота №11. Проектування додатків vb6, у яких дані організовані у вигляді двовимірних масивів
- •Завдання на самостійну роботу(в, вс,лс)
- •Завдання на практичну роботу (вс,лс)
- •Завдання на самостійну роботу(вс,лс)
- •Лабораторна робота №12. Проектування додатків vb6, у яких дані організовані у вигляді структур. Користувальницький тип даних.
- •VbExclamation, "Столько друзей не бывает"
- •VbExclamation, "Поиск не дал результатов"
- •VbExclamation, "Поиск не дал результатов"
- •Мid(Друзья(j).BirthDay, 4, 2) завдання на самостійну роботу(в,вс,лс)
- •Лабораторна робота №13. Модульне програмування. Заняття 1.
- •Завдання на самостійну (в) та практичну роботу (вс,лс) завдання с13.4
- •Лабораторна робота №13. Модульне програмування. Заняття 2
- •InputВох("Задайте любой вопрос", "????")
- •Завдання на самостійну (в) й практичну роботу (вс,лс)
- •Лабораторна робота № 14. Налагодження програм
- •Лабораторна робота № 15. Обробка символьної інформації.
- •Завдання на самостійну роботу(в,вс,лс)
- •Контрольний опрос на практичному занятті (Лс,Вс).
- •Лабораторна робота № 16. Проектування додатків vb6, у яких дані організовані у вигляді файлів на магнітних носіях.
- •Завдання на самостійну роботу(в,вс,лс)
- •Контрольний опрос на практичному занятті (Вс, Лс)
- •Лабораторна робота № 17. Графіка
Лабораторна робота №13. Модульне програмування. Заняття 1.
Общие процедуры При составлении сложной программы ее целесообразно разбить на несколько небольших подпрограмм, чтобы она стала проще для написания, чтения, понимания и внесения изменений. Небольшие подпрограммы — это процедуры, из которых строится одна большая программа. Все процедуры делятся на два типа — процедуры типа Sub(подпрограммы) и процедуры типа Function (функции).
Процедуры типа Sub в свою очередь делятся на два типа:
процедуры обработки событий (Event procedures)
общие процедуры (General procedures)
В предыдущих работах Вы познакомились со встроенными т. е. готовыми к употреблению, процедурами и функциями Visual Basic. Были изучены такие категории встроенных функций, как математические, символьные, системные и др. Встроенные процедуры в языке Visual Basic называются методами. Они применяются к тем или иным объектам. Например, графический метод Circle — встроенная процедура рисования окружностей или эллипсов.
Вы также познакомились с процедурами обработки событий. Эти процедуры, равно как и кнопки, флажки, текстовые поля являются частью пользовательского интерфейса. Они выполняются при условии, что происходит некоторое событие в отношении объекта, для которого они написаны, например, щелчок мыши по какому-нибудь объекту формы. В отличие от встроенных процедур, эти процедуры вы составляете сами (к моменту выполнения данной работы Вы составили достаточно много таких процедур).
Процедуры, которые будут рассматриваться в данной работе не относятся ни к встроенным процедурам, ни к процедурам обработки событий. Это общие процедуры. Общие процедуры, в отличие от процедур обработки событий, начинают "работать" не в ответ на какое-то событие, а после вызова из какого-нибудь места программы. После выпполнения такой процедуры происходит автоматический возврат в то место программы, откуда процедура была вызвана. Каждой вызываемой процедуре присваивается уникальное название — имя процедуры. Кроме того устанавливается перечень входных и выходных данных, которые называются соответственно входными и выходными параметрами процедуры. Входной параметр процедуры — это переменная, значение которой должно быть установлено до начала работы процедуры и которая участвует в работе процедуры. Выходной параметр — это переменная, которая получает свое значение в результате работы процедуры. Прежде чем определить процедуру необходимо четко представить что процедура делает, что у нее на входе и, что на выходе.
Преимущества разбивки npoгpaммы на процедуры:
1. Осутствуют повторения при записи программного кода. Процедура занимает одно место в программе, вызывается много раз из многих мест в программе.
2. Облегчается отладка программы, так как легче искать ошибки в небольших фрагментах программы, чем в большой программе, состоящей из сложно взаимодействующих частей.
3. Сокращается время написания новых программ, (если есть библиотека процедур, созданных ранее, их можно использовать в последующих программах.
Определение общей процедуры
Формат определения общей процедуры: [Private|Public] [Static] Sub ИмяПроцедуры ([СписокПараметров]) Блок операторов [Exit Sub] Блок операторов End Sub
Private|Public — ключевые слова Visual Вasic, устанавливающие к какому классу принадлежит процедура к классу глабальных или к классу локальных процедур. Если Область видимости явно не указана процедура по умолчанию будет отнесена к классу глобальных; Static — ключевое слово, которое свидете льствует о статусе локальных переменных, т.е. переменных объявленных внутри этои процедуры. При наличии этого ключевого слова локальные переменные будуг сохранять значения между последовательными вызовами этой процедуры, при отсутствии слова Static — не будут. Сохранять значения локальных переменных следует в том случае, когда данные должны накапливаться от вызова к вызову процедуры; ИмяПроцедуры — это имя строится по правилам для имен переменных и должно быть уникальным. Процедурам рекомендуется давать имена, которые указывают выполняемые ими действия; СписокПараметров — это переменные (с их типами), которые играют роль входных и выходных параметров процедуры; Блок операторов — это любое количество операторов любого типа, (в том числе и операторов вызова других процедур); Exit Sub — строка программноro кода, которая может использоваться для преждевременного выхода из процедуры |
Размещение npoгpaммнoгo кода общей процедуры
Общая процедура может входить в состав модуля формы (файл frm) или в состав универсального модуля (файл bas).
Если процедура должна входить в состав модуля формы, код записывается в Окне программного кода для данной формы. Для этого можно воспользоваться двумя способами.
Способ 1. Поместить курсор в то место Окна программного кода, которое не принадлежит никакой процедуре. Можно, например, щелкнуть по элементу General списка Object, курсор автоматически переместится в область, общую для процедур модуля формы. Затем набрать на клавиатуре ключевое слово Sub, вслед за которым — Имя Процедуры, а за ним СписокПараметров в скобках. Visual Basic автоматически выдаст последнюю строку: End Sub (рис. 13.1). Ваша задача — ввести в этот "шаблон" необходимые строки определения процедуры.
Рис. 13.1
Способ 2. Выбрать команду Add Procedure в окне Tools. В диалоговом окне (рис. 13.2) в текстовое поле ввести имя создаваемой процедуры и установить соответствующие переключатели.
Эти же два способа можно использовать для размещения процедуры в отдельном модуле с той разницей, что она должна определяться в окне программного кода для этого модуля.
Рис. 13.2
Пример 13.1.
Private Sub Еrrоr()
MsgBox "Вы допустили ошибку!", vbOKOnly + vbCritical, "Ошибка!"
End Sub
С помощью данной процедуры можно только отобразить на экране сообщения (рис. 13.3). Для этой процедуры не требуются какие-либо данные, у нее отсутствуют входные и выходные параметры, о чем свидетельствуют пустые круглые скобки.
Рис. 13.3
Вызов общей процедуры. В то место программы, откуда должен быть сделан вызов процедуры, помещается оператор вызова.
Формат оператора Call ИмяПроцедуры ([СписокПараметровВызова]) Call — ключевое слово языка Visual Basic; ИмяПроцедуры — имя вызываемой процедуры; СписокПараметровВызова — переменные, выражения или их значения, разделенные запятыми. Этот список может отсутствовать. |
Среди параметров вызова могут быть входные и выходные параметры. Они соответствуют входным и выходным параметрам этой процедуры и могут быть не только переменными, но и значениями переменных, а также выражениями. При этом, если в роли входного параметра выступает переменная или выражение с переменными, то к моменту вызова у них должны быть значения. А если переменная выступает в роли выходного параметра, то получит значение в результате выполнения этой процедуры.
В Visual Basic допускается и другая запись оператора вызова (при этом ключевое слово Call не используется).
Формат оператора Имя Процедуры [СписокПараметровВызова] |
Пример Чтобы вызвать процедуру Error() из примера 13.1 или из любой программы, например, из какой-нибудь событийной процедуры, можно использовать один из способов:
Public Sub cmdAnswer _ Click()
Call Еrrоr
End Sub
Public Sub cmdAnswer_Click ()
Еrrоr
End Sub
Далее будет использоваться способ с ключевым словом Call. Способы равнозначны, можно выбрать любой из них. Для Visual Basic безразлично, какой из способов вы будете использовать. Проще набрать лишь название процедуры, но если вы используете ключевое слово Call, то впоследствии легче найти в программе те коды, которые вызывают процедуру. Выберите один способ и придерживайтесь его.
Использование параметров. Когда процедура вызывает общую процедуру, она ссылается на ее имя. Если вызов происходит только по имени, управление передается вызываемой процедуре без дополнительной информации. Но довольно часто вызываемой процедуре требуются дополнительные сведения, на основании которых она сможет выполнять действия или использовать их для расчетов. Любая процедура, которая вызывает общую процедуру, может предоставить все необходимые для ее работы данные. Эти данные называются параметрами.
Пример:
Public Sub Error(text1 As String, text2 As String)
MsgBox text1, vbOKOnly + vbCritical, text2
End Sub
Public Sub cmdAnswer_Click()
Dim t1 As String, t2 As String
t1= "Ответ неверный"
t2= "Ошибка при ответе на вопрос"
Call Error(t1, t2)
End Sub
Процедура Error позволяет вывести в окно текст сообщения и заголовок, которые определяются значениями строковых переменных Text1 и Text2 соответственно, т.е. процедура имеет два входных параметра (рис. 13.4). Для вызова процедуры и передачи ей данных их нужно указать в скобках в качестве параметров вызова. Это сделано с помощью строки
Call Error (t1, t2)
Рис. 13.4
Использование разных имен переменных в вызывающей и вызывемой процедуре позволяет сделать общую процедуру более универсальной. Между параметрами вызывающей и вызываемой процедуры их типами существует однозначное позиционное соответствие слева направо (в примере: t1 — text1, t2— text2). Значение передаваемого параметра может быть присвоено не только переменной в процедуре, но и свойству объекта.
Пример:
Public Sub Message (Text As String)
lblMessage.Caption = Text
End Sub
Данная процедура позволяет изменить значение свойства Caption метки с именем lblMessage на значение, равное значению строковой переменной Техt. Для работы процедуры должно быть передано значение переменной Техt, например:
Саll Message ("На тестирование отведено 10 минут")
или:
Саll Message ("Внимание! Время тестирования истекает.")
или:
Саll Message ("Ваше время истекло!")
Процедура может использовать в своей работе большое количество параметров различных типов.
Пример:
Private Sub Окружность(х0 As Integer, у0 As Integer, хn As Integer, yn As Integer, width As Integer,
х As Integer, у As Integer, r As Integer, color As Integer)
Scale (х0, у0)-(хn, yn)
DrawWidth=width
PSet (х, у), vbRed
Circle (х, у), r, QBColor(color)
End Sub
Данная процедура предназначена для рисования на форме точки красного цвета и окружности произвольного цвета с центром в данной точке (рис. 13.5). До начала рисования производится масштабирование окна формы и задается толщина линии. При вызове процедуры ей необходимо передать девять параметров.
Public Sub cmdRis_C1ick()
Call Окружность(-10, 10, 10, -10, 3, 0, 0, 5,15 * Rnd())
End Sub
Рис. 13.5
Теоретически никаких ограничений на количество параметров нет, но чем их больше, тем сложнее становится процедура и увеличивается вероятность того, что впоследствии трудно будет вспомнить назначение параметров и то, что делает процедура. Процедуры в примерах имеют только входные параметры и не имеют выходных. В проектах, приведенных ниже, будут рассмотрены процедуры с использованием и входных и выходных параметров.
Возможные ошибки при передаче параметров:
количество значений, передаваемых процедуре, не совпадает с количеством объявленных для нее параметров;
передаваемые данные не соответствуют типу объявленных параметров.
Передача параметров по ссылке и по значению. Параметры могут передаваться процедуре по ссылке или по значению. Рассмотрим довольно сложный для понимания вопрос на примере пpocтoгo приложения.
ЗАВДАННЯ 13.1. Постановка задачи: СОЗДАТЬ ПРИЛОЖЕНИЕ ДЛЯ ОЗНАКОМЛЕНИЯ СО СПОСОБАМИ ПЕРЕДАЧИ ПАРАМЕТРОВ ПРОЦЕДУРЕ. В ОБЩЕЙ ПРОЦЕДУРЕ ДОЛЖНЫ ВЫЧИСЛЯТЬСЯ ПЛОЩАДЬ КРУГА И ДЛИНА ОКРУЖНОСТИ. СОБЫТИЙНАЯ ПРОЦЕДУРА ДОЛЖНА ПЕРЕДАВАТЬ В КАЧЕСТВЕ ПАРАМЕТРА ОБЩЕЙ ПРОЦЕДУРЕ ЗНАЧЕНИЕ РАДИУСА, ПЕЧАТАТЬ ЗНАЧЕНИЕ РАДИУСА, ПЛОЩАДИ КРУГА И ДЛИНЫ ОКРУЖНОСТИ.
Порядок действий
1. Расположите на форме единственный объект – командную кнопку.
2. Установите значение свойства Caption для формы — Kруг.
3. Установите значение свойства Name для командной кнопки сmdВычислить, а значение свойства Caption — Вычислить.
4. Создайте общую процедуру:
Private Sub Круг(ByVal Радиус As Single, Площадь As Single, ДлинаОкружности As Single)
Площадь = 3.14 * Радиус^2
ДлинаОкружности = 2 * 3.14 * Радиус
End Sub
Здесь Радиус — входной параметр, а Площадь и ДлинаОкружности выходные параметры процедуры.
5. Напишите процедуру, которая будет выполняться после щелчка по кнопке <Вычислить>:
Private Sub CmdВычислить_Click()
Dim R As Single, S As Single, L As Single
R = 1
Call Круг(R, S, L)
Print "Радиус"; R
Print "Площадь круга "; S
Print "Длина Окружности"; L
End Sub
6. Запустите приложение и щелкните по кнопке < Выполнить>. Результат работы представлен на рис. 13.6. Процедура Круг предназначена для вычисления площади круга, длины окружности. При вызове этой процедуры из событийной процедуры сmdВычислить_Сliсk() ей передается в качестве пapаметров значение радиуса: R=1.
Рис. 13.6
Компьютер, выполняя тело процедуры Круг и присваивая значение переменным Площадь и ДлинаОкружности, тем самым присваивает значения переменным S и L, т. е. изменяет содержимое ячеек отведенное под эти персменные. Говорят, что в этом случае между вызывающей и вызываемой процедурами осуществляется передача параметров по ссылке. Чтобы подчеркнуть, что используется именно этот способ передачи параметров, заголовок процедуры можно записать так:
Private Sub Круг(Радиус As Single, ByRef Площадь As Single,
ByRef ДлинаОкружности As Single)
Использование ключевого слова ВуRеf излишне, так как данный способ используется по умолчанию. При этом способе вызываемая процедура получает полный контроль над переменными R, S, L вызывающей процедуры и может присваивать им все, что хочет. Это удобно, но небезопасно, так как в этом случае переменные становятся беззащитными против ошибок в вызываемой процедуре. Так, программист может для каких-то других целей включить в процедуру оператор, меняющий значение параметра R, например Радиус =100.
7. Измените процедуру Круг следующим образом:
Private Sub Круг(Радиус As Single, Площадь As Single, ДлинаОкружности As Single)
Площадь = 3.14 * Радиус^ 2
ДлинаОкружности = 2 * 3.14 * Радиус
Радиус=100
End Sub
8. Запустите приложение и щелкните по кнопке <Вычислить>. Результат работы представлен на рис. 13.7.
Рис. 13.7
Лучший способ избежать ошибок — никогда не менять переданную переменную в процедуре, но это не всегда надежно. Лучшее решение заключается в использовании ключевого слова ByVal. Измените заголовок процедуры так:
Private Sub Kpyг (ByVal Радиус As Single, Площадь As Single, ДлинаОкружности As Single).
9. Еще раз запустите приложение и щелкните по кнопке <Вычислить>. Результат работы представлен на рис. 13.8.
Рис. 13.8
Ключевое слово ByVal указывает, что в процедуру передается копия переменной, и все ее изменения будут сказываться только на копии. В результате, что бы ни произошло с параметром Радиус значение переменой R меняться не будет. Такой способ передачи параметров называется передачей параметров по значению.
10. Попробуйте написать заголовок процедуры, добавив ключевое слово ByVal перед параметрами Площадь и ДлинаОкружности:
Private Sub Kpyг(Радиус As Single, ByVal Площадь As Single, ByVal ДлинаОкружности As Single)
11. Еще раз запустите приложение и щелкните по кнопке <Вычислить>. Результат работы представлен на рис. 13.9. Объясните результат.
Рис. 13.9
12. Отмените последнее изменение.
13. Сохраните проект в папке ЛАБ13 под именем ЛР13_Зад1.
Завдання 13.2. Постановка задачи: ОПРЕДЕЛИТЬ МАКСИМАЛЬНОЕ ЧИСЛО ИЗ ТРЕХ ЧИСЕЛ, ИСПОЛЬЗУЯ ОБЩУЮ ПРОЦЕДУРУ ОПРЕДЕЛЕНИЯ МАКСИМАЛЬНОГО ЧИСЛА ИЗ ДВУХ ЧИСЕЛ. ОБЩУЮ ПРОЦЕДУРУ РАЗМЕСТИТЬ В ПРОГРАММНОМ МОДУЛЕ ФОРМЫ. ВИД ПРИЛОЖЕНИЯ БУДЕТ ИМЕТЬ ВИД, ПРЕДСТАВЛЕННЫЙ НА РИС. 13.10.
Рис. 13.10
Порядок действий:
1. Расположите на форме объекты в соответствии с рис.13.10.
2. Установите значения свойства Name для текстовых полей TxtX, TxtX, TxtZ и txtMAX.
3. Установите значения свойства Name для кнопки — cmdM.
4. Установите значения свойства Caption для формы, кнопки и меток в соответствии с рис. 13.10.
5. Создайте общую процедуру. Для размещения ее в программном модуле формы используйте один из способов, описанных выше:
Private Sub max2(a As Single, b As Single, Max As Single)
If a > b Then Max = à Else Max = b
End Sub
где mах2 — имя процедуры, а и b — входные параметры, а Мах — выходной параметр процедуры.
6. Напишите процедуру, которая будет выполняться при щелчке по кнопке <Мах>:
Private Sub cmdM_Click()
Dim x As Single, y As Single, z As Single, m As Single
x = Val(TxtX.Text)
y = Val(TxtY.Text)
z = Val(TxtZ.Text)
Call max2 (x, y, m)
Call max2 (m, z, m)
txtMAX.Text = Str(m)
End Sub
Первый раз при вызове общей процедуры ей в качестве входных параметров передаются значения чисел х и у. Определенное в процедуре максимальное значение присваивается переменной m. При втором вызове общей процедуры ей в качестве входных параметров передаются значения m и z. Определенное в процедуре максимальное значение снова присваивается переменной m.
7. Сохраните проект под именем под именем ЛР13_Зад2. Проверьте правильность функционирования проекта для различных исходных данных.
ЗАВДАННЯ 13.3. Постановка задачи: ОПРЕДЕЛИТЬ ПЕРИМЕТР И ПЛОЩАДЬ ПРОИЗВОЛЬНОГО ЧЕТЫРЕХУГОЛЬНИКА ПО ЕГО СТОРОНАМ И ОДНОЙ ИЗ ДИАГОНАЛЕЙ (РИС. 13.11).
Для решения задачи воспользуйтесь общей процедурой определения периметра треугольника и его площади по формуле Герона
Рис. 13.11
Процедура должна входить в состав модуля фомы. То как должно работать приложение, можно представить из рис.13.12 и 13.13
Рис. 13.12
Порядок действий
1. Откройте папку ЛАБ1 и скопируйте файл формы ЛР1_зад3_F_Фамилия
2. Приведите форму в соответствие с рис. 13.12.
3. Установите значения свойства Name для добавленных текстовых полей — txtD и txtE.
4. Измените значения свойства Caption для формы и меток в соответствии с рис.13.12.
5. Сохраните проект под именем ЛР13_Зад3_Фамилия.
Рис. 13.13
6. Создайте общую процедуру (скопируйте строки кода процедуры из кода предыдущей программы).
Private Sub treug(x As Single, y As Single, z As Single, p As Single,s As Single)
Dim Pp As Single
p = x + y + z
Pp = p / 2
s = Sqr(Pp * ((Pp - x) * (Pp - y) * (Pp - z)))
End Sub
Здесь treug — имя процедуры; х, у и z — входные параметры, а Р и S — выходные параметры процедуры.
7. Измените процедуру, которая будет выполняться при щелчке по кнопке <Вычислить>:
Private Sub CmdEnd_Click()
End
End Sub
Private Sub CmdStart_Click()
Dim A As Single, B As Single, C As Single, D As Single, E As Single
Dim p1 As Single, s1 As Single, p2 As Single, s2 As Single
'TxtP.BackColor = QBColor(14)
'TxtS.BackColor = QBColor(14)
'TxtP.ForeColor = QBColor(2)
'TxtS.ForeColor = QBColor(2)
'frmТреугольник.BackColor = QBColor(15)
A = Val(TxtA.Text)
B = Val(TxtB.Text)
C = Val(TxtC.Text)
D = Val(TxtD.Text)
E = Val(TxtE.Text)
If A + B > E And A + E > B And B + E > A And C + D > E And C + E > D And D + E > C Then
Call treug(A, B, E, p1, s1)
Call treug(C, D, E, p2, s2)
TxtP.Text = Str(p1 + p2 - 2 * E)
TxtS.Text = Str(s1 + s2)
Else
MsgBox "ошибка" + Chr(13) + "с такими исх данными 4-х уг-к не построишь", vbCritical + vbOKOnly, "ошибка"
TxtA.Text = ""
TxtB.Text = ""
TxtC.Text = ""
TxtD.Text = ""
TxtE.Text = ""
TxtP.Text = ""
TxtS.Text = ""
TxtA.SetFocus
End If
End Sub
Первый раз при вызове общей процедуры ей в качестве входных параметров передаются значения сторон а, b и значение диагонали е. При втором вызове общей процедуры ей в качестве входных параметров передаются значения сторон с, d и значение диагонали е.
8. Проверьте правильность функционирования проекта.
9. Сохраните изменения в проекте.
