**Functions**by Peter Gill

# Functions

In the last section we covered functions that do work but do not return any values. The functions below will do work and also return a value.

The following function can be used to do a calculation an it will return a decimal value of the result.

```
Public Shared Function Calculate(ByVal num1 As Decimal, Byval num2 As Decimal, ByVal num3 As Decimal) As Decimal
Dim finalValue As Decimal = num1 * num2
finalValue = finalValue + num3
Return finalValue
End Function
```

This function can compute a fibonacci sequence up to 100. It returns an integer value with the count of how many loops were performed to run the calculation.

```
Public Shared Function FibonacciSequenceToOneHundred() As Integer
' See http://en.wikipedia.org/wiki/Fibonacci_number
' By definition, the first two Fibonacci numbers are 0 and 1, and each subsequent number is the sum of the previous two.
Dim a As Integer = 0
Dim b As integer = 1
Dim loopCount As Integer = b
While b < 1000
System.Console.WriteLine(b.Tostring)
a = b
b = a+b
loopCount +=1
End While
return loopCount
End Function
```

The main sub calls each function and sets variables with their return values.

```
Public Shared Sub Main()
Dim calculatedValue as Decimal = Calculate(5.25D, 2.0D, 10.50D)
System.Console.WriteLine("The calculated value is {0}", calculatedValue.ToString)
System.Console.WriteLine("")
System.Console.WriteLine("Calculate how many times through the loop to do a fibonacci sequence to 1000.")
Dim result As Integer = FibonacciSequenceToOneHundred()
System.Console.WriteLine("Had to loop {0} times. Never reached 1000 because of loop logic.", result)
End Sub
```

See: https://github.com/majorsilence/VB-Notes/tree/master/VbBook1/Functions