Приложение - подпрограмма plozhad.rar
Занятие 26.1. Процедуры пользователя
Существует несколько разновидностей процедур:
- Процедуры обработки событий, которые выполняются в том случае, если произошло какое-либо событие. При этом существенным является как имя элемента, так и вид события, который с ним произошел.
- Пользовательские процедуры, группы операторов, создаваемые разработчиками для выполнения определенных задач и не зависящие от текущего состояния приложения или произошедших в тот или иной момент событий. При создании проектов можно включать в них процедуры пользователя, не связанные с событиями. Их чаще всего используют в случаях, когда требуется несколько раз выполнять одни и те же операции или когда задачу можно разделить на отдельные подзадачи, каждая из которых решается по отдельному алгоритму. то есть при использовании метода пошаговой детализации.
Мы уже работали с процедурами ⇒ обработчиками событий. Заготовки этих процедур среда разработки создавала автоматически, а мы дополняли эти заготовки командами и строкой dim объявления переменных.
Процедура пользователя, как и другие процедуры ⇒ это отдельная часть программы, которая имеет свое имя и может быть вызвана для выполнения в любой другой части программы.
Процедуры пользователя могут быть:
- без аргументов и без результатов;
- с аргументами и без результатов;
- без аргументов и с результатами;
- с аргументами и с результатами.
Аргументы процедуры ⇒ это переменные, которые получают свои значения в команде вызова процедуры перед началом выполнения команд процедуры.
Результаты процедуры ⇒ это переменные, которые передают свои значения из процедуры определенным переменным в команде вызова процедуры.
Объявление процедуры
Если хотите использовать процедуру при решении задачи, то ее сначала нужно объявить (написать ее программный код), а затем вызвать ее в том месте программного кода, где это необходимо.
Пользовательские процедуры объявляются с помощью ключевого слова Sub:
private Sub <название_процедуры>([список формальных параметров]) <операторы_процедуры> End Sub |
Здесь <список формальных параметров>⇒ входные и выходные параметры с указанием типа.
- Процедуры могут не содержать параметров, в таком случае указывают пустые скобки.
- Формальные параметры определяют место подстановки в процедуре фактических параметров.
Чтобы различать входные и выходные параметры, используются ключевые слова:
- для входных ByVal (по значению);
- для выходных - Byref (по ссылке).
- Изменение выходного параметра в процедуре отражается в основной программе, а входного нет.
- В Visual Basic.NET способом передачи аргументов по умолчанию является передача по значению (ByVal).
- Для объявляемой процедуры, так же, как для переменной, может быть задана область её видимости при помощи служебных слов Private или Public.
- Все процедуры должны быть объявлены до того, как они будут использоваться. Чтобы область видимости распространялась на всю форму, процедуры объявляются в верхней части программного кода сразу же после кода, автоматически созданного конструктором форм Windows.
Вызов процедуры
Чтобы использовать процедуру Sub, необходимо вызвать её в программном коде. Для вызова используют имя процедуры, в круглых скобках указывается список фактических параметров:
<имя процедуры> (<фактические параметры>) |
- При вызове процедур вместо формальных параметров подставляются фактические значения. Они должны совпадать с формальными параметрами по типу, по количеству и по последовательности расположения.
- При вызове процедуры Sub количество и типы аргументов, передаваемых в процедуру, должны совпадать с количеством и типом аргументов, указанных при объявлении процедуры.
Процедура с параметрами
Одна из ценных возможностей Visual Basic.NET и большинства остальных современных языков программирования ⇒ возможность передавать подпрограммам нужную информацию. Это очень удобно, потому что можно создавать подпрограммы, которые выдают разные результаты и выполняют разные действия в зависимости от того, какую информацию им передают.
Пример 1. Проект "Подпрограмма-процедура- площадь" (процедура с аргументами и с результатами)
- Создайте новое приложение Windows и назовите его "plozhad".
- Создайте пользовательский интерфейс по образцу:
- Откройте окно редактора кода. Найдите строку: "Код, автоматически созданный конструктором форм Windows".
В следующую за ней строку добавьте исходный текст процедуры:
Public Class Form1
Public a1, b1, a2, b2, s1, s2 As Integer 'глобальные переменные a1, b1, a2, b2
Private Sub plozhad(ByVal a As Integer, ByVal b As Integer, ByRef s As Integer)
'формальные входные аргументы (параметры) подпрограммы - a, b: (ByVal a As Integer, ByVal b As Integer)
'формальный выходной аргументы (параметры) подпрограммы - s: (ByRef s As Integer)
a = Val(InputBox("a=", "прямоугольник"))
b = Val(InputBox("b=", "прямоугольник"))
s = a * b
MessageBox.Show("площадь прямоугольника = " & Str(s))
End Sub
End Class
Как видите, при выполнении кода в подпрограмме plozhad будет выведено окно сообщения с текстом "площадь прямоугольника = " & Str(s)" Но как сделать, чтобы этот код выполнился?
Чтобы выполнить код внутри процедуры, нужно эту процедуру вызвать:
- Выполните двойной щелчок на кнопке "вычисление площадей прямоугольника", чтобы отредактировать обработчик ее нажатия. Добавьте в обработчик Button1_Click следующую строку кода:
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click plozhad(a1, b1, s1) 'вызов подпрограммы с фактическими аргументами a1, b1 Label3.Text = s1 plozhad(a2, b2, s2) 'вызов подпрограммы с фактическими аргументами a2, b2 Label4.Text = s2 End Sub |
Постройте и запустите проект. Нажмите кнопку с надписью "вычисление площадей прямоугольника".
Пример 2 - Дан интерфейс и программный код проекта.Создайте проект "Сумма чисел"
Вариант 1
Вариант 2 (процедура с аргументами и с результатами)