![]() |
Главная Случайная страница Контакты | Мы поможем в написании вашей работы! | |
|
В процедуре Function Fsqr() a и bявляются формальными параметрами. При обращении к процедуре Fsqr() в подпрограмме Sub PR1() переменные
x, y, z являются фактическими параметрами, совпадающими с формальными параметрами a и b по типу, количеству, порядку следования.
8.1.2. Создание процедуры-подпрограммы Sub
Синтаксис процедуры-подпрограммы Sub:
Sub Имя_процедуры ([аргументы])
операторы процедуры
End Sub
При вызове процедуры количество и тип аргументов, передаваемых в процедуру Sub, должны соответствовать количеству и типу аргументов, указанных в объявлении процедуры. Если переданные в процедуру Sub значения переменных будут изменены в ходе выполнения процедуры, то измененные значения возвращаются в программу. По умолчании процедуры типа Sub,объявленные в стандартном модуле, являются общедоступными, поэтому они могут быть вызваны из любой процедуры.
Для того чтобы вызвать процедуру типа Sub,необходимо использовать оператор, представляющий собой имя вызываемой процедуры, указав список требуемых аргументов. Передача переменной процедуре Sub называется передачей аргумента по ссылке (по умолчании),поскольку переменная может быть модифицирована в ходе выполнения процедуры и уже измененной возвращена
в программу.
Любую переменную можно передать по значению, если для этого в
списке аргументов при объявлении процедуры использовать ключевое слово ByVal. Применение ключевого слова ByVal перед описанием переменной
позволяет сохранить копию оригинала аргумента и вернуть ее неизменной по окончании процедуры, даже если переменная была модифицирована в ходе выполнения процедуры.
Такое объявление аргументов в процедуре обеспечивает большую гибкость в программировании, так как переданную с параметром
ByVal переменную можно модифицировать в процедуре, а в программе она останется неизменной.
Параметры, передающиеся по ссылке, – это параметры, значения которых вычисляются в подпрограмме и передаются из нее в другие подпрограммы. Перед таким параметром ставится ключевое слово ByRef.
П р и м е р 2. Вычислить: ,
где s1 и k1 – сумма и количество нечетных чисел в диапазоне от 10 до 79;
s2 и k2 – сумма и количество нечетных чисел в диапазоне от –5 до –38.
Программный код
Основная подпрограмма: | |
Option Explicit | |
Sub PR2() | |
Dim s1 As Single, s2 As Single, k1 As Single, k2 As Single Dim s As Single, n As Integer, m As Integer, k As Integer Dim f As Single, l As Integer | |
n = Val(InputBox(“n=”)) | ‘Начало диапазона |
m = Val(InputBox(«m=»)) | ‘Конец диапазона |
l = Val(InputBox(«l=»)) | ‘Шаг изменения |
Call pg (n, m, l, s, k) | ‘Обращение к подпрограмме с входными фактическими параметрами: n – начало диапазона, m – конец диапазона, l – шаг изменения; параметры, передаваемые из подпрограммы pg: s – сумма нечетных чисел в диапазоне, k – количество нечетных чисел в диапазоне. |
s1 = s: k1 = k | ‘Сохранение результатов работы подпрограммы pg (значений s и k) |
n = – 5: m = – 38: l = –1 | ‘Ввод шага и нового диапазона. |
Call pg (n, m, l, s, k) | ‘Обращение к подпрограмме с новыми данными. |
s2 = s: k2 = k | ‘Сохранение результатов работы подпрог-раммы pg (значений s и k). |
f = s1 * s2 / (k2 – k1) + 35.6 | ‘Расчет окончательного значения. |
MsgBox (“f=” & f) | |
End Sub | |
Вызываемая подпрограмма: | |
Sub pg (ByVal n1 As Integer, ByVal m1 As Integer, ByVal l1 As Integer, ByRef ss As Single, ByRef kk As Integer) ‘n1, m1, l1 – формальные парамет- ры, передающиеся по значению; ss, kk – параметры, передающиеся по ссылке | |
Dim I As Integer ss = 0: kk = 0 For I = n1 To m1 Step l1 If I Mod 2 <> 0 Then ss = ss + I: kk = kk + 1 Next i End Sub |
Дата публикования: 2015-04-06; Прочитано: 234 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!