|
Categorias
|
Funciones recursivas en visual basic 2005
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
Articulos relacionados:
|








(MÓDULO DE LAS FUNCIONES
RECURSIVAS)
(FORMULARIO DE INICIO)
(FORMULARIO DE a^n)
(FORMULARIO COMBINATORIO)
(FORMULARIO FIBONACCI)
(FORMULARIO MÁXIMO COMÚN
DIVISOR)