Processing math: 100%
Справочник от Автор24
Найди эксперта для помощи в учебе
Найти эксперта
+2

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

При составлении сложных программ очень часто в их различных частях приходится использовать одинаковую последовательность действий, например, вычислять:

loga x=lnx/lna

Замечание 1

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

Использование подпрограмм позволяет сложную задачу разбить на фрагменты, которые выполняют различные исполнители. Кроме того, подпрограмма может рассматриваться как самостоятельный модуль, который выполнен квалифицированными разработчиками и используется пользователями более низкой квалификации.

В VBA подпрограммы разделяются на:

  • подпрограммы-процедуры – Sub;
  • подпрограммы-функции – Function.

Кроме того, от первоначальных версий BASIC сохранилась конструкция подпрограмм GoSub – Return , которая в настоящее время практически используется.

Подпрограммы-процедуры

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

Синтаксис процедуры в упрощенной форме имеет вид:

Private|Public Sub ( список )

End Sub

В данном случае квадратные скобки указывают на необязательный параметр, вертикальная черта – на варианты параметров, выбираемых пользователем. Так, элемент описания Private указывает, что рассматриваемая процедура доступна только из программы и процедур только того модуля, в котором она описана. Элемент описания Public указывает на то, что рассматриваемая процедура доступна для всех программ и процедур во всех модулях.

Список формальных аргументов процедуры условно в рассматриваемом нами примере вычисления логарифма разделим на входные параметры – исходные данные и выходные – результаты счета. Входные параметры в списке будем описывать с ключевым словом ByVal и обязательным указанием типа. Выходные же параметры в списке будем описывать с ключевым словом ByRef и обязательным указанием типа. При таком способе описания входные параметры передаются в процедуру по значению: вначале в вызывающей программе вычисляются значения фактических аргументов и эти значения подставляются в процедуре вместо формальных. Входные параметры могут быть либо постоянными, либо именными постоянными, либо переменными, либо выражениями. Выходные параметры, описанные с ключевым словом ByRef, передаются по адресам в электронной памяти компьютера и должны быть только переменными. После их вычисления в процедуре их значения передаются в вызывающую программу. Отметим, что каждая переменная, которая используется в качестве выходного параметра процедуры с ключевым словом ByRef в вызывающей программе, должна быть описана в ней только в отдельном операторе описания. Вызов процедуры из вызывающей программы осуществляется с помощью оператора:

«Подпрограммы-процедуры и подпрограммы-функции» 👇
Помощь эксперта по теме работы
Найти эксперта
Решение задач от ИИ за 2 минуты
Решить задачу
Помощь с рефератом от нейросети
Написать ИИ

Call ( фактические переменные )

Так вычисление логарифма по произвольному основанию и образец обращения к процедуре его вычисления можно представить в следующей программе.

Private Sub Workbook_Open()

Const a=2,b=4

Dim x As Single

Dim y As Single

Dim z As Single

Call Логарифм(a, b, x)

Call Логарифм(a + b, (a + b) ^ 5, y)

Call Логарифм(10, 10000, z)

Range("A1").Value=x

Range("A3").Value=y

Range("A5").Value=z

x=2.38b

y=3.1415926

Call Логарифм(y, x, z)

Range("A7").Value=z

End Sub

Public Sub Логарифм(ByVal основание, аргумент_As Single, ByRef результат _As Single)

результат = Log(аргумент) / Log(основание)

End Sub

Замечание 2

Отметим, что одновременное использование латинского алфавита и кириллицы при написании программ на начальном этапе затруднительно. В приведенном примере это сделано для большей наглядности.

Кроме того, что в процедуре может быть несколько выходных параметров, описанных с ключевым словом ByRef, возможны побочные результаты действия процедур на изменение входных параметров с ключевым словом ByVal, которые мы рассматривать не будем.

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

Определение 1

Подпрограмма-функция – это подпрограмма, результат которой представляет собой единственное значение, присваиваемое имени этой функции.

Подпрограмма-функция имеет следующий синтаксис:

Public|Private Function (список) _As

End Function

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

=

Обращения к подпрограммам-функциям аналогичны обращению к стандартным математическим функциям VBA.

Рассмотрим оформление предыдущего примера в виде подпрограммы-функции и обращения к ней.

Private Sub Workbook_Open()

Const a=2,b=4

Dim x As Single

Dim y As Single

Dim z As Single

x=Логарифм(a,b)

y=Логарифм(a+b,(a+b)5)

z=Логарифм(10,10000)

Range("A1").Value=x

Range("A3").Value=y

Range("A5").Value=z

x=2.38b

y=3.1415926

z=Логарифм(y,x)

Range("A7").Value=z

End Sub

Public Function Логарифм(ByVal основание, аргумент _

As Single) As Single

Логарифм = Log(аргумент) / Log(основание)

End Function

Результат счета по приведенным программам одинаковый и имеет вид, представленный на рисунке ниже:

Подпрограммы-процедуры и подпрограммы-функции. Автор24 — интернет-биржа студенческих работ

Замечание 3

Отметим, что в ячейки таблицы в результате выполнения программы выведены следующие значения:

  • в ячейку A1 - значение log24=2;
  • в ячейку A3 – значение loga+b(a+b)6=5;
  • в ячейку A5 – значение lg1010000=4;
  • в ячейку A7 - значение logz2,384 .
Дата написания статьи: 06.05.2017
Получи помощь с рефератом от ИИ-шки
ИИ ответит за 2 минуты
Все самое важное и интересное в Telegram

Все сервисы Справочника в твоем телефоне! Просто напиши Боту, что ты ищешь и он быстро найдет нужную статью, лекцию или пособие для тебя!

Перейти в Telegram Bot

Изучаешь тему "Подпрограммы-процедуры и подпрограммы-функции"? Могу объяснить сложные моменты или помочь составить план для домашнего задания!

AI Assistant