Подпрограмма-функция

 

Подобно подпрограмме-процедуре Sub, подпрограмма-функция Function является самостоятельной подпрограммой, которая может получать аргументы, выполнять последовательность инструкций и изменять значения своих аргументов. В отличие от подпрограммы-процедуры подпрограмма-функция может применяться в правой части выражения, как и любая другая встроенная функция, например косинус или синус угла. Подпрограмма-функция возвращает один результат и он должен быть присвоен имени этой функции.

 

Синтаксис:

[Public | Private] [Static] Function Имя [(Список аргументов)] As Тип

Тело подпрограммы

Имя = Выражение

End Function

Подпрограмма-функция вызывается в выражении по своему имени, за которым следует список аргументов в скобках:

 

Переменная = Имя подпрограммы-функции(Список аргументов)

 

Пример 1

Даны действительные числа s, t. Получить значение выражения

 

,

 

где

 

Программный код

 

Option Explicit

Sub PR31()

Dim s As Double

Dim t As Double

Dim f As Double

s = Val(InputBox("Введи s"))

t = Val(InputBox("Введи t"))

f = Q(1.2, s) + Q(t, s) – Q(2 * s – 1, s * t)

MsgBox("f=" & f)

End Sub

Private Function Q(ByVal a As Double, ByVal b As Double) As Double

Q = (a^2 + b^2) / (a^2 + 2 * a * b + 3 * b^2 + 4)

End Function

 

Пример 2

Известна заработная плата сотрудников двух отделов. Вычислить среднюю заработную плату сотрудников в каждом отделе и определить, где она больше и насколько.

 

Программный код

 

Option Explicit

Dim i As Integer ‘ Описание глобальных параметров

Sub PR32()

Dim x(1 To 100) As Double

Dim y(1 To 100) As Double

Dim N As Integer

Dim M As Integer

Dim Sz1 As Double

Dim Sz2 As Double

N = Val(InputBox("Введите количество сотрудников 1-го отдела"))

M = Val(InputBox("Введите количество сотрудников 2-го отдела"))

Sz1 = Sz(N, x, 2)

Sz2 = Sz(M, y, 4)

MsgBox("Средняя зарплата сотрудников 1-го отдела =" & Sz1)

MsgBox("Средняя зарплата сотрудников 2-го отдела =" & Sz2)

If Sz1 > Sz2 Then MsgBox("В 1-м отделе средняя зарплата больше")

If Sz2 > Sz1 Then MsgBox("Во 2-м отделе средняя зарплата больше")

If Sz1 = Sz2 Then MsgBox("Средняя зарплата в отделах одинакова")

End Sub

Private Function Sz(ByVal k As Integer, ByRef a() As Double, ByVal k1 As Integer) As Double

Dim s As Double ‘ описание промежуточной переменной

s = 0

For i = 1 To k ‘ считывание данных и заполнение массива

A(i) = Cells(k1, i)

s = s + a(i) ‘ вычисление общей суммы

Next i

Sz = s / k ‘ вычисление средней зарплаты

End Function

 

 








Дата добавления: 2015-11-20; просмотров: 462;


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

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

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

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