Bueno pues por si alguien quiere practicar o algo, les dejo este código que hice hace poco que es para obtener ecuaciones de newton-raphson simples con un máximo de 4 variables a través de los cortes de cadena, espero les sirva mínimo como ejemplo respecto a ciertas funciones que les llamen la atención, aunque el programa es bastante simple, consta de 3 formularios, la presentación, el segundo en el que ingresas la función y el tercero que te muestra los resultados.
(http://sia1.subirimagenes.net/img/2014/06/11/140611033137481450.png)
Public Class Form3
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
'salir
My.Computer.Audio.Play(My.Resources.click, AudioPlayMode.Background)
End
End Sub
Private Sub Button23_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button23.Click
'comenzar
My.Computer.Audio.Play(My.Resources.click, AudioPlayMode.Background)
Me.Hide()
Form1.Show()
End Sub
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
MsgBox("1.- Presione 'comenzar' para continuar o 'salir' para cerrar el programa." & vbCrLf & "2.- Escriba la función con los botones de la pantalla y el valor inicial de Xi con el teclado, no olvide poner siempre '+' o '-' dependiendo del signo sin importar que sea el primer elemento de la función." & vbCrLf & "3.- Si no coloca ningún valor en Xi se tomará como un valor inicial de 0." & vbCrLf & "4.- Presione 'guardar valores' para continuar y luego coloque el número de variables, sólo se permiten entre 1 y 4 variables." & vbCrLf & "5.- Si desea colocar sólo una 'x' escriba 'x^1' pues esto no afecta la función, o si desea colocar sólo un número por ejemplo '6' escriba '6x^0' pues esto tampoco afecta la función." & vbCrLf & "7.- Se mostrarán los resultados, presione 'volver' para regresar o 'salir' para finalizar el programa.", MsgBoxStyle.Information, "Instrucciones")
End Sub
Private Sub Form3_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
'Arranque del formulario
My.Computer.Audio.Play(My.Resources.inicio, AudioPlayMode.BackgroundLoop)
End Sub
End Class
(http://sia1.subirimagenes.net/img/2014/06/11/140611033138268995.png)
Public Class Form1
Private Sub Button_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button.Click
'botón 1
My.Computer.Audio.Play(My.Resources.click, AudioPlayMode.Background)
TextBox1.Text = TextBox1.Text & "1"
End Sub
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
'botón 2
My.Computer.Audio.Play(My.Resources.click, AudioPlayMode.Background)
TextBox1.Text = TextBox1.Text & "2"
End Sub
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
'botón 3
My.Computer.Audio.Play(My.Resources.click, AudioPlayMode.Background)
TextBox1.Text = TextBox1.Text & "3"
End Sub
Private Sub Button5_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button5.Click
'botón 4
My.Computer.Audio.Play(My.Resources.click, AudioPlayMode.Background)
TextBox1.Text = TextBox1.Text & "4"
End Sub
Private Sub Button4_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button4.Click
'botón 5
My.Computer.Audio.Play(My.Resources.click, AudioPlayMode.Background)
TextBox1.Text = TextBox1.Text & "5"
End Sub
Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click
'botón 6
My.Computer.Audio.Play(My.Resources.click, AudioPlayMode.Background)
TextBox1.Text = TextBox1.Text & "6"
End Sub
Private Sub Button8_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button8.Click
'botón 7
My.Computer.Audio.Play(My.Resources.click, AudioPlayMode.Background)
TextBox1.Text = TextBox1.Text & "7"
End Sub
Private Sub Button7_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button7.Click
'botón 8
My.Computer.Audio.Play(My.Resources.click, AudioPlayMode.Background)
TextBox1.Text = TextBox1.Text & "8"
End Sub
Private Sub Button6_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button6.Click
'botón 9
My.Computer.Audio.Play(My.Resources.click, AudioPlayMode.Background)
TextBox1.Text = TextBox1.Text & "9"
End Sub
Private Sub Button9_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button9.Click
'botón +
My.Computer.Audio.Play(My.Resources.click, AudioPlayMode.Background)
TextBox1.Text = TextBox1.Text & "+"
End Sub
Private Sub Button10_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button10.Click
'botón -
My.Computer.Audio.Play(My.Resources.click, AudioPlayMode.Background)
TextBox1.Text = TextBox1.Text & "-"
End Sub
Private Sub Button11_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)
'botón *
My.Computer.Audio.Play(My.Resources.click, AudioPlayMode.Background)
TextBox1.Text = TextBox1.Text & "*"
End Sub
Private Sub Button12_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)
'botón /
My.Computer.Audio.Play(My.Resources.click, AudioPlayMode.Background)
TextBox1.Text = TextBox1.Text & "/"
End Sub
Private Sub Button13_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button13.Click
'botón ^
My.Computer.Audio.Play(My.Resources.click, AudioPlayMode.Background)
TextBox1.Text = TextBox1.Text & "^"
End Sub
Private Sub Button15_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button15.Click
'botón x
My.Computer.Audio.Play(My.Resources.click, AudioPlayMode.Background)
TextBox1.Text = TextBox1.Text & "x"
End Sub
Private Sub Button21_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button21.Click
'botón retroceso
My.Computer.Audio.Play(My.Resources.click, AudioPlayMode.Background)
If TextBox1.Text.Length > 0 Then
TextBox1.Text = TextBox1.Text.Remove(TextBox1.Text.Length - 1, 1)
Else
MsgBox("No hay carácteres que borrar.", MsgBoxStyle.Information, "Error")
End If
End Sub
Private Sub Button16_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button16.Click
'botón 0
My.Computer.Audio.Play(My.Resources.click, AudioPlayMode.Background)
TextBox1.Text = TextBox1.Text & "0"
End Sub
Private Sub Button17_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button17.Click
'botón guardar
My.Computer.Audio.Play(My.Resources.click, AudioPlayMode.Background)
funcion = TextBox1.Text
If funcion <> "" Then
xi = Val(TextBox2.Text)
n = InputBox("Ingrese los términos:")
Me.Close()
Form2.Show()
Else
MsgBox("Por favor escriba la función.", MsgBoxStyle.Exclamation, "Alto")
End If
End Sub
Private Sub Button18_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button18.Click
'botón salir
My.Computer.Audio.Play(My.Resources.click, AudioPlayMode.Background)
End
End Sub
Private Sub Button22_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button22.Click
'punto
My.Computer.Audio.Play(My.Resources.click, AudioPlayMode.Background)
TextBox1.Text = TextBox1.Text & "."
End Sub
Private Sub Button23_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button23.Click
'botón limpiar
My.Computer.Audio.Play(My.Resources.click, AudioPlayMode.Background)
TextBox1.Clear()
TextBox2.Clear()
xi = 0
funcion = ""
n = 0
End Sub
End Class
(http://sia1.subirimagenes.net/img/2014/06/11/140611033148905486.png)
Public Class Form2
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
'botón salir
End
End Sub
Private Sub Button18_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button18.Click
'botón volver
My.Computer.Audio.Play(My.Resources.click, AudioPlayMode.Background)
Form1.TextBox1.Text = funcion
Form1.TextBox2.Text = xi
Me.Close()
Form1.Show()
End Sub
Private Sub Form2_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
'arranque del formulario
My.Computer.Audio.Play(My.Resources.tambor, AudioPlayMode.WaitToComplete)
Dim tamaño As Integer = 0
Dim corte As String
Dim uno As Integer
Dim dos As Integer
Dim tres As Integer
Dim cuatro As Integer
Dim bandera As Integer
Dim signo1 As Integer
Dim signo2 As Integer
Dim signo3 As Integer
Dim signo4 As Integer
Dim bloque1 As Double = 1
Dim bloque2 As Double = 1
Dim bloque3 As Double = 1
Dim bloque4 As Double = 1
Dim exponente As Integer
Dim numero1 As Double = 0
Dim numero2 As Double = 0
Dim numero3 As Double = 0
Dim numero4 As Double = 0
Dim corte2 As String = 0
Dim marca As Integer = 0
bandera = 0
For ciclo = 0 To 15
bloque1 = 1
bloque2 = 1
bloque3 = 1
bloque4 = 1
iteracion(ciclo) = ciclo
TextBox1.Text = TextBox1.Text & iteracion(ciclo) & vbCrLf
TextBox2.Text = TextBox2.Text & xi & vbCrLf
If n = 4 Then
tamaño = Len(funcion)
For x = 1 To tamaño
corte = Mid(funcion, x, 1)
If corte = "+" Or corte = "-" Then
If bandera = 3 Then
cuatro = x
bandera = 4
If corte = "+" Then
signo4 = 1
Else
signo4 = -1
End If
End If
If bandera = 2 Then
tres = x
bandera = 3
If corte = "+" Then
signo3 = 1
Else
signo3 = -1
End If
End If
If bandera = 1 Then
dos = x
bandera = 2
If corte = "+" Then
signo2 = 1
Else
signo2 = -1
End If
End If
If bandera = 0 Then
uno = x
bandera = 1
If corte = "+" Then
signo1 = 1
Else
signo1 = -1
End If
End If
End If
Next
uno = Len(funcion)
'bloque 1
For x = 1 To dos
corte = Mid(funcion, x, 1)
If corte = "x" Then
exponente = Val(Mid(funcion, x + 2, 1))
For x2 = 1 To exponente
bloque1 = bloque1 * xi
Next
corte2 = Mid(funcion, x - 1, 1)
If corte2 = "+" Or corte2 = "-" Then
bloque1 = bloque1 * signo1
Else
numero1 = Val(Mid(funcion, 2, x - 1))
bloque1 = bloque1 * numero1 * signo1
End If
End If
Next
'bloque2
For x = dos To tres
corte = Mid(funcion, x, 1)
If corte = "x" Then
exponente = Val(Mid(funcion, x + 2, 1))
For x2 = 1 To exponente
bloque2 = bloque2 * xi
Next
corte2 = Mid(funcion, x - 1, 1)
If corte2 = "+" Or corte2 = "-" Then
bloque2 = bloque2 * signo2
Else
numero2 = Val(Mid(funcion, dos + 1, x - 1))
bloque2 = bloque2 * numero2 * signo2
End If
End If
Next
'bloque 3
For x = tres To cuatro
corte = Mid(funcion, x, 1)
If corte = "x" Then
exponente = Val(Mid(funcion, x + 2, 1))
For x2 = 1 To exponente
bloque3 = bloque3 * xi
Next
corte2 = Mid(funcion, x - 1, 1)
If corte2 = "+" Or corte2 = "-" Then
bloque3 = bloque3 * signo3
Else
numero3 = Val(Mid(funcion, tres + 1, x - 1))
bloque3 = bloque3 * numero3 * signo3
End If
End If
Next
'bloque4
For x = cuatro To uno
corte = Mid(funcion, x, 1)
If corte = "x" Then
exponente = Val(Mid(funcion, x + 2, 1))
For x2 = 1 To exponente
bloque4 = bloque4 * xi
Next
corte2 = Mid(funcion, x - 1, 1)
If corte2 = "+" Or corte2 = "-" Then
bloque4 = bloque4 * signo4
Else
numero4 = Val(Mid(funcion, cuatro + 1, x - 1))
bloque4 = bloque4 * numero4 * signo4
End If
End If
Next
'f (xi)
n = 4
fxi(ciclo) = bloque1 + bloque2 + bloque3 + bloque4
TextBox3.Text = TextBox3.Text & fxi(ciclo) & vbCrLf
End If
'3 valores
If n = 3 Then
tamaño = Len(funcion)
For x = 1 To tamaño
corte = Mid(funcion, x, 1)
If corte = "+" Or corte = "-" Then
If bandera = 2 Then
tres = x
bandera = 3
If corte = "+" Then
signo3 = 1
Else
signo3 = -1
End If
End If
If bandera = 1 Then
dos = x
bandera = 2
If corte = "+" Then
signo2 = 1
Else
signo2 = -1
End If
End If
If bandera = 0 Then
uno = x
bandera = 1
If corte = "+" Then
signo1 = 1
Else
signo1 = -1
End If
End If
End If
Next
uno = Len(funcion)
'bloque 1
For x = 1 To dos
corte = Mid(funcion, x, 1)
If corte = "x" Then
exponente = Val(Mid(funcion, x + 2, 1))
For x2 = 1 To exponente
bloque1 = bloque1 * xi
Next
corte2 = Mid(funcion, x - 1, 1)
If corte2 = "+" Or corte2 = "-" Then
bloque1 = bloque1 * signo1
Else
numero1 = Val(Mid(funcion, 2, x - 1))
bloque1 = bloque1 * numero1 * signo1
End If
End If
Next
'bloque2
For x = dos To tres
corte = Mid(funcion, x, 1)
If corte = "x" Then
exponente = Val(Mid(funcion, x + 2, 1))
For x2 = 1 To exponente
bloque2 = bloque2 * xi
Next
corte2 = Mid(funcion, x - 1, 1)
If corte2 = "+" Or corte2 = "-" Then
bloque2 = bloque2 * signo2
Else
numero2 = Val(Mid(funcion, dos + 1, x - 1))
bloque2 = bloque2 * numero2 * signo2
End If
End If
Next
'bloque 3
For x = tres To uno
corte = Mid(funcion, x, 1)
If corte = "x" Then
exponente = Val(Mid(funcion, x + 2, 1))
For x2 = 1 To exponente
bloque3 = bloque3 * xi
Next
corte2 = Mid(funcion, x - 1, 1)
If corte2 = "+" Or corte2 = "-" Then
bloque3 = bloque3 * signo3
Else
numero3 = Val(Mid(funcion, tres + 1, x - 1))
bloque3 = bloque3 * numero3 * signo3
End If
End If
Next
'f (xi)
n = 3
fxi(ciclo) = bloque1 + bloque2 + bloque3
TextBox3.Text = TextBox3.Text & fxi(ciclo) & vbCrLf
End If
'2 valores
If n = 2 Then
tamaño = Len(funcion)
For x = 1 To tamaño
corte = Mid(funcion, x, 1)
If corte = "+" Or corte = "-" Then
If bandera = 1 Then
dos = x
bandera = 2
If corte = "+" Then
signo2 = 1
Else
signo2 = -1
End If
End If
If bandera = 0 Then
uno = x
bandera = 1
If corte = "+" Then
signo1 = 1
Else
signo1 = -1
End If
End If
End If
Next
uno = Len(funcion)
'bloque 1
For x = 1 To dos
corte = Mid(funcion, x, 1)
If corte = "x" Then
exponente = Val(Mid(funcion, x + 2, 1))
For x2 = 1 To exponente
bloque1 = bloque1 * xi
Next
corte2 = Mid(funcion, x - 1, 1)
If corte2 = "+" Or corte2 = "-" Then
bloque1 = bloque1 * signo1
Else
numero1 = Val(Mid(funcion, 2, x - 1))
bloque1 = bloque1 * numero1 * signo1
End If
End If
Next
'bloque2
For x = dos To uno
corte = Mid(funcion, x, 1)
If corte = "x" Then
exponente = Val(Mid(funcion, x + 2, 1))
For x2 = 1 To exponente
bloque2 = bloque2 * xi
Next
corte2 = Mid(funcion, x - 1, 1)
If corte2 = "+" Or corte2 = "-" Then
bloque2 = bloque2 * signo2
Else
numero2 = Val(Mid(funcion, dos + 1, x - 1))
bloque2 = bloque2 * numero2 * signo2
End If
End If
Next
'f (xi)
n = 2
fxi(ciclo) = bloque1 + bloque2
TextBox3.Text = TextBox3.Text & fxi(ciclo) & vbCrLf
End If
'1 valor
If n = 1 Then
tamaño = Len(funcion)
For x = 1 To tamaño
corte = Mid(funcion, x, 1)
If corte = "+" Or corte = "-" Then
If bandera = 0 Then
uno = x
bandera = 1
If corte = "+" Then
signo1 = 1
Else
signo1 = -1
End If
End If
End If
Next
uno = Len(funcion)
'bloque 1
For x = 1 To uno
corte = Mid(funcion, x, 1)
If corte = "x" Then
exponente = Val(Mid(funcion, x + 2, 1))
For x2 = 1 To exponente
bloque1 = bloque1 * xi
Next
corte2 = Mid(funcion, x - 1, 1)
If corte2 = "+" Or corte2 = "-" Then
bloque1 = bloque1 * signo1
Else
numero1 = Val(Mid(funcion, 2, x - 1))
bloque1 = bloque1 * numero1 * signo1
End If
End If
Next
n = 1
fxi(ciclo) = bloque1
TextBox3.Text = TextBox3.Text & fxi(ciclo) & vbCrLf
End If
'derivación **********************************************************************************************************
bloque1 = 1
bloque2 = 1
bloque3 = 1
bloque4 = 1
If n = 4 Then
tamaño = Len(funcion)
For x = 1 To tamaño
corte = Mid(funcion, x, 1)
If corte = "+" Or corte = "-" Then
If bandera = 3 Then
cuatro = x
bandera = 4
If corte = "+" Then
signo4 = 1
Else
signo4 = -1
End If
End If
If bandera = 2 Then
tres = x
bandera = 3
If corte = "+" Then
signo3 = 1
Else
signo3 = -1
End If
End If
If bandera = 1 Then
dos = x
bandera = 2
If corte = "+" Then
signo2 = 1
Else
signo2 = -1
End If
End If
If bandera = 0 Then
uno = x
bandera = 1
If corte = "+" Then
signo1 = 1
Else
signo1 = -1
End If
End If
End If
Next
uno = Len(funcion)
'bloque 1
For x = 1 To dos
corte = Mid(funcion, x, 1)
If corte = "x" Then
exponente = Val(Mid(funcion, x + 2, 1))
If exponente <> 1 And exponente <> 0 Then
corte2 = Mid(funcion, x - 1, 1)
If corte2 = "+" Or corte2 = "-" Then
numero1 = exponente
exponente = exponente - 1
For x2 = 1 To exponente
bloque1 = bloque1 * xi
Next
bloque1 = bloque1 * numero1 * signo1
Else
numero1 = Val(Mid(funcion, 2, x - 1))
numero1 = numero1 * exponente
exponente = exponente - 1
For x2 = 1 To exponente
bloque1 = bloque1 * xi
Next
bloque1 = bloque1 * numero1 * signo1
End If
Else
If exponente = 1 Then
corte2 = Mid(funcion, x - 1, 1)
If corte2 = "+" Or corte2 = "-" Then
bloque1 = 1 * signo1
Else
numero1 = Val(Mid(funcion, 2, x - 1))
numero1 = numero1 * 1
bloque1 = numero1 * signo1
End If
End If
If exponente = 0 Then
corte2 = Mid(funcion, x - 1, 1)
If corte2 = "+" Or corte2 = "-" Then
numero1 = 1
bloque1 = numero1 * signo1
Else
bloque1 = 0
End If
End If
End If
End If
Next
Nota: aún falta código pero no me deja ponerlo porque es demasiado XD si les interesa se los voy compartiendo, lo restante, ¡saludos! :D
Muy bueno bro!!!
Me trajo muchos recuerdos tu app!
Saludos!
ANTRAX