Programación del Método del trapecio.
Russell GarciaTarea29 de Marzo de 2016
3.626 Palabras (15 Páginas)326 Visitas
[pic 1]
Plantilla principal del Programa-Método del trapecio.
[pic 2][pic 3]
Botón principal Resolver
//Evalúa todos los paréntesis en caso de faltar uno aparecerá el siguiente mensaje
ON ERROR w=0
w=1
x=1
ecua=ALLTRIM(thisform.text1.value)
z=&ecua
ON ERROR
IF w=0
=MESSAGEBOX("Revisa tu ecuación",16,"Error")
RETURN
ENDIF
//Buca todas la “X”
IF "X"$THISFORM.TEXT1.VALUE
//Formaliza la tabla
DIMENSION array_resultados(thisform.n.Value+1,3)
//Realiza la operación, para saber el valor de h=b-a/n
h=(thisform.b.Value-thisform.a.Value)/thisform.n.Value
//Realiza un FOR de 0 hasta lo que mida n (Numero de intervalos), //guardando los valores en la tabla
FOR count_gusa=0 TO thisform.n.Value
array_resultados(count_gusa+1,1)=count_gusa
array_resultados(count_gusa+1,2)=thisform.a.Value + (count_gusa*h)
//Evalúa los resultados obtenidos en (1,2) y los mete en la //ecuación, dejando los resultados en (1,3)
x=array_resultados(count_gusa+1,2)
ecua=ALLTRIM(thisform.text1.value)
array_resultados(count_gusa+1,3)=&ecua
NEXT
//Obtenidos los resultados en (1,3), el programa busca el primer y //el ultimo valor de la tabla, guardándolos en fa y fb //respectivamente.
fa=array_resultados(1,3)
fb=array_resultados(thisform.n.Value+1,3)
//Busca los otros resultados sumándolos entre sí, guardándolo en //fs.
fs=0
FOR count_gusa=2 TO thisform.n.Value
fs=fs+array_resultados(count_gusa,3)
//Después fs será multiplicado por 2, enseguida será sumado con fa //y fb, guardando el valor en fs, a continuación tomando el valor //de h y dividiéndolo entre dos será multiplicando por el valor de //fs, el valor obtenido será guardado en fs
NEXT
fs=fs*2
fs=fa+fb+fs
fs=(h/2)*fs
//El resultado obtenido será redondeado a 10 decimales
thisform.text4.Value=ROUND(fs,10)
//El siguiente codigo sera para copear los valores de a, b, la //ecuación ingresada en el cuadro de texto y el resultado obtenido //en fs
thisform.label7.Caption=ALLTRIM(STR(thisform.b.Value))
thisform.label8.Caption=ALLTRIM(STR(thisform.a.Value))
thisform.label9.Caption=ALLTRIM(thisform.text2.Value)+")dx="+ALLTRIM(STR(thisform.text4.Value,20,10))+" U^2"
*****
//A continuación se presenta el código de la gráfica, tabulando //todos los resultados obtenidos de la tabla (1, 2) y (1, 3)
CLOSE DATABASES
SELECT 0
USE vfpgraph
thisform.oleboundcontrol1.controlsource="olegraph"
SELECT vfpgraph
#DEFINE CRLF CHR(13)+CHR(10)
#DEFINE TAB CHR(9)
lcData= " " + TAB + "F(x)" + CRLF
FOR t=1 TO ALEN(array_RESULTADOS,1)
lcData = lcData + alltrim(STR(array_RESULTADOS(t,2),20,16))
lcData = lcData + TAB
lcData = lcData + ALLTRIM(STR(array_RESULTADOS(t,3),20,16)) + CRLF
next
go 1
APPEND GENERAL olegraph DATA lcData
go 1
thisform.oleboundcontrol1.Refresh
thisform.oleboundcontrol1.visible=.t.
thisform.oleboundcontrol1.Refresh
**************
//Por último el programa está basado en el método del trapecio, el //método no funcionaría sino hay ninguna “X” por evaluar, por tal //motivo, si al evaluar la función no encuentra ninguna “X” //aparecerá el siguiente mensaje
thisform.command27.click
ELSE
=MESSAGEBOX("Nada que resolver en tu ecuación"+CHR(13)+"Ingresa almenos una X",16,"Error")
ENDIF
thisform.list1.requery
Cuadro de texto Text2
//La ecuación tendrá que ser guardada y para ello habrá problemas //como ¿Que debe hacer el programa si encuentra palabras como SIN, //COS, TAN, LOG,) y X?
Ejemplo: si tenemos en el cuadro de texto “COS (“el programa buscara que cosa tiene detrás de él, si fuse que detrás de él estuviese un número, el programa tendría que multiplicar el Número por la Función, pero si tuviéramos los signos +,-,*, /, ( o incluso nada, el programa tendría que someter a la Función a la operación
thisform.command26.Click
thisform.text1.Value=""
FOR contador=1 TO LEN(thisform.text2.value)
DO CASE
CASE SUBSTR(thisform.text2.value,contador,1)=="X"
*OR SUBSTR(thisform.text2.value,contador,1)=="("
IF ISDIGIT(SUBSTR(thisform.text2.value,contador-1,1))
thisform.text1.Value=thisform.text1.Value+"*"+SUBSTR(thisform.text2.value,contador,1)
ELSE
thisform.text1.Value=thisform.text1.Value+SUBSTR(thisform.text2.value,contador,1)
ENDIF
CASE SUBSTR(thisform.text2.value,contador,4)=="COS("
DO CASE
CASE SUBSTR(thisform.text2.value,contador-1,1)=="+" OR;
...