Monografias.com > Sin categoría
Descargar Imprimir Comentar Ver trabajos relacionados

Graficadora de funciones matemáticas en Visual Basic 2005 (página 6)




Enviado por jaimemontoya



Partes: 1, 2, 3, 4, 5, 6

grafico.DrawEllipse(Pens.White, coordenadaxadaptada,
coordenadayadaptada, 1, 1) 'Esta
línea del programa es la
encargada de poner los puntos, a partir de los cuales se
podrá visualizar la gráfica de las funciones. Como
ya se obtuvo el valor de
coordenadaadaptadax y el valor de coordenadaadaptaday, se ponen
esas coordenadas como un puntito, pues los parámetros que
se le dan de 1, 1; significan que de ancho y alto se le de 1
pixel para que quede un puntito, pues en realidad se está
utilizando la herramienta de dibujar una elipse.

Next

Else

MsgBox("Introduzca una
función
válida.", MsgBoxStyle.OkOnly,
"No se ha generado el
Assembly") 'Esto es en
el caso que la función introducida por el usuario no sea
reconocida como función matemática, por ejemplo si el usuario
escribe disparates.

grafico.Clear(Color.Black) 'Si no
se ha reconocido como función matemática la
función introducida por el usuario, entonces pone negro
todo el PictureBox.

End If

End Sub

Private Sub
disminuirzoom_Click(ByVal
sender As
System.Object, ByVal
e As
System.EventArgs) Handles disminuirzoom.Click

textboxxminimo.Text = Val(Int(textboxxminimo.Text) –
1) 'Si el usuario había
puesto -5 en xminimo, se cambia a -6. Con eso hay más
escalas y se logra alejar una imagen de la
gráfica o disminuir zoom.

textboxxmaximo.Text = Val(Int(textboxxmaximo.Text) +
1) 'Si el usuario había
puesto 5 en xmaximo, se cambia a 6. Con eso hay más
escalas y se logra alejar una imagen de la gráfica o
disminuir zoom.

textboxyminimo.Text = Val(Int(textboxyminimo.Text) –
1) 'Si el usuario había
puesto -5 en yminimo, se cambia a -6. Con eso hay más
escalas y se logra alejar una imagen de la gráfica o
disminuir zoom.

textboxymaximo.Text = Val(Int(textboxymaximo.Text) +
1) 'Si el usuario había
puesto 5 en ymaximo, se cambia a 6. Con eso hay más
escalas y se logra alejar una imagen de la gráfica o
disminuir zoom.

graficar_Click(sender, e) 'Se está llamando al procedimiento del
botón Graficar. Con eso hay más escalas y se logra
acercar la imagen de la gráfica o disminuir
zoom.

End Sub

Private Sub aumentarzoom_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles aumentarzoom.Click

textboxxminimo.Text = Val(Int(textboxxminimo.Text) +
1) 'Si el usuario había
puesto -5 en xminimo, se cambia a -4. Con eso hay menos escalas y
se logra acercar una imagen de la gráfica o aumentar
zoom.

textboxxmaximo.Text = Val(Int(textboxxmaximo.Text) –
1) 'Si el usuario había
puesto 5 en xmaximo, se lo cambia a 4. Con eso hay menos escalas
y se logra acercar una imagen de la gráfica o aumentar
zoom.

textboxyminimo.Text = Val(Int(textboxyminimo.Text) +
1) 'Si el usuario había
puesto -5 en yminimo, se cambia a -4. Con eso hay menos escalas y
se logra acercar una imagen de la gráfica o aumentar
zoom.

textboxymaximo.Text = Val(Int(textboxymaximo.Text) –
1) 'Si el usuario había
puesto 5 en ymaximo, se cambia a 4. Con eso hay menos escalas y
se logra acercar una imagen de la gráfica o aumentar
zoom.

graficar_Click(sender, e) 'Se está llamando al método o
procedimiento completo del botón graficar, pues luego de
haber cambiado las escalas se tiene que generar nuevamente la
gráfica con las escalas aumentadas o disminuidas. Se trata
del método para el botón graficar, del Public Sub
graficar_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles graficar.Click

End Sub

Private Sub arriba_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles arriba.Click

textboxyminimo.Text = Val(textboxyminimo.Text) +
1

textboxymaximo.Text = Val(textboxymaximo.Text) +
1

yminimo = Val(textboxyminimo.Text) + 1
'El gráfico no cambiará pero
esto hará que la vista del gráfico suba en el eje
y.

ymaximo = Val(textboxymaximo.Text) + 1
'El gráfico no cambiará pero
esto hará que la vista del gráfico suba en el eje
y.

xminimo = Val(textboxxminimo.Text) 'Variable ya declarada como Public.

xmaximo = Val(textboxxmaximo.Text) 'Variable ya declarada como Public.

Dim cerox
As Integer = ((400) / (xmaximo – xminimo)) *
(0 – xminimo) '400 son los pixeles
que hay en x. xminimo es la escala de inicio
en el eje x. xmaximo es la escala de fin en el eje x

Dim ceroy
As Integer = ((400) / (yminimo – ymaximo)) *
(0 – ymaximo)

Dim rayadeescala
As Integer

grafico = PictureBox1.CreateGraphics

grafico.Clear(Color.Black) 'Para que cada vez que se haga clic en el botón
Graficar, que borre el gráfico que estaba anteriormente
antes de crear uno nuevo, para que no quede un gráfico
sobre otro.

If yminimo < 0
Then 'Porque
si la escala mínima negativa de las y fuera cero o fuera
positiva, no se verá la línea del eje de las x al
graficar.

grafico.DrawLine(Pens.White, 0, ceroy, 400,
ceroy) 'Trazo de la línea
blanca horizontal (eje x).

End If

If xmaximo > 0
Then 'Porque
si la escala máxima positiva de las x fuera cero o
negativa, no se verá la línea del eje de las y al
graficar.

grafico.DrawLine(Pens.White, cerox, 0, cerox,
400) 'Trazo de la línea
blanca vertical (eje y).

End If

If yminimo < 0
Then 'Porque
si la escala mínima de las y fuera cero o fuera positiva,
no se verá la línea del eje de las x al graficar, y
por lo tanto no se verían las rayitas de las escalas en el
eje de las x.

'Este For es para poner las rayitas de
escala del eje x positivo.

For a As Integer =
1 To xmaximo
'Se hacen las rayitas del eje x positivo,
desde el 0 hasta el valor máximo de la escala de las x. El
ciclo va desde uno porque no hace falta ponerlo desde cero, pues
una raya en el origen ni siquiera se vería porque
estaría ubicada sobre el eje y

rayadeescala = (((400) / (xmaximo – xminimo)) * (a –
xminimo)) '400 es el número
de pixeles que hay en el eje x.

grafico.DrawLine(Pens.White, rayadeescala, ceroy – 7,
rayadeescala, ceroy + 7) 'Los
números 7 significan el número de pixeles de la
rayita de la escala tanto hacia abajo como hacia arriba del eje
x, de modo que la longitud total de la rayita va a ser de 14
pixeles.

Next

'Este For es para poner las rayitas de
escala del eje x negativo.

For a As Integer =
xminimo To 0
'Se hacen las rayitas del eje x negativo,
desde el valor mímino de x hasta el cero. Al no ponerle
Step al For se sabe que va automáticamente de 1 en
1.

rayadeescala = (((400) / (xmaximo – xminimo)) * (a –
xminimo)) '400 es el número
de pixeles que hay en el eje x.

grafico.DrawLine(Pens.White, rayadeescala, ceroy – 7,
rayadeescala, ceroy + 7) 'Los
números 7 significan el número de
pixeles.

Next

End If

If xmaximo > 0
Then 'Porque
si la escala máxima de las x fuera cero o fuera negativa,
no se verá la línea del eje de las y al graficar, y
por lo tanto no se verían las rayitas de las escalas en el
eje de las y.

'Este For es para poner las rayitas de
escala del eje y positivo.

For a As Integer =
1 To ymaximo
'Se hacen las rayitas del eje y positivo,
desde el 0 hasta el valor máximo de la escala de las y. El
ciclo va desde uno porque no hace falta ponerlo desde cero, pues
una raya en el origen ni siquiera se vería porque
estaría ubicada sobre el eje x.

rayadeescala = (((400) / (yminimo – ymaximo)) * (a –
ymaximo)) '400 es el número
de pixeles que hay en el eje y.

grafico.DrawLine(Pens.White, cerox – 7, rayadeescala,
cerox + 7, rayadeescala) 'Los
número 7 significan el número de pixeles de la
rayita de la escala tanto hacia la izquierda como hacia la
derecha del eje y, de modo que la longitud total de la rayita va
a ser de 14 pixeles.

Next

'Este For es para poner las rayitas de
escala del eje y negativo.

For a As Integer =
yminimo To 0
'Se hacen las rayitas del eje y negativo,
desde el valor mínimo de y hasta el cero. Al no ponerle
Step al For se sabe que va automáticamente de 1 en
1.

rayadeescala = (((400) / (yminimo – ymaximo)) * (a –
ymaximo)) '400 es el número
de pixeles que hay en el eje y.

grafico.DrawLine(Pens.White, cerox – 7, rayadeescala,
cerox + 7, rayadeescala) 'Los
números 7 significan el número de pixeles de la
rayita de la escala tanto hacia la izquierda como hacia la
derecha del eje y, de modo que la longitud total de la rayita va
a ser de 14 pixeles.

Next

End If

'Se crea una nueva instancia de la
clase
Evaluador

Dim mEval
As New
Evaluador()

'Se crea una variable tipo string y le
asignamos la expresión que queremos evaluar

Dim mExpresion
As String = TextBox1.Text ' = "X"

'Se crea un objeto StringCollection y
agregamos los parámetros de entrada que usará el
método eval

Dim mParameters
As New
StringCollection()

mParameters.Add("ByVal X as
Double")

'Las funciones a utilizar pertenece al
espacio de nombres System.Math.

'se hace necesario entonces, crear un
objeto StringCollection y agregar

'el namespace System.Math.

Dim mNameSpaces
As New
StringCollection()

mNameSpaces.Add("System.Math")

'Se invoca el método
PrecompilarFunción y verificamos si se genero
correctamente el assembly.

If
mEval.PrecompilarAssembly(mExpresion, mParameters,
mNameSpaces) Then

'Si el assembly se generó
correctamente, se crea un array con los valores de
los parametros a evaluar

'Hasta este momento se tiene el plano
cartesiano con las escalas correspondientes. De aquí en
adelante el código
es para graficar la función.

For coordenadax
As Double = xminimo To xmaximo Step 0.01

Dim mParam() =
{coordenadax}

'Se invoca el método Evaluar y se
muestra el
resultado

coordenaday = mEval.Evaluar(mParam)

coordenadaxadaptada = (((400) / (xmaximo – xminimo)) *
(coordenadax – xminimo))

coordenadayadaptada = Int((((400) / (yminimo – ymaximo))
* (coordenaday – ymaximo)))

coordenadaxadaptada = (((400) / (xmaximo – xminimo)) *
(coordenadax – xminimo))

coordenadayadaptada = (((400) / (yminimo – ymaximo)) *
(coordenaday – ymaximo))

grafico.DrawEllipse(Pens.White, coordenadaxadaptada,
coordenadayadaptada, 1, 1)

Next

Else

MsgBox("No se ha generado
el Assembly")

End If

End Sub

Private Sub abajo_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles abajo.Click

textboxyminimo.Text = Val(textboxyminimo.Text) –
1

textboxymaximo.Text = Val(textboxymaximo.Text) –
1

yminimo = Val(textboxyminimo.Text) – 1
'El gráfico no cambiará pero
esto hará que la vista del gráfico baje en el eje
y.

ymaximo = Val(textboxymaximo.Text) – 1
'El gráfico no cambiará pero
esto hará que la vista del gráfico baje en el eje
y.

xminimo = Val(textboxxminimo.Text) 'Variable ya declarada como Public.

xmaximo = Val(textboxxmaximo.Text) 'Variable ya declarada como Public.

Dim cerox
As Integer = ((400) / (xmaximo – xminimo)) *
(0 – xminimo) '400 son los pixeles
que hay en x. xminimo es la escala de inicio en el eje x. xmaximo
es la escala de fin en el eje x

Dim ceroy
As Integer = ((400) / (yminimo – ymaximo)) *
(0 – ymaximo)

Dim rayadeescala
As Integer

grafico = PictureBox1.CreateGraphics

grafico.Clear(Color.Black) 'Para que cada vez que se haga clic en el botón
Graficar, que borre el gráfico que estaba anteriormente
antes de crear uno nuevo, para que no quede un gráfico
sobre otro.

If yminimo < 0
Then 'Porque
si la escala mínima negativa de las y fuera cero o fuera
positiva, no se verá la línea del eje de las x al
graficar.

grafico.DrawLine(Pens.White, 0, ceroy, 400,
ceroy) 'Trazo de la línea
blanca horizontal (eje x).

End If

If xmaximo > 0
Then 'Porque
si la escala máxima positiva de las x fuera cero o
negativa, no se verá la línea del eje de las y al
graficar.

grafico.DrawLine(Pens.White, cerox, 0, cerox,
400) 'Trazo de la línea
blanca vertical (eje y).

End If

If yminimo < 0
Then 'Porque
si la escala mínima de las y fuera cero o fuera positiva,
no se verá la línea del eje de las x al graficar, y
por lo tanto no se verían las rayitas de las escalas en el
eje de las x.

'Este For es para poner las rayitas de
escala del eje x positivo.

For a As Integer =
1 To xmaximo
'Se hacen las rayitas del eje x positivo,
desde el 0 hasta el valor máximo de la escala de las x. El
ciclo va desde uno porque no hace falta ponerlo desde cero, pues
una raya en el origen ni siquiera se vería porque
estaría ubicada sobre el eje y

rayadeescala = (((400) / (xmaximo – xminimo)) * (a –
xminimo)) '400 es el número
de pixeles que hay en el eje x.

grafico.DrawLine(Pens.White, rayadeescala, ceroy – 7,
rayadeescala, ceroy + 7) 'Los
números 7 significan el número de pixeles de la
rayita de la escala tanto hacia abajo como hacia arriba del eje
x, de modo que la longitud total de la rayita va a ser de 14
pixeles.

Next

'Este For es para poner las rayitas de
escala del eje x negativo.

For a As Integer =
xminimo To 0
'Se hacen las rayitas del eje x negativo,
desde el valor mímino de x hasta el cero. Al no ponerle
Step al For se sabe que va automáticamente de 1 en
1.

rayadeescala = (((400) / (xmaximo – xminimo)) * (a –
xminimo)) '400 es el número
de pixeles que hay en el eje x.

grafico.DrawLine(Pens.White, rayadeescala, ceroy – 7,
rayadeescala, ceroy + 7) 'Los
números 7 significan el número de
pixeles.

Next

End If

If xmaximo > 0
Then 'Porque
si la escala máxima de las x fuera cero o fuera negativa,
no se verá la línea del eje de las y al graficar, y
por lo tanto no se verían las rayitas de las escalas en el
eje de las y.

'Este For es para poner las rayitas de
escala del eje y positivo.

For a As Integer =
1 To ymaximo
'Se hacen las rayitas del eje y positivo,
desde el 0 hasta el valor máximo de la escala de las y. El
ciclo va desde uno porque no hace falta ponerlo desde cero, pues
una raya en el origen ni siquiera se vería porque
estaría ubicada sobre el eje x.

rayadeescala = (((400) / (yminimo – ymaximo)) * (a –
ymaximo)) '400 es el número
de pixeles que hay en el eje y.

grafico.DrawLine(Pens.White, cerox – 7, rayadeescala,
cerox + 7, rayadeescala) 'Los
número 7 significan el número de pixeles de la
rayita de la escala tanto hacia la izquierda como hacia la
derecha del eje y, de modo que la longitud total de la rayita va
a ser de 14 pixeles.

Next

'Este For es para poner las rayitas de
escala del eje y negativo.

For a As Integer =
yminimo To 0
'Se hacen las rayitas del eje y negativo,
desde el valor mínimo de y hasta el cero. Al no ponerle
Step al For se sabe que va automáticamente de 1 en
1.

rayadeescala = (((400) / (yminimo – ymaximo)) * (a –
ymaximo)) '400 es el número
de pixeles que hay en el eje y.

grafico.DrawLine(Pens.White, cerox – 7, rayadeescala,
cerox + 7, rayadeescala) 'Los
números 7 significan el número de pixeles de la
rayita de la escala tanto hacia la izquierda como hacia la
derecha del eje y, de modo que la longitud total de la rayita va
a ser de 14 pixeles.

Next

End If

'Se crea una nueva instancia de la clase
Evaluador

Dim mEval
As New
Evaluador()

'Se crea una variable tipo string y le
asignamos la expresión que queremos evaluar

Dim mExpresion
As String = TextBox1.Text ' = "X"

'Se crea un objeto StringCollection y
agregamos los parámetros de entrada que usará el
método eval

Dim mParameters
As New
StringCollection()

mParameters.Add("ByVal X as
Double")

'Las funciones a utilizar pertenece al
espacio de nombres System.Math.

'se hace necesario entonces, crear un
objeto StringCollection y agregar

'el namespace System.Math.

Dim mNameSpaces
As New
StringCollection()

mNameSpaces.Add("System.Math")

'Se invoca el método
PrecompilarFunción y verificamos si se genero
correctamente el assembly.

If
mEval.PrecompilarAssembly(mExpresion, mParameters,
mNameSpaces) Then

'Si el assembly se generó
correctamente, se crea un array con los valores de los
parametros a evaluar

'Hasta este momento se tiene el plano
cartesiano con las escalas correspondientes. De aquí en
adelante el código es para graficar la
función.

For coordenadax
As Double = xminimo To xmaximo Step 0.01

Dim mParam() =
{coordenadax}

'Se invoca el método Evaluar y se
muestra el resultado

coordenaday = mEval.Evaluar(mParam)

coordenadaxadaptada = (((400) / (xmaximo – xminimo)) *
(coordenadax – xminimo))

coordenadayadaptada = Int((((400) / (yminimo – ymaximo))
* (coordenaday – ymaximo)))

coordenadaxadaptada = (((400) / (xmaximo – xminimo)) *
(coordenadax – xminimo))

coordenadayadaptada = (((400) / (yminimo – ymaximo)) *
(coordenaday – ymaximo))

grafico.DrawEllipse(Pens.White, coordenadaxadaptada,
coordenadayadaptada, 1, 1)

Next

Else

MsgBox("No se ha generado
el Assembly")

End If

End Sub

Private Sub derecha_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles derecha.Click

textboxxminimo.Text = Val(textboxxminimo.Text) +
1

textboxxmaximo.Text = Val(textboxxmaximo.Text) +
1

xminimo = Val(textboxxminimo.Text) + 1
'El gráfico no cambiará pero
esto hará que la vista del gráfico se mueva a la
derecha del eje x.

xmaximo = Val(textboxxmaximo.Text) + 1
'El gráfico no cambiará pero
esto hará que la vista del gráfico se mueva a la
derecha del eje x.

yminimo = Val(textboxyminimo.Text) 'Variable ya declarada como Public.

ymaximo = Val(textboxymaximo.Text) 'Variable ya declarada como Public.

Dim cerox
As Integer = ((400) / (xmaximo – xminimo)) *
(0 – xminimo) '400 son los pixeles
que hay en x. xminimo es la escala de inicio en el eje x. xmaximo
es la escala de fin en el eje x

Dim ceroy
As Integer = ((400) / (yminimo – ymaximo)) *
(0 – ymaximo)

Dim rayadeescala
As Integer

grafico = PictureBox1.CreateGraphics

grafico.Clear(Color.Black) 'Para que cada vez que se haga clic en el botón
Graficar, que borre el gráfico que estaba anteriormente
antes de crear uno nuevo, para que no quede un gráfico
sobre otro.

If yminimo < 0
Then 'Porque
si la escala mínima negativa de las y fuera cero o fuera
positiva, no se verá la línea del eje de las x al
graficar.

grafico.DrawLine(Pens.White, 0, ceroy, 400,
ceroy) 'Trazo de la línea
blanca horizontal (eje x).

End If

If xmaximo > 0
Then 'Porque
si la escala máxima positiva de las x fuera cero o
negativa, no se verá la línea del eje de las y al
graficar.

grafico.DrawLine(Pens.White, cerox, 0, cerox,
400) 'Trazo de la línea
blanca vertical (eje y).

End If

If yminimo < 0
Then 'Porque
si la escala mínima de las y fuera cero o fuera positiva,
no se verá la línea del eje de las x al graficar, y
por lo tanto no se verían las rayitas de las escalas en el
eje de las x.

'Este For es para poner las rayitas de
escala del eje x positivo.

For a As Integer =
1 To xmaximo
'Se hacen las rayitas del eje x positivo,
desde el 0 hasta el valor máximo de la escala de las x. El
ciclo va desde uno porque no hace falta ponerlo desde cero, pues
una raya en el origen ni siquiera se vería porque
estaría ubicada sobre el eje y

rayadeescala = (((400) / (xmaximo – xminimo)) * (a –
xminimo)) '400 es el número
de pixeles que hay en el eje x.

grafico.DrawLine(Pens.White, rayadeescala, ceroy – 7,
rayadeescala, ceroy + 7) 'Los
números 7 significan el número de pixeles de la
rayita de la escala tanto hacia abajo como hacia arriba del eje
x, de modo que la longitud total de la rayita va a ser de 14
pixeles.

Next

'Este For es para poner las rayitas de
escala del eje x negativo.

For a As Integer =
xminimo To 0
'Se hacen las rayitas del eje x negativo,
desde el valor mímino de x hasta el cero. Al no ponerle
Step al For se sabe que va automáticamente de 1 en
1.

rayadeescala = (((400) / (xmaximo – xminimo)) * (a –
xminimo)) '400 es el número
de pixeles que hay en el eje x.

grafico.DrawLine(Pens.White, rayadeescala, ceroy – 7,
rayadeescala, ceroy + 7) 'Los
números 7 significan el número de
pixeles.

Next

End If

If xmaximo > 0
Then 'Porque
si la escala máxima de las x fuera cero o fuera negativa,
no se verá la línea del eje de las y al graficar, y
por lo tanto no se verían las rayitas de las escalas en el
eje de las y.

'Este For es para poner las rayitas de
escala del eje y positivo.

For a As Integer =
1 To ymaximo
'Se hacen las rayitas del eje y positivo,
desde el 0 hasta el valor máximo de la escala de las y. El
ciclo va desde uno porque no hace falta ponerlo desde cero, pues
una raya en el origen ni siquiera se vería porque
estaría ubicada sobre el eje x.

rayadeescala = (((400) / (yminimo – ymaximo)) * (a –
ymaximo)) '400 es el número
de pixeles que hay en el eje y.

grafico.DrawLine(Pens.White, cerox – 7, rayadeescala,
cerox + 7, rayadeescala) 'Los
número 7 significan el número de pixeles de la
rayita de la escala tanto hacia la izquierda como hacia la
derecha del eje y, de modo que la longitud total de la rayita va
a ser de 14 pixeles.

Next

'Este For es para poner las rayitas de
escala del eje y negativo.

For a As Integer =
yminimo To 0
'Se hacen las rayitas del eje y negativo,
desde el valor mínimo de y hasta el cero. Al no ponerle
Step al For se sabe que va automáticamente de 1 en
1.

rayadeescala = (((400) / (yminimo – ymaximo)) * (a –
ymaximo)) '400 es el número
de pixeles que hay en el eje y.

grafico.DrawLine(Pens.White, cerox – 7, rayadeescala,
cerox + 7, rayadeescala) 'Los
números 7 significan el número de pixeles de la
rayita de la escala tanto hacia la izquierda como hacia la
derecha del eje y, de modo que la longitud total de la rayita va
a ser de 14 pixeles.

Next

End If

'Se crea una nueva instancia de la clase
Evaluador

Dim mEval
As New
Evaluador()

'Se crea una variable tipo string y le
asignamos la expresión que queremos evaluar

Dim mExpresion
As String = TextBox1.Text ' = "X"

'Se crea un objeto StringCollection y
agregamos los parámetros de entrada que usará el
método eval

Dim mParameters
As New
StringCollection()

mParameters.Add("ByVal X as
Double")

'Las funciones a utilizar pertenece al
espacio de nombres System.Math.

'se hace necesario entonces, crear un
objeto StringCollection y agregar

'el namespace System.Math.

Dim mNameSpaces
As New
StringCollection()

mNameSpaces.Add("System.Math")

'Se invoca el método
PrecompilarFunción y verificamos si se genero
correctamente el assembly.

If
mEval.PrecompilarAssembly(mExpresion, mParameters,
mNameSpaces) Then

'Si el assembly se generó
correctamente, se crea un array con los valores de los parametros
a evaluar

'Hasta este momento se tiene el plano
cartesiano con las escalas correspondientes. De aquí en
adelante el código es para graficar la
función.

For coordenadax
As Double = xminimo To xmaximo Step 0.01

Dim mParam() =
{coordenadax}

'Se invoca el método Evaluar y se
muestra el resultado

coordenaday = mEval.Evaluar(mParam)

coordenadaxadaptada = (((400) / (xmaximo – xminimo)) *
(coordenadax – xminimo))

coordenadayadaptada = Int((((400) / (yminimo – ymaximo))
* (coordenaday – ymaximo)))

coordenadaxadaptada = (((400) / (xmaximo – xminimo)) *
(coordenadax – xminimo))

coordenadayadaptada = (((400) / (yminimo – ymaximo)) *
(coordenaday – ymaximo))

grafico.DrawEllipse(Pens.White, coordenadaxadaptada,
coordenadayadaptada, 1, 1)

Next

Else

MsgBox("No se ha generado
el Assembly")

End If

End Sub

Private Sub izquierda_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles izquierda.Click

textboxxmaximo.Text = Val(textboxxmaximo.Text) –
1

textboxxminimo.Text = Val(textboxxminimo.Text) –
1

xmaximo = Val(textboxxmaximo.Text) – 1
'El gráfico no cambiará pero
esto hará que la vista del gráfico se mueva a la
izquierda del eje x.

xminimo = Val(textboxxminimo.Text) – 1
'El gráfico no cambiará pero
esto hará que la vista del gráfico se mueva a la
izquierda del eje x.

yminimo = Val(textboxyminimo.Text) 'Variable ya declarada como Public.

ymaximo = Val(textboxymaximo.Text) 'Variable ya declarada como Public.

Dim cerox
As Integer = ((400) / (xmaximo – xminimo)) *
(0 – xminimo) '400 son los pixeles
que hay en x. xminimo es la escala de inicio en el eje x. xmaximo
es la escala de fin en el eje x

Dim ceroy
As Integer = ((400) / (yminimo – ymaximo)) *
(0 – ymaximo)

Dim rayadeescala
As Integer

grafico = PictureBox1.CreateGraphics

grafico.Clear(Color.Black) 'Para que cada vez que se haga clic en el botón
Graficar, que borre el gráfico que estaba anteriormente
antes de crear uno nuevo, para que no quede un gráfico
sobre otro.

If yminimo < 0
Then 'Porque
si la escala mínima negativa de las y fuera cero o fuera
positiva, no se verá la línea del eje de las x al
graficar.

grafico.DrawLine(Pens.White, 0, ceroy, 400,
ceroy) 'Trazo de la línea
blanca horizontal (eje x).

End If

If xmaximo > 0
Then 'Porque
si la escala máxima positiva de las x fuera cero o
negativa, no se verá la línea del eje de las y al
graficar.

grafico.DrawLine(Pens.White, cerox, 0, cerox,
400) 'Trazo de la línea
blanca vertical (eje y).

End If

If yminimo < 0
Then 'Porque
si la escala mínima de las y fuera cero o fuera positiva,
no se verá la línea del eje de las x al graficar, y
por lo tanto no se verían las rayitas de las escalas en el
eje de las x.

'Este For es para poner las rayitas de
escala del eje x positivo.

For a As Integer =
1 To xmaximo
'Se hacen las rayitas del eje x positivo,
desde el 0 hasta el valor máximo de la escala de las x. El
ciclo va desde uno porque no hace falta ponerlo desde cero, pues
una raya en el origen ni siquiera se vería porque
estaría ubicada sobre el eje y

rayadeescala = (((400) / (xmaximo – xminimo)) * (a –
xminimo)) '400 es el número
de pixeles que hay en el eje x.

grafico.DrawLine(Pens.White, rayadeescala, ceroy – 7,
rayadeescala, ceroy + 7) 'Los
números 7 significan el número de pixeles de la
rayita de la escala tanto hacia abajo como hacia arriba del eje
x, de modo que la longitud total de la rayita va a ser de 14
pixeles.

Next

'Este For es para poner las rayitas de
escala del eje x negativo.

For a As Integer =
xminimo To 0
'Se hacen las rayitas del eje x negativo,
desde el valor mímino de x hasta el cero. Al no ponerle
Step al For se sabe que va automáticamente de 1 en
1.

rayadeescala = (((400) / (xmaximo – xminimo)) * (a –
xminimo)) '400 es el número
de pixeles que hay en el eje x.

grafico.DrawLine(Pens.White, rayadeescala, ceroy – 7,
rayadeescala, ceroy + 7) 'Los
números 7 significan el número de
pixeles.

Next

End If

If xmaximo > 0
Then 'Porque
si la escala máxima de las x fuera cero o fuera negativa,
no se verá la línea del eje de las y al graficar, y
por lo tanto no se verían las rayitas de las escalas en el
eje de las y.

'Este For es para poner las rayitas de
escala del eje y positivo.

For a As Integer =
1 To ymaximo
'Se hacen las rayitas del eje y positivo,
desde el 0 hasta el valor máximo de la escala de las y. El
ciclo va desde uno porque no hace falta ponerlo desde cero, pues
una raya en el origen ni siquiera se vería porque
estaría ubicada sobre el eje x.

rayadeescala = (((400) / (yminimo – ymaximo)) * (a –
ymaximo)) '400 es el número
de pixeles que hay en el eje y.

grafico.DrawLine(Pens.White, cerox – 7, rayadeescala,
cerox + 7, rayadeescala) 'Los
número 7 significan el número de pixeles de la
rayita de la escala tanto hacia la izquierda como hacia la
derecha del eje y, de modo que la longitud total de la rayita va
a ser de 14 pixeles.

Next

'Este For es para poner las rayitas de
escala del eje y negativo.

For a As Integer =
yminimo To 0
'Se hacen las rayitas del eje y negativo,
desde el valor mínimo de y hasta el cero. Al no ponerle
Step al For se sabe que va automáticamente de 1 en
1.

rayadeescala = (((400) / (yminimo – ymaximo)) * (a –
ymaximo)) '400 es el número
de pixeles que hay en el eje y.

grafico.DrawLine(Pens.White, cerox – 7, rayadeescala,
cerox + 7, rayadeescala) 'Los
números 7 significan el número de pixeles de la
rayita de la escala tanto hacia la izquierda como hacia la
derecha del eje y, de modo que la longitud total de la rayita va
a ser de 14 pixeles.

Next

End If

'Se crea una nueva instancia de la clase
Evaluador

Dim mEval
As New
Evaluador()

'Se crea una variable tipo string y le
asignamos la expresión que queremos evaluar

Dim mExpresion
As String = TextBox1.Text ' = "X"

'Se crea un objeto StringCollection y
agregamos los parámetros de entrada que usará el
método eval

Dim mParameters
As New
StringCollection()

mParameters.Add("ByVal X as
Double")

'Las funciones a utilizar pertenece al
espacio de nombres System.Math.

'se hace necesario entonces, crear un
objeto StringCollection y agregar

'el namespace System.Math.

Dim mNameSpaces
As New
StringCollection()

mNameSpaces.Add("System.Math")

'Se invoca el método
PrecompilarFunción y verificamos si se genero
correctamente el assembly.

If
mEval.PrecompilarAssembly(mExpresion, mParameters,
mNameSpaces) Then

'Si el assembly se generó
correctamente, se crea un array con los valores de los parametros
a evaluar

'Hasta este momento se tiene el plano
cartesiano con las escalas correspondientes. De aquí en
adelante el código es para graficar la
función.

For coordenadax
As Double = xminimo To xmaximo Step 0.01

Dim mParam() =
{coordenadax}

'Se invoca el método Evaluar y se
muestra el resultado

coordenaday = mEval.Evaluar(mParam)

coordenadaxadaptada = (((400) / (xmaximo – xminimo)) *
(coordenadax – xminimo))

coordenadayadaptada = Int((((400) / (yminimo – ymaximo))
* (coordenaday – ymaximo)))

coordenadaxadaptada = (((400) / (xmaximo – xminimo)) *
(coordenadax – xminimo))

coordenadayadaptada = (((400) / (yminimo – ymaximo)) *
(coordenaday – ymaximo))

grafico.DrawEllipse(Pens.White, coordenadaxadaptada,
coordenadayadaptada, 1, 1)

Next

Else

MsgBox("No se ha generado
el Assembly")

End If

End Sub

Private Sub
textboxxminimo_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs)
Handles
textboxxminimo.KeyPress

If (Asc(e.KeyChar) >=
48 And Asc(e.KeyChar)
<= 57) Or
Asc(e.KeyChar) = 45 Or
Asc(e.KeyChar) = 46 Or
Asc(e.KeyChar) = 8 Then

Else

Beep() 'Emite sonido.

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
textboxxmaximo_KeyPress(ByVal sender As Object, ByVal e As
System.Windows.Forms.KeyPressEventArgs) Handles textboxxmaximo.KeyPress

If (Asc(e.KeyChar) >=
48 And Asc(e.KeyChar)
<= 57) Or
Asc(e.KeyChar) = 45 Or
Asc(e.KeyChar) = 46 Or
Asc(e.KeyChar) = 8 Then

Else

Beep() 'Emite
sonido.

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
textboxyminimo_KeyPress(ByVal sender As Object, ByVal e As
System.Windows.Forms.KeyPressEventArgs) Handles textboxyminimo.KeyPress

If (Asc(e.KeyChar) >=
48 And Asc(e.KeyChar)
<= 57) Or
Asc(e.KeyChar) = 45 Or
Asc(e.KeyChar) = 46 Or
Asc(e.KeyChar) = 8 Then

Else

Beep() 'Emite
sonido.

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
textboxymaximo_KeyPress(ByVal sender As Object, ByVal e As
System.Windows.Forms.KeyPressEventArgs) Handles textboxymaximo.KeyPress

If (Asc(e.KeyChar) >=
48 And Asc(e.KeyChar)
<= 57) Or
Asc(e.KeyChar) = 45 Or
Asc(e.KeyChar) = 46 Or
Asc(e.KeyChar) = 8 Then

Else

Beep() 'Emite
sonido.

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_1(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles limpiar.Click

If TextBox1.Text =
"" Then
'Si no se le pusiera esta condición
y sólo se programara grafico.Clear(Color.Black),
daría un error que diría: "No se entroló
NullReference Exception. Object reference not set to an instance
of an object."

Else

TextBox1.Text = ""

grafico.Clear(Color.Black)

End If

End Sub

Private Sub inicio_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)

formulariodeinicio.Show()

Me.Hide()

End Sub

Private Sub salir_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles salir.Click

Dim mensaje
As Integer

mensaje = MsgBox("¿Realmente desea salir del
programa?", MsgBoxStyle.YesNo, "Graficador de Funciones Matemáticas")

If mensaje = 6
Then

formulariodesalida.Show()

Me.Hide()

End If

End Sub

Private Sub
InsertarToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles
InsertarToolStripMenuItem.Click

TextBox1.Focus()

End Sub

Private Sub
SalirToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles
SalirToolStripMenuItem.Click

graficar_Click(sender, e)

End Sub

Private Sub
EditarFunciónToolStripMenuItem_Click(ByVal
sender As
System.Object, ByVal
e As
System.EventArgs) Handles
EditarFunciónToolStripMenuItem.Click

TextBox1.Focus()

End Sub

Private Sub
EscalaMínimaEnXToolStripMenuItem_Click(ByVal
sender As
System.Object, ByVal
e As
System.EventArgs) Handles
EscalaMínimaEnXToolStripMenuItem.Click

textboxxminimo.Focus()

End Sub

Private Sub
EscalaMáximaEnXToolStripMenuItem_Click(ByVal
sender As
System.Object, ByVal
e As
System.EventArgs) Handles
EscalaMáximaEnXToolStripMenuItem.Click

textboxxmaximo.Focus()

End Sub

Private Sub
EscalamínimaEnYToolStripMenuItem_Click(ByVal
sender As
System.Object, ByVal
e As
System.EventArgs) Handles
EscalamínimaEnYToolStripMenuItem.Click

textboxyminimo.Focus()

End Sub

Private Sub
EscalaMáximaEnYToolStripMenuItem_Click(ByVal
sender As
System.Object, ByVal
e As
System.EventArgs) Handles
EscalaMáximaEnYToolStripMenuItem.Click

textboxymaximo.Focus()

End Sub

Private Sub
AumentarToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles
AumentarToolStripMenuItem.Click

aumentarzoom_Click(sender, e)

graficar_Click(sender, e)

End Sub

Private Sub
DisminuirToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles
DisminuirToolStripMenuItem.Click

disminuirzoom_Click(sender, e)

graficar_Click(sender, e)

End Sub

Private Sub
DToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles
DToolStripMenuItem.Click

End Sub

Private Sub
HaciaArribaToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles
HaciaArribaToolStripMenuItem.Click

arriba_Click(sender, e) 'Llama el procedimiento del botón
arriba.

End Sub

Private Sub
HaciaAbajoToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles
HaciaAbajoToolStripMenuItem.Click

abajo_Click(sender, e) 'Llama el procedimiento del botón
abajo.

End Sub

Private Sub
HaciaLaDerechaToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles
HaciaLaDerechaToolStripMenuItem.Click

derecha_Click(sender, e) 'Llama el procedimiento del botón
derecha.

End Sub

Private Sub
HaciaLaIzquierdaToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles
HaciaLaIzquierdaToolStripMenuItem.Click

izquierda_Click(sender, e) 'Llama el procedimiento del botón
izquierda.

End Sub

Private Sub
SalirToolStripMenuItem1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles
SalirToolStripMenuItem1.Click

salir_Click(sender, e)

End Sub

Private Sub ayuda_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ayuda.Click

formulariodeayuda.Show()

Me.Hide()

End Sub

Private Sub
UsoDelProgramaToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles
UsoDelProgramaToolStripMenuItem.Click

ayuda_Click(sender, e) 'Llama el procedimiento del botón
ayuda.

End Sub

Private Sub
AcercaDeGraficadosDeFuncionesMatemáticasToolStripMenuItem_Click(ByVal
sender As
System.Object, ByVal
e As
System.EventArgs) Handles
AcercaDeGraficadosDeFuncionesMatemáticasToolStripMenuItem.Click

formulariodecreditos.Show()

Me.Hide()

End Sub

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles
raicesconmetododelafalsaposicion.Click

formulariometododelafalsaposicion.Show()

Me.Hide()

formulariometododelafalsaposicion.textboxfuncion.Text =
TextBox1.Text 'Al TextBox donde se
introduce la función del formulario de la Falsa
Posición para encontrar raíces, le está
asignando o poniendo lo que hay en el TextBox1, que es la
función para graficar.

End Sub

Private Sub Button1_Click_2(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

formulariometodonewtonraphson.Show()

Me.Hide()

formulariometodonewtonraphson.textboxfuncion.Text =
TextBox1.Text 'Al TextBox donde se
introduce la función del formulario de Newton-Raphson
para encontrar raíces, le está asignando o poniendo
lo que hay en el TextBox1, que es la función para
graficar.

End Sub

End Class

 

 

 

 

Autor:

Jaime Montoya

Santa Ana, 25 de julio de 2008

El Salvador

Partes: 1, 2, 3, 4, 5, 6 >

Partes: 1, 2, 3, 4, 5, 6
 Página anterior Volver al principio del trabajoPágina siguiente 

Nota al lector: es posible que esta página no contenga todos los componentes del trabajo original (pies de página, avanzadas formulas matemáticas, esquemas o tablas complejas, etc.). Recuerde que para ver el trabajo en su versión original completa, puede descargarlo desde el menú superior.

Todos los documentos disponibles en este sitio expresan los puntos de vista de sus respectivos autores y no de Monografias.com. El objetivo de Monografias.com es poner el conocimiento a disposición de toda su comunidad. Queda bajo la responsabilidad de cada lector el eventual uso que se le de a esta información. Asimismo, es obligatoria la cita del autor del contenido y de Monografias.com como fuentes de información.

Categorias
Newsletter