Download - Examen_1erParcial
S.E.P D.G.E.S.T D.I.T.D.
INSTITUTO TECNOLÓGICO SUPERIOR DE LIBRES Organismo Público Descentralizado del Gobierno del Estado de Puebla
INGENIERÍA EN SISTEMAS COMPUTACIONALES
“PROYECTO (EXAMEN)”
PRESENTA:
ABURTO SANTAMARIA HUMBERTO ROMERO HERNANDEZ JOSE ANTONIO
LIBRES, PUEBLA, FEBRERO DE 2012.
RECURSIVIDAD
La recursividad y la iteración (ejecución en bucle) están muy relacionadas, cualquier acción que
pueda realizarse con la recursividad puede realizarse con iteración y viceversa. Normalmente, un
cálculo determinado se prestará a una técnica u otra, sólo necesita elegir el enfoque más natural o
con el que se sienta más cómodo.
Es una alternativa diferente para implementar estructuras de
repetición (ciclos). Los módulos se hacen llamadas recursivas.
Se puede usar en toda situación en la cual la solución pueda ser
expresada como una secuencia de movimientos, pasos o
transformaciones gobernadas por un conjunto de reglas no ambiguas.
PROYECTO (EXAMEN)
1.- Realizar el programa polígono a partir del algoritmo DDA para trazado de líneas
a) Mostrar la ejecución de los polígonos.
b) Mostrar el código modificado.
A continuación se muestra la imagen con el código en la cual se piden los datos para el trazado del
pentágono y el triángulo.
Fig. 1 Pedir datos
Se almacenan en variables las cuales p(y,x) para poder graficar, con la función ddadibujar se pintan
los puntos dados, la cual se muestra a continuación.
Fig2. Función para aplicar la recursividad
Para poder usar la recursividad se manda a traer la misma función varias veces pero con puntos
diferentes para poder formar un polígono.
Fig3 aplicando la recursividad y solo mandamos a llamar la función únicamente
public static void dda()
{
Gl.glClear(Gl.GL_COLOR_BUFFER_BIT);//limpia el buffer de la pantall
Gl.glColor3f(0.6F, 0.6F, 0.6F);//poner color a los pixeles
Gl.glLoadIdentity();//''muy importante;
Gl.glPointSize(2.0f);//medida de los puntos
Gl.glBegin(Gl.GL_POINTS);//funcion para dibujar puntos
//dibujando el plano
float z = -1, w = 1, c = 0;
for (int i = 0; i < 200; i++)
{
Gl.glColor3f(w, c, z);
Gl.glVertex2d(z, 0);
Gl.glVertex2d(0, w);
z += .01f;
w -= .01f;
c += .1f;
}
Gl.glEnd();//termina funcion para dibujar puntos
///pasamos las
Gl.glPointSize(5.0f);//sirve para el tamaño de los pixeles
Gl.glColor3f(0.6f, 1.0f, 0.6f);//sirve para el color de los pixeles
ddaDibujar(x1, y1, x2, y2);
ddaDibujar(x2, y2, x3, y3);
ddaDibujar(x3, y3, x4, y4);
ddaDibujar(x4, y4, x5, y5);
ddaDibujar(x5, y5, x1, y1);
ddaDibujar(x7, y7, x8, y8);
ddaDibujar(x8, y8, x9, y9);
ddaDibujar(x9, y9, x7, y7);
}
public static void ddaDibujar(double x1, double y1, double x2, double y2)
{
double xinicial = x1, yinicial = y1, xfinal = x2, yfinal = y2, x, y;
double deltax, deltay, xincremento, yincremento;
double pasos;
deltax = xfinal - xinicial;
deltay = yfinal - yinicial;
if (Math.Abs(deltax) > Math.Abs(deltay))
pasos = Math.Abs(deltax);
else
pasos = Math.Abs(deltay);
xincremento = (deltax / pasos) / 10;
yincremento = (deltay / pasos) / 10;
x = xinicial;
y = yinicial;
Gl.glBegin(Gl.GL_POINTS);
Gl.glVertex2d(x, y);//funcion que pinta un pixel en las coordenadas
especificadas
for (double k = .1; k <= pasos; k += .1)
{
x = (x + xincremento);
y = (y + yincremento);
Gl.glVertex2d(x, y);
//Gl.glVertex2d(x - .01, y + .01);
}
Gl.glEnd();
}
Aplicamos la recursividad usando la misma
función (ddadibujar), con diferentes variables
Con los puntos siguientes se puede dibujar un pentágono y un triángulo con las siguientes
coordenadas, los valores dados a las coordenadas e insertados en la consola deberán ser
expresados como valores decimales ya que los parámetros dentro del código son rangos pequeños.
Pentágono Triangulo
P1(-5,4) P1(4,2)
P2(-3,2) P2(6,-2)
P3(-3,-3) P3(3,-2)
P4(-7,-3)
P5(-7,3)
Fig4 Con los puntos dados e insertados adecuadamente se obtiene esta imagen
Conclusión
Podemos ahorrar varias líneas de código aplicando la recursividad a funciones que realizan una
tarea específica y apoyarse de ella para solucionar un problema más grande.
Bibliografía
Instituto tecnológico superior de Campeche
http://www.google.com.mx/url?sa=t&rct=j&q=recursividad%20pdf&source=web&cd=3&ved=0CC8QFjAC&url=http%3A
%2F%2Fwww.itescam.edu.mx%2Fprincipal%2Fsylabus%2Ffpdb%2Frecursos%2Fr4886.PDF&ei=ibk-T-
zeK8fc2AW20ZGZCA&usg=AFQjCNFQBiYGnDfI_Sig0wHo_8vXtsummQ