Posted on October 7th, 2006
18295 views
In any projects, we often need to use some functions or algorithms that are not prebuilt in VB. In this tutorial, you will learn how to use many of these functions and algorithms.
Custom Base Log (log x) Normally, the default log in VB use a base 10, sometimes you need to set your own base (2 for example in binary). The formula is quite simple: (log x) / (log b) "x" is the number we want the log to be and "b" is the base. Here's the code for a base 2: Public Function log2(n As Double) As Double Dim p As Double p = Log(n) / Log(2) log2 = p End Function You could of course set the base as a parameter of the function. Factorial (!n) This function let you multiply numbers by their previous. For example, factorial of 5 would be 1x2x3x4x5. In VB, we simply use a For to increment the multiplication. Here's the code: Public Function facto(n As Double) As Double Dim rep As Double Dim i As Double rep = 1 For i = 1 To n rep = rep * i Next i facto = rep End Function The E number (e) The number behind many things. Ever knew what the E number meant on your calculator, why it's giving 2,718...? It's actually simple, it can be calculated with the help of the above function (Factorial). Here's a sample of the formula: e = 1/!1 + 1/!2 + 1/3! + 1/4! + 1/5! + 1/6! + 1/7! + 1/!8.... The more operations you set, the more the e number will be precise. Note that in this code, i use the above function (Factorial). The For is used to specify the current Factorial to calculate. (!i) Public Function facto2(n As Double) As Double Dim rep As Double Dim i As Double rep = 1 For i = 1 To n rep = rep + (1 / facto(i)) Next i facto2 = rep End Function Fibonnaci The fibonnaci sequence is generated by making an addition of the previous number and the current one, just like Fibonnaci of 5 would be 1+2+3+4+5. Of course, we could use a For loop to achieve this but why not using a recursive function? In other words, it's true that the current number is the addition of the previous Fibonnaci sequence + the other one before. So we just need to call the function inside the current one indefinitly until we reach a "n" value of 1 where it's known that the result is 1. Public Function fibon(ByVal n As Byte) As Double If n < 2 Then fibon = 1 Else fibon = fibon(n - 2) + fibon(n - 1) End If End Function Root A square root can be quite simple but when it comes to cubic or more, a function might be helpful. A square root is exactly the same thing as saying: x ^ 1/2. So we can use this to calculate any root. (Short code...) Public Function racine_n(ByVal x As Double, ByVal n As Byte) As Double racine_n = x ^ (1 / n) End Function More functions and sort algorithms (Mergesort, Fusionsort, etc.) to come in future tutorials! |