Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Proyecto II/2013
I) Objetivos: Manejar el entorno grafico en wxDev-c++ - Estilo de letras - Uso de diferentes colores Disear un programa que grafique una parbola a partir de la ecuacin despejada. Disear un men para poder seleccionar el eje de simetra de la parbola Con el uso de contadores generar la escala de los ejes y graficar los ejes coordenados. Con el uso de condicionales validar cada dato ingresado por teclado. - Para el men - Para el dato de la constante A en la ecuacin despejada de la parbola. Mostar las constantes ingresadas por teclado en el entorno grafico.
II)
Teora: Libreras y cdigos utilizados para el programa: Winbgim: Librera que simula el modo grafico del turbo C++. Cdigo para la seleccin de colores: NORMAL 0 - Negro 1 - Azul 2 - Verde 3 - Azul Claro 4 - Rojo 5 - Fushia 6 - Naranja 7 - Blanco 8 - Gris FLUORESCENTE 9 - Azul 10 - Verde 11 - Azul Claro 12 - Rojo 13 - Fushia 14 - Amarillo 15 - Blanco 16 - Negro
Proyecto II/2013
Funciones:
initwindow(400,400);
setcolor(7);
settextstyle(0,0,2);
outtextxy(x,y,"Texto");
moveto(x,y);
lineto(x,y);
clearviewport();
LIMPIA LA PANTALLA
while(!kbhit());
closegraph();
Proyecto II/2013
Sentencias:
ciclo do while
ciclo for
switch ()
system("pause");
If(condicion) Else(condicion)
String: librera para el manejo de datos del tipo caracter. Funcin: itoa(a,b,10); CONVIERTE LA VARIABLE a DE TIPO ENTERO A LA VARIABLE b DE TIPO CHAR PARA PODER MOSTAR EN EL MODO GRAFICO.
3
Proyecto II/2013
III)
FUNCION Iniciando las libreras para los diferentes procesos del programa: Modo grafico; lectura, proceso y salida de datos en modo consola; para la conversin de las variables enteras a caracter. Iniciando el inicio del programa
Declarando las variables de tipo entero. pos= Para la opcin del men menu= Para el label del men. e= Para el contador de la escala n= para la numeracin en el eje x ny=para la numeracin en el eje y
char a[10],b[10],c[10],nm[10],nmy[10]; Declaracin de variables del tipo caracter. a, b, c = Reservados para guardar los valores convertidos de las variables A, B, C constantes de la ecuacin de la parbola nm, nmy= Reservados para los valores convertidos de los nmeros generados por los contadores para la numeracin de las escalas de los ejes coordenados. float xx,yy,y2,A,B,C,i; Declaracion de las variables de tipo flotante. xx= Posiciones en el eje x yy=Posiciones en el eje y y2=valores de la variable dependiente de la ecuacin de la parbola. A, B, C= valores ingresados de las constantes de la ecuacin de la parbola. i= variable para generara los valores de x
4
Proyecto II/2013
initwindow(900,700); settextstyle(8,0,1); outtextxy(20,20,"UNIVERSIDAD MAYOR DE SAN ANDRES"); outtextxy(65,40,"FACULTAD DE INGENIERIA"); outtextxy(75,60,"INGENIERIA ELECTRICA"); settextstyle(1,0,4); outtextxy(720,40,"II/2013"); settextstyle(7,0,3); outtextxy(200,200,"Univ. Chocanapi Aldano David Marcos"); outtextxy(200,235,"1643537"); outtextxy(560,235,"6182933"); outtextxy(200,300,"Grfica de una parbola:"); outtextxy(50,400,"Parbola simtrica respecto al eje Y: "); outtextxy(50,500,"Parbola simtrica respecto al eje X: "); outtextxy(300,600,"Presione una tecla para ingresar datos.... "); settextstyle(7,0,6); setcolor(9); outtextxy(100,95,"ELT-230 * TEORIA *"); settextstyle(9,0,2); setcolor(4); outtextxy(50,200,"Estudiante: "); outtextxy(50,235,"RU:"); outtextxy(500,235,"CI:"); outtextxy(50,300,"Presenta:"); settextstyle(9,0,3); outtextxy(600,400,"Y=A*X^2+B*X+C "); outtextxy(600,500,"X=A*Y^2+B*Y+C "); while(!kbhit()); menu: { closegraph();
5
Iniciando el modo grafico. Seleccionando el estilo, posicin y tamao de las letras. Mostrando en modo grafico los textos con sus respectivas posiciones en el plano de pantalla iniciada; para construir la caratula principal de presentacin del programa.
Espera del programa hasta presionar una tecla para continuar. Marcando el lablel del men.
Proyecto II/2013
que se ingrese al men del programa system("color 13"); do{ Seleccin del color de pantalla en el modo consola. Iniciando la condicional do while para la verificacin de los valores de seleccin del men. Limpieza de la pantalla del modo consola cada vez que ingresa al menu para borrar los mensajes de entrada y/o errores generados por las anteriores entradas. Presentacin del men. Lectura de la opcin por la variable pos.
system("cls");
cout<<"\n\n ****** SELECCIONE UNA OPCION ******\n"<<endl; cout<<" 1) Parabola simetrica respecto al eje Y"<<endl; cout<<" 2) Parabola simetrica respecto al eje X\n"<<endl; cout<<" 3) SALIR"<<endl; cin>>pos; if(pos<1||pos>3) { system("cls"); cout<<"\n\n\n Ingrese una opcion valida"<<endl; system("pause");}
Pregunta si el valor ingresado para las opciones son las incorrectas; en caso afirmativo muestra un mensaje de error de dato. La pausa es para poder visualizar el mensaje de error y despus de presionar una tecla continuar con la secuencia del programa. Retorna al men si el valor de la opcin es incorrecta Si el valor de la opcin del men es 3 prosigue a salir del programa. En el caso de que el valor de la opcin ingresada no sea igual a 3 el programa continuara su curso. Porque el valor para la opcin del men ya fue validado con el do while Iniciando la condicional do while para verificar si se trata de una
do{
Proyecto II/2013
entrada de datos de una parbola cout<<"Ingrese los coeficientes A, B y C de la ecuacion despejada de la parabola"<<endl; cin>>A>>B>>C; if(A==0) {cout<<"f!@&k ingresaste la ecuacion de una recta"<<endl; cout<<"Ingrese correctamente los datos de una parabola"<<endl; system("pause");} ltoa(A,a,10); ltoa(B,b,10); ltoa(C,c,10); } } system("cls"); }while(A==0); Limpia la pantalla en el caso de que do while vuelva a pedir las constantes en caso de que el valor de A=0 Inicia el modo grafico y limpia la pantalla del modo grafico de los datos mostrados en la caratula principal del programa y de las graficas ya corridas. Seleccin del color y grafica de los ejes coordenados Peticin de datos de las constantes de la ecuacin de la parbola y lectura de datos.
Pregunta si la constante A es igual a cero en caso afirmativo se tratara de la ecuacin de una recta; entonces se muestra un mensaje de error y el programa espera hasta presionar una tecla para continuar la secuencia del programa. Se convierte los datos ingresados de las constante de la ecuacin a tipo char para poder ser mostrados en el modo grafico.
initwindow(900,700); { clearviewport();
Definiendo valores inciales de las variables para la numeracin de las escalas de los ejes coordenados. Se realiza en esta parte del programa para que en cada nueva grafica los valores de estas constantes siempre empiecen en estos valores y no en los ltimos valores tomados por la anterior grafica. Generacion de los valores de la
7
for(e=0;e<=900;e=e+25)
Proyecto II/2013
{ line(e,335,e,365); line(435,e,465,e); n=n+1; ny=ny-1; itoa(n,nm,10); itoa(ny,nmy,10); outtextxy(e,335,nm); outtextxy(460,e,nmy); } setcolor(4); switch(pos) { case 1: { for(i=-700;i<=700;i=0.1+i) { y2=A*i*i+B*i+C;
numeracin de la escala con un incremento de 25 ya que el conteo de uno en uno significa un pixel de la pantalla y para obtener una escala manejable seleccione cada 25 pixeles en una escala de los ejes coordenados; una vez generados estos valores se transforman en tipo char para poder ser mostrados en el modo grafico. Cambiando el color para la grafica de la parbola. Seleccionando la opcin para el tipo de grafica. Entrando en la opcin 1 para la grafica de la parbola con eje de simetra en el eje Y Generando los valores para evaluar la ecuacin de la parbola.
xx=(450+25*i); yy=(350-25*y2);
Variables de posicionamiento 450 y 350 para iniciar en el origen de nuestro eje de coordenadas ya que el origen de coordenadas del modo grafico es el la esquina izquierda superior y 450, 350 porque iniciamos una pantalla grafica de 900,700 asi nos posicionamos en el centro de la pantalla. En ambos casos por 25 para darle la escala de 25 pixeles por cada escala del eje de coordenadas de la grafica. Generaremos valores para todo el espectro de la pantalla iniciada y una vez cumplida ese rango el programa continuara con su secuencia Seleccin de color y estilo de letra para mostrar la ecuacin de la parbola con los datos ingresados por teclado y con el texto de que
8
Proyecto II/2013
outtextxy(120,200,"X^2 +"); outtextxy(210,200,b); outtextxy(260,200,"X +"); outtextxy(320,200,c); settextstyle(7,0,2); outtextxy(10,170,"Parbola simtrica al eje Y: "); } getch(); while(!kbhit());
Pausa el programa en modo grafico para que se pueda visualizar la grafica de la parbola. El programa espera a que se presione una tecla para continuar Se prepara limpia la pantalla para el modo consola y se regresa al men con el salto al menu. El mismo proceso que la opcin 1 pero con la variante en las variables de posicionamiento ya que ahora se generara para el eje de simetra respecto a x. Y los textos y valores hacen referencia a una parbola con eje de simetra en el eje X. Salta el programa igualmente al men principal.
system("cls"); goto menu; } case 2: { for(i=-700;i<=700;i=0.1+i) { y2=A*i*i+B*i+C; xx=(450+25*y2); yy=(350+25*i); if (i==-700) moveto(xx,yy); lineto(xx,yy); } { setcolor(11); settextstyle(9,0,3); outtextxy(20,200,"X="); outtextxy(70,200,a); outtextxy(120,200,"Y^2 +"); outtextxy(210,200,b); outtextxy(260,200,"Y +"); outtextxy(320,200,c); settextstyle(7,0,2); outtextxy(10,170,"Parbola simtrica al eje X: "); } getch();
9
Proyecto II/2013
while(!kbhit()); system("cls"); goto menu; } Estas tres llaves cierran respectivamente: - Switch - else opcin 3 Salir del programa del menu! - Cierra el inicio del programa principal.
} } }
IV) -
10
Proyecto II/2013
11
Proyecto II/2013
Corriendo el programa presionando F9 el compilador pide la ubicacin para guardar el cdigo del programa realizado preferiblemente guardar en la ubicacin donde se guardo el proyecto de consola en modo grafico primer paso!
12
Proyecto II/2013
V) -
13
Proyecto II/2013
Ingresando a la opcin 1.
Presionando una tecla se cierra el modo grafico y regresa al men en modo consola. - Ingresando la constante A=0
Presionando una tecla vuelve a pedir los coeficientes para la opcin antes elegida.
14
Proyecto II/2013
Presionando una tecla regresamos al men principal. - Eligiendo la opcin 2 Ingresando datos se obtiene:
15
Proyecto II/2013
Presionando una tecla regresamos al men principal. Ingresando el valor de A=0 para este caso
Despus de presionar una tecla nos vuelve a pedir los coeficientes para la opcin 2. Ingresando un valor negativo para A se tiene:
Presionando una tecla regresa al men principal. - Eligiendo la opcin 3 el programa se cierra.
16
Proyecto II/2013
VI) -
Conclusiones Con el uso correcto de las sentencias y funciones de las libreras se puede obtener un programa con diferentes grados de aceptacin en su funcionamiento; como en este caso la generacin de la numeracin de la escala de los ejes coordenados, las verificaciones a la entrada de datos. El uso de los estilos grficos puede hacer que un programa se vea mucho mejor que otro aunque realicen la misma funcin. Al ir aumentando restricciones y estilos grficos el cdigo del programa se vuelve mas grande y si no se lleva un orden se puede llegar a enredar y generar errores al momento de ejecutar el problema que generalmente pasa por la falla de llaves abiertas y cerradas en las secuencias del programa. Recomendaciones
VII)
Si bien se trato de mejorar la ejecucin de un programa fcil como es la grafica de una parbola; se fue complicando el cdigo con las restricciones en la lectura de los datos y en los estilos grficos; aun se pueden mejorar en: - Graficar la recta directriz, el lado recto de la parbola. - Encontrar el vrtice de la parbola - Mostrar en pantalla grfica el vrtice y el foco de la parbola. - Este programa funciona bien para un rango de entrada de valores de algunas decenas dependiendo de todos los valores de las constantes de la ecuacin. Y se podra mejorar el programa para una seleccin automtica de la escala para poder mostrar graficas de parbolas de mayor numeracin.
Computacin para ingeniera I Ing. Irma Prado II/2013 Grafica de una parbola a partir de su ecuacin despejada.
17