Monografias | Funciones recursivas en visual basic 2005Funciones recursivas en visual basic 2005Resumen: A continuación se muestra un programa desarrollado en Visual Basic 2005 que utiliza funciones recursivas para resolver ejercicios comunes de programación.
DESARROLLO
Module
Module1
Public Function
potencia(ByVal a As
Integer, ByVal
n As Integer)
As Integer
'Esta función recursiva es para
calcular el resultado de a^n.
If n = 0 Then
'Todo número elevado a la 0 da
como resultado 1.
Return
1
Else
Return a * potencia(a, n - 1)
'Aplicando recursividad.
End
If
End
Function
Public
Function combinatorio(ByVal
n As Integer,
ByVal r As
Integer) As
Integer
'Esta función recursiva es para calcular el combinatorio, por
ejemplo "8C3=56", que significa que 8 elementos tomando 3 a la vez da un
combinatorio de 56 posibilidades.
If
(r = 0) Or (r = n)
Then
Return 1
Else
If (r = 1)
Then
Return n
Else
Return
combinatorio(n - 1, r) + combinatorio(n - 1, r - 1)
'Aplicando recursividad.
End
If
End
If
End
Function
Public
Function fibonacci(ByVal
numero As Integer)
As Integer
'Esta función recursiva es para
calcular el fibonacci de un número dado.
If
(numero = 0) Or (numero = 1)
Then
Return 1
Else
Return fibonacci(numero - 1) + fibonacci(numero
- 2) 'Aplicando recursividad.
End
If
End
Function
Public Function
mcd(ByVal numero1 As
Integer, ByVal
numero2 As Integer)
As
Integer
If (numero2 = 0)
Then
Return numero1
Else
Return
mcd(numero2, numero1 Mod numero2)
'Aplicando recursividad.
End
If
End
Function
End
Module
Public
Class Form1
Private Sub
an_Click(ByVal sender
As System.Object, ByVal e
As System.EventArgs)
Handles an.Click
an1.Show()
'Mostrar el formulario "an".
Me.Hide()
'Ocultar el formulario actual.
End
Sub
Private
Sub fibonacci_Click(ByVal
sender As System.Object,
ByVal e As
System.EventArgs) Handles fibonacci.Click
Me.Hide()
'Ocultar el formulario actual.
fibonacci1.Show() 'Mostrar el
formulario "fibonacci".
End
Sub
Private Sub
mcd_Click(ByVal sender
As System.Object,
ByVal e As System.EventArgs)
Handles mcd.Click
Me.Hide()
'Ocultar el formulario actual.
mcd1.Show()
'Mostrar el formulario "mcd".
End
Sub
Private Sub
combinatorio_Click(ByVal sender
As System.Object,
ByVal e As System.EventArgs)
Handles combinatorio.Click
Me.Hide()
'Ocultar el formulario actual.
combinatorio1.Show() 'Mostrar
el formulario "combinatorio".
End
Sub
End
Class
Public
Class an1
Private Sub
menu_Click(ByVal sender
As System.Object,
ByVal e As System.EventArgs)
Handles menu.Click
Form1.Show()
'Mostrar el formulario "Form1".
Me.Hide()
'Ocultar el formulario actual.
End
Sub
Private Sub
TextBox1_KeyPress(ByVal sender
As Object,
ByVal e As
System.Windows.Forms.KeyPressEventArgs) Handles
TextBox1.KeyPress
If
(Asc(e.KeyChar) >= 48 And Asc(e.KeyChar) <= 57)
Or (Asc(e.KeyChar) = 8)
Then
'Los únicos caracteres que se permitirá introducir en el TextBox
serán los números del 0 al 9 (ASCII del 48 al 57).
'No se hace nada porque el caracter
presionado es válido.
Else
'Beep() 'Emite sonido cuando se
presiona una tecla que no está permitida o que es inválida.
e.KeyChar = ""
'Reemplaza la tecla digitada con el
valor de nada para que no se puedan introducir caracteres inválidos.
End
If
End
Sub
Private Sub
TextBox2_KeyPress(ByVal sender
As Object,
ByVal e As
System.Windows.Forms.KeyPressEventArgs) Handles
TextBox2.KeyPress
If
(Asc(e.KeyChar) >= 48 And Asc(e.KeyChar) <= 57)
Or (Asc(e.KeyChar) = 8)
Then
'Los únicos caracteres que se permitirá introducir en el TextBox
serán los números del 0 al 9 (ASCII del 48 al 57).
'No se hace nada porque el caracter
presionado es válido.
Else
'Beep() 'Emite sonido cuando se
presiona una tecla que no está permitida o que es inválida.
e.KeyChar = ""
'Reemplaza la tecla digitada con el
valor de nada para que no se puedan introducir caracteres inválidos.
End
If
End
Sub
Private Sub
Button1_Click(ByVal sender
As System.Object,
ByVal e As System.EventArgs)
Handles Button1.Click
TextBox1.Text = ""
TextBox2.Text = ""
TextBox3.Text = ""
End
Sub
Private Sub
calcular_Click(ByVal sender
As System.Object,
ByVal e As System.EventArgs)
Handles calcular.Click
TextBox3.Text
= ""
'Para que limpie el resultado de procesos anteriores.
If
(TextBox1.Text = "")
Or (TextBox2.Text =
"")
Then
MsgBox("Escriba
los valores de a y n.", MsgBoxStyle.Exclamation,
"Funciones Recursivas")
Else
If (TextBox1.Text =
"0") And (TextBox2.Text
= "0") Then
'Es como querer elevar 0^0, que
produce error.
MsgBox("0^0 produce error. Favor verificar los
valores introducidos.", MsgBoxStyle.Exclamation,
"Funciones Recursivas")
Else
TextBox3.Text = potencia(TextBox1.Text, TextBox2.Text)
End
If
End
If
End
Sub
End
Class
Public
Class combinatorio1
Private Sub
menu_Click(ByVal sender
As System.Object,
ByVal e As System.EventArgs)
Handles menu.Click
Form1.Show()
'Mostrar el formulario "Form1".
Me.Hide()
'Ocultar el formulario actual.
End
Sub
Private Sub
TextBox1_KeyPress(ByVal sender
As Object,
ByVal e As
System.Windows.Forms.KeyPressEventArgs) Handles
TextBox1.KeyPress
If
(Asc(e.KeyChar) >= 48 And Asc(e.KeyChar) <= 57)
Or (Asc(e.KeyChar) = 8)
Then
'Los únicos caracteres que se permitirá introducir en el TextBox
serán los números del 0 al 9 (ASCII del 48 al 57).
'No se hace nada porque el caracter
presionado es válido.
Else
'Beep() 'Emite sonido cuando se
presiona una tecla que no está permitida o que es inválida.
e.KeyChar = ""
'Reemplaza la tecla digitada con el
valor de nada para que no se puedan introducir caracteres inválidos.
End
If
End
Sub
Private Sub
TextBox2_KeyPress(ByVal sender
As Object,
ByVal e As
System.Windows.Forms.KeyPressEventArgs) Handles
TextBox2.KeyPress
If
(Asc(e.KeyChar) >= 48 And Asc(e.KeyChar) <= 57)
Or (Asc(e.KeyChar) = 8)
Then
'Los únicos caracteres que se permitirá introducir en el TextBox
serán los números del 0 al 9 (ASCII del 48 al 57).
'No se hace nada porque el caracter
presionado es válido.
Else
'Beep() 'Emite sonido cuando se
presiona una tecla que no está permitida o que es inválida.
e.KeyChar = ""
'Reemplaza la tecla digitada con el
valor de nada para que no se puedan introducir caracteres inválidos.
End
If
End
Sub
Private Sub
Button1_Click(ByVal sender
As System.Object,
ByVal e As System.EventArgs)
Handles Button1.Click
TextBox1.Text = ""
TextBox2.Text = ""
TextBox3.Text = ""
End
Sub
Private Sub
calcular_Click(ByVal sender
As System.Object,
ByVal e As System.EventArgs)
Handles calcular.Click
TextBox3.Text
= ""
'Para que limpie el resultado de procesos anteriores.
If
(TextBox1.Text = "")
Or (TextBox2.Text =
"")
Then
MsgBox("Escriba
los valores de n y r.", MsgBoxStyle.Exclamation,
"Funciones Recursivas")
Else
If (Val(TextBox2.Text) > Val(TextBox1.Text))
Then
'El valor de r no puede ser mayor que el valor de n porque no se
puede decir "8C9", pues eso devuelve error, no se puede tener 8 elementos y
tomar 9 a la vez.
MsgBox("El valor de r no puede ser mayor que el
valor de n.", MsgBoxStyle.Exclamation,
"Funciones Recursivas")
Else
TextBox3.Text = combinatorio(TextBox1.Text, TextBox2.Text)
End
If
End
If
End
Sub
End
Class
Private Sub
menu_Click(ByVal sender
As System.Object,
ByVal e As System.EventArgs)
Handles menu.Click
Form1.Show()
'Mostrar el formulario "Form1".
Me.Hide()
'Ocultar el formulario actual.
End
Sub
Private Sub
TextBox1_KeyPress(ByVal sender
As Object,
ByVal e As
System.Windows.Forms.KeyPressEventArgs) Handles
TextBox1.KeyPress
If
(Asc(e.KeyChar) >= 48 And Asc(e.KeyChar) <= 57)
Or (Asc(e.KeyChar) = 8)
Then
'Los únicos caracteres que se permitirá introducir en el TextBox
serán los números del 0 al 9 (ASCII del 48 al 57).
'No se hace nada porque el caracter
presionado es válido.
Else
'Beep() 'Emite sonido cuando se
presiona una tecla que no está permitida o que es inválida.
e.KeyChar = ""
'Reemplaza la tecla digitada con el
valor de nada para que no se puedan introducir caracteres inválidos.
End
If
End
Sub
Private Sub
Button1_Click(ByVal sender
As System.Object,
ByVal e As System.EventArgs)
Handles Button1.Click
TextBox1.Text = ""
TextBox3.Text = ""
End
Sub
Private
Sub calcular_Click(ByVal
sender As System.Object,
ByVal e As
System.EventArgs) Handles calcular.Click
TextBox3.Text
= ""
'Para que limpie el resultado de procesos anteriores.
If (TextBox1.Text =
"")
Then
MsgBox("Escriba
el valor del número a evaluar.", MsgBoxStyle.Exclamation,
"Funciones Recursivas")
Else
TextBox3.Text = fibonacci(TextBox1.Text)
End
If
End
Sub
End
Class
Private Sub
menu_Click(ByVal sender
As System.Object,
ByVal e As System.EventArgs)
Handles menu.Click
Form1.Show()
'Mostrar el formulario "Form1".
Me.Hide()
'Ocultar el formulario actual.
End
Sub
Private Sub
TextBox1_KeyPress(ByVal sender
As Object,
ByVal e As
System.Windows.Forms.KeyPressEventArgs) Handles
TextBox1.KeyPress
If
(Asc(e.KeyChar) >= 48 And Asc(e.KeyChar) <= 57)
Or (Asc(e.KeyChar) = 8)
Then
'Los únicos caracteres que se permitirá introducir en el TextBox
serán los números del 0 al 9 (ASCII del 48 al 57).
'No se hace nada porque el caracter
presionado es válido.
Else
'Beep() 'Emite sonido cuando se
presiona una tecla que no está permitida o que es inválida.
e.KeyChar = ""
'Reemplaza la tecla digitada con el
valor de nada para que no se puedan introducir caracteres inválidos.
End
If
End
Sub
Private Sub
TextBox2_KeyPress(ByVal sender
As Object,
ByVal e As
System.Windows.Forms.KeyPressEventArgs) Handles
TextBox2.KeyPress
If
(Asc(e.KeyChar) >= 48 And Asc(e.KeyChar) <= 57)
Or (Asc(e.KeyChar) = 8)
Then
'Los únicos caracteres que se permitirá introducir en el TextBox
serán los números del 0 al 9 (ASCII del 48 al 57).
'No se hace nada porque el caracter
presionado es válido.
Else
'Beep() 'Emite sonido cuando se
presiona una tecla que no está permitida o que es inválida.
e.KeyChar = ""
'Reemplaza la tecla digitada con el
valor de nada para que no se puedan introducir caracteres inválidos.
End
If
End
Sub
Private Sub
Button1_Click(ByVal sender
As System.Object,
ByVal e As System.EventArgs)
Handles Button1.Click
TextBox1.Text = ""
TextBox2.Text = ""
TextBox3.Text = ""
End
Sub
Private Sub
calcular_Click(ByVal sender
As System.Object,
ByVal e As System.EventArgs)
Handles calcular.Click
TextBox3.Text
= ""
'Para que limpie el resultado de procesos anteriores.
If
(TextBox1.Text = "")
Or (TextBox2.Text =
"")
Then
MsgBox("Escriba
los valores de los números a evaluar.", MsgBoxStyle.Exclamation,
"Funciones Recursivas")
Else
If (Val(TextBox2.Text) > Val(TextBox1.Text))
Then
'El número mayor es el que debe recibir la función como primer
parámetro.
TextBox3.Text = mcd(TextBox2.Text, TextBox1.Text)
Else
'En caso que los valores del
TextBox1 y TextBox2 sean iguales o que el TextBox1 tiene el número mayor, se la
da como primer parámetro de la función el TextBox1.
TextBox3.Text
= mcd(TextBox1.Text, TextBox2.Text)
End
If
End
If
End
Sub
End
Class Publicación enviada por Jaime Montoya Contactar http://www.jaimemontoya.com/ Código ISPN de la Publicación EkpklVEkEFEDkCGYHt Publicado Tuesday 12 de February de 2008 Ultimas Publicaciones en ilustrados.com
ilustrados.com nace con el fin difundir el conocimiento publicando trabajos de investigación, monografias, tesis, presentaciones powerpoint y afines. Publicar trabajos en ilustrados.com ha alcanzado prestigio y reconocimiento internacional siendo cada vez más el número de académicos, empresas, investigadores, científicos que consultan las publicaciones de nuestro portal. | |||||||||