Visual basic функции: процедуры функций — Visual Basic
Содержание
процедуры функций — Visual Basic
Twitter
LinkedIn
Facebook
Адрес электронной почты
-
Статья -
-
Процедура Function
— это ряд операторов Visual Basic, заключенных в операторы Function
и End Function
. Процедура Function
выполняет задачу, а затем возвращает управление вызывающему коду. При возврате элемента управления он также возвращает значение вызывающему коду.
При каждом вызове процедуры выполняются ее инструкции, начиная с первого исполняемого оператора после Function
оператора и заканчивая первым End Function
встречным оператором , Exit Function
или Return
.
Процедуру Function
можно определить в модуле, классе или структуре. Public
По умолчанию это означает, что вы можете вызывать его из любого места в приложении, которое имеет доступ к модулю, классу или структуре, в которой они определены.
Процедура Function
может принимать аргументы, такие как константы, переменные или выражения, которые передаются ей вызывающим кодом.
Синтаксис объявления
Синтаксис объявления Function
процедуры выглядит следующим образом:
[Modifiers] Function FunctionName [(ParameterList)] As ReturnType [Statements] End Function
Модификаторы могут указывать уровень доступа и сведения о перегрузке, переопределении, совместном использовании и теневом режиме. Дополнительные сведения см. в разделе Function Statement.
Каждый параметр объявляется так же, как и для вложенных процедур.
Тип данных
Каждая Function
процедура имеет тип данных, как и каждая переменная. Этот тип данных задается предложением As
в инструкции Function
и определяет тип данных значения, возвращаемого функцией в вызывающий код. Это иллюстрируют следующие примеры объявлений.
Function Yesterday() As Date End Function Function FindSqrt(radicand As Single) As Single End Function
Дополнительные сведения см. в разделе «Parts» раздела Function Statement.
Возврат значений
Значение, отправляемое процедурой Function
обратно в вызывающий код, называется его возвращаемым значением. Процедура возвращает это значение одним из двух способов:
Он использует оператор для
Return
указания возвращаемого значения и немедленно возвращает управление вызывающей программе. Это показано в следующем примере.Function FunctionName [(ParameterList)] As ReturnType ' The following statement immediately transfers control back ' to the calling code and returns the value of Expression. Return Expression End Function
Он присваивает значение собственному имени функции в одном или нескольких инструкциях процедуры. Элемент управления не возвращается вызывающей программе, пока не
Exit Function
будет выполнен оператор илиEnd Function
. Это показано в следующем примере.Function FunctionName [(ParameterList)] As ReturnType ' The following statement does not transfer control back to the calling code. FunctionName = Expression ' When control returns to the calling code, Expression is the return value. End Function
Преимущество назначения возвращаемого значения имени функции заключается в том, что элемент управления не возвращается из процедуры до тех пор, пока не будет обнаружен Exit Function
оператор или End Function
. Это позволяет назначить предварительное значение и при необходимости скорректировать его позже.
Дополнительные сведения о возврате значений см. в разделе Function Statement. Сведения о возврате массивов см. в разделе Массивы.
Синтаксис вызова
Процедура вызывается Function
путем включения ее имени и аргументов в правой части оператора присваивания или в выражении. Необходимо указать значения для всех аргументов, которые не являются необязательными, а также заключить список аргументов в круглые скобки. Если аргументы не указаны, при необходимости можно опустить круглые скобки.
Синтаксис вызова Function
процедуры выглядит следующим образом.
Lvalue=
имя_[(
функции список аргументов)]
If ((
имя_[(
функции список аргументов)] / 3) <=
Выражение) Then
При вызове Function
процедуры не нужно использовать ее возвращаемое значение. 2))
End Function
В следующем примере показан типичный вызов метода hypotenuse
.
Dim testLength, testHypotenuse As Double testHypotenuse = Hypotenuse(testLength, 10.7)
См. также раздел
- Процедуры
- Подпрограммы
- Процедуры свойств
- Процедуры операторов
- Параметры и аргументы процедуры
- Оператор Function
- Практическое руководство. Создание процедуры, возвращающей значение
- Практическое руководство. Возврат значения из процедуры
- Практическое руководство. Вызов процедуры, возвращающей значение
Методы и их параметры в Visual Basic.NET
Последнее обновление: 30.10.2015
Методы представляют собой набор операторов, предназначенных для выполнения определенного действия. Методы условно можно разделить на два типа:
процедуры и функции. Если процедуры просто выполняют определенные действия, то функции возвращают некоторое значение.
Синтаксис процедуры выглядит следующим образом: сначала мы указываем модификатор доступа, затем ключевое слово Sub, после имя процедуры.
После имени процедуры в скобках объявляем параметры процедуры, однако метод может и не иметь параметров — в таком случае в скобках ничего не указывается. Заканчивается объявление процедуры словами End Sub. С одной процедурой вы уже должны быть знакомы — это процедура Main, которая и вызывается при запуске модуля:
Sub Main() 'Здесь выполняемые действия End Sub
или
Sub Method1() Console.WriteLine("This is a Method1") End Sub
Объявление функции похоже на объявление процедуры, только вместо ключевого слова Sub используется слово Function.
Второе различие состоит в том, что нам надо указать тип и возвращаемое значение из функции.
Чтобы указать тип, после скобок с параметрами помещается ключевое слово As, после которого пишется тип, значение которого возвращает функция.
Если тип не указан, то функция по умолчанию возвращает значение типа Object
. Кроме того, в конце функции мы помещаем слово Return и после него указываем возвращаемое значение:
Function Factorial() As Integer Return 1 End Function
или
Function Hello() As String Dim s As String = "Hello World" Return s End Function
Использование методов в программе
Чтобы вызвать метод в программе, надо указать имя метода, а после него в скобках значения для его параметров:
Sub Main() 'Присваиваем переменной message строку из функции Hello() Dim message As String = Hello() Console.WriteLine(message) 'Выполняем метод Addition, который выводит сообщение на экран Addition() Console.ReadLine() End Sub 'Функция, возвращающая строку Hello World Function Hello() As String Dim s As String = "Hello World" Return s End Function 'Метод, который выводит на экран сообщение Sub Addition() Console. WriteLine("2 + 2 = {0}", 2+2) End Sub
Обратите внимание, что поскольку функция возвращает значение, это значение можно присвоить другой переменной.
Передача параметров
В вышеприведенном примере мы использовали процедуры и функции без параметров. Теперь посмотрим, как используются параметры. Параметры могут передаваться в методы
по значению и по ссылке. Передача по значению (наиболее распространенный способ передачи параметров) происходит следующим образом:
Function Addition(x As Integer, y As Integer) As Integer Return x + y End Function
Сначала мы указываем имя параметра, а потом после слова As
указывается тип параметра (в данном случае оба параметра имеют тип Integer).
Также передача по значению осуществляется с помощью ключевого слова ByVal, а предыдущее объявление функции будет эквивалентно следующему:
Function Addition(ByVal x As Integer, ByVal y As Integer) As Integer Return x + y End Function
Передача параметров по ссылке происходит также, только вместо ByVal используется ключевое слово ByRef:
Sub Addition(ByRef x As Integer, ByVal y As Integer) x=x+y End Sub
В чем же отличие передачи аргумента по ссылке от передачи по значению? При передаче аргумента по значению метод получает не саму переменную,
а ее копию. При передаче аргумента по ссылке в метод передается адрес этой переменной в памяти. И если в методе изменяется значение такой аргумента,
то также изменяется и значение переменной, которая передается на его место:
Module Module1 Sub Main() 'Начальные значения переменных a и b Dim a As Integer = 5 Dim b As Integer = 6 Console.WriteLine("Начальное значение переменной a = {0}", a) 'Передача переменных по значению 'После выполнения этого кода a = 5, так как мы передали лишь ее копию AdditionVal(a, b) Console.WriteLine("Переменная a после передачи по значению равна = {0}", a) 'Передача переменных по ссылке 'После выполнения этого кода a = 11, так как мы передали саму переменную AdditionRef(a, b) Console.WriteLine("Переменная a после ссылке по значению равна = {0}", a) Console.ReadLine() End Sub 'Передаем аргументы по значению Sub AdditionVal(ByVal x As Integer, ByVal y As Integer) x = x + y Console. WriteLine("x + y = {0}", x) End Sub 'Передаем аргументы по ссылке Sub AdditionRef(ByRef x As Integer, ByVal y As Integer) x = x + y Console.WriteLine("x + y = {0}", x) End Sub End Module
В данном случае мы объявляем две переменные a
и b
. У нас есть два метода, которые принимают два параметра:
x
и y
. В обоих методах значение аргумента х приравнивается сумме x и y. Затем мы подставляем на место параметров x и y переменные
a и b соответственно. В первом случае переменная передается по значению, то есть передается копия этой переменной, и она не изменяется. Во втором случае
мы передаем указатель на эту переменную в памяти, а поскольку аргумент x изменяется, то передаваемая на его место переменная a тоже изменяется.
Когда же надо передавать аргументы по ссылке, а когда по значению? Если необходимо изменить переменную или даже несколько переменных в одном методе,
то следует передавать аргументы по ссылке. Также следует передавать по ссылке большие объекты, даже если не надо их изменять, поскольку создание их копии
снижает производительность программы.
Необязательные параметры
В методах также могут использоваться и необязательные параметры. Чтобы объявить необязательный параметр, надо использовать ключевое слово
Optional. Для такого параметра необходимо при объявлении метода объявить значение по умолчанию. Также надо учесть, что все последующие параметры
после необязательного также должны быть необязательными. Например:
Function Add(ByVal x As Integer, ByVal y As Integer, Optional z As Integer = 3, Optional s As Integer = 5) As Integer Return z + x + y + s End Function
Тогда при вызове этой функции мы можем не передавать значения для двух последних параметров:
Sub Main() ' Не передаем значения для дополнительных параметров ' Оставшиеся параметры имеют значения по умолчанию Add(3, 10) 'Передаем значение для одного дополнительного параметра ' Другой использует значение по умолчанию Add(1, 1, 1) End Sub
Передача аргументов по имени
В предыдущих примерах мы передавали значения для параметров в порядке объявления этих параметров в методе. Однако можно также передавать
значения для параметров по имени. При этом порядок передачи значений не зависит от порядка следования параметров. Для этого в вызове метода мы указываем имя параметра, потом двоеточие и знак равенства и затем значение для
этого параметра. К примеру, передадим значения для параметров к вышеопределенной функции Add
:
Sub Main() ' Необязательный параметр s использует значение по умолчанию Add(x:=3, z:=6, y:=8) End Sub
Рекурсивные функции
Особо следует остановиться на рекурсивных функциях — это такая функция, которая вычисляется через саму себя. Посмотрим применение рекурсии в программе по вычислению факториала:
Function Factorial(x As Integer) As Integer If (x = 1) Then Return 1 Else Return x * Factorial(x - 1) End If End Function
Итак, у нас в данном случае задается условие, что если вводимое число не равно 1, то мы умножаем данное число на результат этой же функции,
в которую в качестве параметра передается число x-1. И так, пока не дойдем того момента, когда значение параметра не будет равно единице.
Еще одним примером рекурсивной функции может служить функция для вычисления числа Фибоначчи. n-й член последовательности Фибоначчи определяется по формуле:
f(n)=f(n-1) + f(n-2), причем f(0)=0, f(1)=1.
Function Fibbonachi(x As Integer) As Integer If x = 0 Then Return 0 ElseIf x = 1 Then Return 1 Else Return Fibbonachi(x - 1) + Fibbonachi(x - 2) End If End Function
НазадСодержаниеВперед
Функциональные процедуры — Visual Basic
Редактировать
Твиттер
Фейсбук
Электронная почта
- Статья
Процедура Function
представляет собой серию операторов Visual Basic, заключенных в операторы Function
и End Function
. Функция 9Процедура 0018 выполняет задачу, а затем возвращает управление вызывающему коду. Когда он возвращает управление, он также возвращает значение вызывающему коду.
При каждом вызове процедуры выполняются ее операторы, начиная с первого исполняемого оператора после оператора Function
и заканчивая первым обнаруженным оператором End Function
, Exit Function
или Return
.
Процедуру Function
можно определить в модуле, классе или структуре. это Public
по умолчанию, что означает, что вы можете вызывать его из любого места вашего приложения, имеющего доступ к модулю, классу или структуре, в которой вы его определили.
Процедура Функция
может принимать аргументы, такие как константы, переменные или выражения, которые передаются ей вызывающим кодом.
Синтаксис объявления
Синтаксис объявления процедуры Function
следующий:
[Модификаторы] Function FunctionName [(ParameterList)] As ReturnType [Заявления] Конечная функция
Модификаторы могут указывать уровень доступа и информацию о перегрузке, переопределении, совместном использовании и затенении. Дополнительные сведения см. в разделе Оператор функции.
Вы объявляете каждый параметр так же, как и для подпроцедур.
Тип данных
Каждая процедура Function
имеет тип данных, как и любая переменная. Этот тип данных указан в предложении As
в операторе Function
и определяет тип данных значения, которое функция возвращает вызывающему коду. Следующие примеры объявлений иллюстрируют это.
Функция Вчера() как Дата Конечная функция Функция FindSqrt(radicand As Single) As Single Конечная функция
Дополнительную информацию см. в разделе «Детали» описания функции.
Возвращаемые значения
Значение, которое процедура Function
отправляет обратно вызывающему коду, называется возвращаемым значением. Процедура возвращает это значение одним из двух способов:
Она использует оператор
Return
для указания возвращаемого значения и немедленно возвращает управление вызывающей программе. Следующий пример иллюстрирует это.Функция FunctionName [(Список параметров)] As ReturnType ' Следующий оператор немедленно передает управление обратно ' в вызывающий код и возвращает значение Expression. Выражение возврата Конечная функция
Присваивает значение собственному имени функции в одном или нескольких операторах процедуры. Управление не возвращается к вызывающей программе до тех пор, пока не будет выполнен оператор
Exit Function
илиEnd Function
. Следующий пример иллюстрирует это.Функция FunctionName [(Список параметров)] As ReturnType ' Следующий оператор не передает управление обратно вызывающему коду. ИмяФункции = Выражение ' Когда управление возвращается к вызывающему коду, Expression является возвращаемым значением. Конечная функция
Преимущество присвоения возвращаемого значения имени функции заключается в том, что управление не возвращается из процедуры до тех пор, пока не встретит оператор Exit Function
или End Function
. Это позволяет задать предварительное значение и при необходимости скорректировать его позже.
Дополнительные сведения о возвращаемых значениях см. в разделе Оператор функции. Сведения о возвращаемых массивах см. в разделе Массивы.
Синтаксис вызова
Вы вызываете процедуру Function
, включая ее имя и аргументы либо в правую часть оператора присваивания, либо в выражение. Вы должны предоставить значения для всех аргументов, которые не являются необязательными, и вы должны заключить список аргументов в круглые скобки. Если аргументы не указаны, скобки можно опустить.
Синтаксис вызова процедуры Function
следующий.
lvalue =
имя_функции [(
список аргументов )]
Если (( 9001 8 имя_функции
[(
список аргументов )] / 3) <=
выражение ) Затем
Когда вы вызываете процедуру Function
, вам не нужно использовать ее возвращаемое значение. Если этого не сделать, выполняются все действия функции, но возвращаемое значение игнорируется. MsgBox часто вызывается таким образом. 92))
Конечная функция
В следующем примере показан типичный вызов гипотенузы
.
Dim testLength, testHypotenuse As Double testHypotenuse = Hypotenuse (testLength, 10.7)
См. также
- Процедуры
- Подпроцедуры
- Процедуры собственности
- Процедуры оператора
- Параметры процедуры и аргументы
- Описание функций
- Как создать процедуру, возвращающую значение
- Как вернуть значение из процедуры
- Практическое руководство. Вызов процедуры, возвращающей значение
Обратная связь
Просмотреть все отзывы о странице
Математические функции — Visual Basic
Редактировать
Твиттер
Фейсбук
Электронная почта
- Статья
Методы класса System.Math предоставляют тригонометрические, логарифмические и другие распространенные математические функции.
В следующей таблице перечислены методы класса System.Math. Вы можете использовать их в программе Visual Basic:
.NET метод | Описание |
---|---|
Абс | Возвращает абсолютное значение числа. |
Акос | Возвращает угол, косинус которого равен указанному числу. |
Асин | Возвращает угол, синус которого равен указанному числу. |
Атан | Возвращает угол, тангенс которого равен указанному числу. |
Атан2 | Возвращает угол, тангенс которого является частным двух заданных чисел. |
БигМул | Возвращает полное произведение двух 32-битных чисел. |
Потолок | Возвращает наименьшее целочисленное значение, которое больше или равно указанному Decimal или Double . |
Кос | Возвращает косинус указанного угла. |
Кош | Возвращает гиперболический косинус указанного угла. |
Раздел | Возвращает частное двух 32-битных или 64-битных целых чисел со знаком, а также возвращает остаток в выходном параметре. |
Опыт | Возвращает e (основание натуральных логарифмов), возведенное в указанную степень. |
Этаж | Возвращает наибольшее целое число, меньшее или равное указанному числу Decimal или Double . |
Остаток IEEE | Возвращает остаток от деления указанного числа на другое указанное число. |
Журнал | Возвращает натуральный логарифм (по основанию e) указанного числа или логарифм указанного числа по указанному основанию. |
Лог10 | Возвращает логарифм по основанию 10 указанного числа. |
Макс. | Возвращает большее из двух чисел. |
Мин. | Возвращает меньшее из двух чисел. |
Пау | Возвращает указанное число в указанной степени. |
Круглый | Возвращает значение Decimal или Double , округленное до ближайшего целого числа или до указанного количества дробных цифр. |
Знак | Возвращает значение Integer , указывающее знак числа. |
Грех | Возвращает синус указанного угла. |
Синх | Возвращает гиперболический синус указанного угла. |
кв. | Возвращает квадратный корень указанного числа. |
Желто-коричневый | Возвращает тангенс указанного угла. |
Танх | Возвращает гиперболический тангенс указанного угла. |
Урезать | Вычисляет целую часть указанного числа Decimal или Double . |
В следующей таблице перечислены методы класса System.Math, которые не существуют в .NET Framework, но добавлены в .NET Standard или .NET Core:
Метод .NET | Описание | Доступен в |
---|---|---|
Акош | Возвращает угол, гиперболический косинус которого равен указанному числу. | Начиная с .NET Core 2.1 и .NET Standard 2.1 |
Асинь | Возвращает угол, гиперболический синус которого равен указанному числу. | Начиная с .NET Core 2.1 и .NET Standard 2.1 |
Атанх | Возвращает угол, гиперболический тангенс которого равен указанному числу. | Начиная с .NET Core 2.1 и .NET Standard 2.1 |
БитДекремент | Возвращает следующее наименьшее значение, меньшее, чем x . | Начиная с .NET Core 3.0 |
Битинкремент | Возвращает следующее наибольшее значение, которое превышает x . | Начиная с .NET Core 3.0 |
ЦБ | Возвращает кубический корень указанного числа. | Начиная с .NET Core 2.1 и .NET Standard 2.1 |
Зажим | Возвращает значение , ограниченное включающим диапазоном min и max . | Начиная с .NET Core 2.0 и .NET Standard 2.1 |
CopySign | Возвращает значение с величиной x и знаком y . | Начиная с .NET Core 3.0 |
FusedMultiplyДобавить | Возвращает (x * y) + z, округленное как одна троичная операция. | Начиная с .NET Core 3.0 |
ИлогБ | Возвращает целочисленный логарифм по основанию 2 указанного числа. | Начиная с .NET Core 3.0 |
Лог2 | Возвращает логарифм по основанию 2 указанного числа. | Начиная с .NET Core 3.0 |
Начиная с .NET Core 3.0 |
Чтобы использовать эти функции без квалификации, импортируйте пространство имен System.Math в свой проект, добавив следующий код в начало исходного файла:
Imports System.Math
Пример — Abs
В этом примере используется метод Abs класса Math для вычисления абсолютного значения числа.
Dim x As Double = Math.Abs(50.3) Dim y As Double = Math.Abs (-50,3) Console.WriteLine(x) Console.WriteLine(y) ' Этот пример производит следующий вывод: 50,3 50,3
Пример — Atan
В этом примере используется метод Atan класса Math для вычисления значения числа пи.
Публичная функция GetPi() как двойная ' Вычислите значение числа Пи. Возврат 4.0 * Мат.Атан(1.0) Конечная функция
Примечание
Класс System.Math содержит постоянное поле Math.PI. Вы можете использовать его, а не вычислять.
Пример — Cos
В этом примере метод Cos класса Math используется для возврата косинуса угла.
Секунда общей функции (угол как двойной) Как двойной ' Вычислите секанс угла в радианах. Возврат 1.0 / Math.Cos(угол) Конечная функция
Пример — Exp
В этом примере метод Exp класса Math используется для возврата e в степени.
Общественная функция Sinh (угол как двойной) Как двойной ' Вычислите гиперболический синус угла в радианах. Возврат (Math.Exp(угол) - Math.Exp(-угол)) / 2.0 Конечная функция
Пример — Log
В этом примере используется метод Log класса Math для возврата натурального логарифма числа.
Публичная функция Asinh(значение как двойное) как двойное ' Вычислите обратный гиперболический синус в радианах. Возврат Math.Log(значение + Math.Sqrt(значение * значение + 1.0)) Конечная функция
Пример — округление
В этом примере используется метод Round класса Math для округления числа до ближайшего целого числа.
Dim myVar2 As Double = Math.Round(2.8) Console. WriteLine(myVar2) ' Код выдает следующий результат: 3
В этом примере метод Sign класса Math используется для определения знака числа.
Dim mySign1 As Integer = Math.Sign(12) Dim mySign2 As Integer = Math.Sign(-2.4) Dim mySign3 As Integer = Math.Sign(0) Console.WriteLine(mySign1) Console.WriteLine(mySign2) Console.WriteLine(mySign3) ' Код выдает следующий результат: ' 1 '-1 0
Пример — Sin
В этом примере метод Sin класса Math используется для возврата синуса угла.
Общая функция Csc(угол как двойной) Как двойной ' Вычислить косеканс угла в радианах. Возврат 1.0 / Math.Sin(угол) Конечная функция
Пример — Sqrt
В этом примере используется метод Sqrt класса Math для вычисления квадратного корня числа.
Dim mySqrt1 As Double = Math.Sqrt(4)
Dim mySqrt2 As Double = Math.Sqrt(23)
Dim mySqrt3 As Double = Math.Sqrt(0)
Dim mySqrt4 As Double = Math.Sqrt(-4)
Console.WriteLine(mySqrt1)
Console.WriteLine(mySqrt2)
Console.