Está en la página 1de 6

INSTITUTO TECNOLÓGICO SUPERIOR DE EL MANTE

Estructura de Datos
REPORTE DE PRÁCTICAS DE PROGRAMACIÓN
Profesor: M.C.C. Cristhian Muñoz Meza Grupo: G2303-0094 Fecha: 15 de septiembre del 2023
Alumno: Emily Ochoa Sosa Valor: Calificación:

PRÁCTICA NÚMERO 1
Curva de Koch aplicando la recursividad
FECHA DE REALIZACIÓN DE LA PRÁCTICA: 4 de septiembre del 2023
COMPETENCIA: 2. Recursividad
TEMA: 2.3 Ejemplos de casos recursivos
TIPO DE PRÁCTICA: Guiada

1. INTRODUCCIÓN
Por medio de esta practica pudimos lograr mostrar y programar la Curva de Koch por medio del análisis
recursivo, es decir, haciendo uso de una misma variable (variables) para completar el copo completo con
diversas curvas de Koch.
Se utilizó el lenguaje Java en la app de software NetBeans versión 8.02

2. PROCEDIMIENTO
1.

Se importan los paquetes de la librería de Java para que


nos ayuden a: asignar colores a nuestras líneas,
introducir una interfaz gráfica, crear ventanas de
usuario que nos permitan visualizar el programa, etc.

Así mismo, en nuestra public class Graficos crearemos


el lienzo en donde crearemos nuestro fractal recursivo

A continuación, en nuestro método principal crearemos


nuestro objeto gráfico para generar nuestra ventana de
usuario, seguido de una excepción que nos ayudará a
evitar errores de compilación que puedan presentarse
en la ejecución.

2.
Crearemos un método llamado Gráficos
donde declararemos nuestra ventana de
usuario, nuestro lienzo y, además,
crearemos la interfaz que permitirá
visualizar el fractal. También, le
asignaremos un color negro al fondo para
fines meramente estéticos.
INSTITUTO TECNOLÓGICO SUPERIOR DE EL MANTE
Estructura de Datos
REPORTE DE PRÁCTICAS DE PROGRAMACIÓN
Profesor: M.C.C. Cristhian Muñoz Meza Grupo: G2303-0094 Fecha: 15 de septiembre del 2023
Alumno: Emily Ochoa Sosa Valor: Calificación:

3.
A continuación, crearemos una clase llamada Punto,
ésta nos ayudará a crear un punto de referencia en el
espacio gráfico.

Tendrá como atributos sus coordenadas, colores y dos


valores con decimales más que nos ayudarán en la
conversión de valores polares a cartesianas; ya que,
recordando, Java trabaja con coordenadas polares.

Se les crearon sus constructores a las coordenadas y


también a las variables para las coordenadas
cartesianas. Además, se creó un constructor vacío que
dejara inicializar valores en el método principal o
main. Por último, se creó un método que nos ayudará
a identificar los puntos polares, en puntos cartesianos
con ayuda de las fórmulas matemáticas programadas
4.

Luego, se crea el método estático donde no


regresará nada, pero sí usará la variable g y que
será la responsable de trazar todas las líneas.

Se definen las coordenadas del punto donde se


desee que inicie nuestro trazado, se crean 5
objetos de tipo Punto y se definen sus atributos
(coordenadas), así como el color de éstos. Luego
se convierten a coordenadas cartesianas usando el
método creado en la clase Punto.
5.
Para poder crear la curva de Koch, es necesario
tener una razón para saber la segmentación de la
recta dada y empezar a crear nuestra curva,
primero con un nivel de recursividad bajo y
aumentando poco a poco los niveles. Es por eso que
se crea el método de tipo Punto llamado razón
donde ingresaremos dos puntos (inicio y final de la
recta) y nuestra variable r que pertenecerá a la
razón. Le asignaremos color a estos segmentos y
luego, retornaremos nuestro punto p.
INSTITUTO TECNOLÓGICO SUPERIOR DE EL MANTE
Estructura de Datos
REPORTE DE PRÁCTICAS DE PROGRAMACIÓN
Profesor: M.C.C. Cristhian Muñoz Meza Grupo: G2303-0094 Fecha: 15 de septiembre del 2023
Alumno: Emily Ochoa Sosa Valor: Calificación:

6.
Crearemos a continuación un método de tipo Punto
llamado medio, es decir, nos calculará el punto medio
del segmento de recta dada. Ingresaremos dos puntos
a y b (punto inicio y punto final) y sumaremos sus
coordenadas para saber cuál es la mitad de este
segmento. Le asignaremos color a cada medio
segmento y, por último, lo retornaremos para
mostrarlo en lienzo.

7.
Una vez identificado el punto medio de cada
segmento generado, habrá que rotar con respecto
a este punto medio, específicamente, 60 grados,
Para ello, se crea el método de tipo Punto llamado
RotarConOtro que nos ayudará a abrir un ángulo
de 60 grados realizando las operaciones
matemáticas correspondientes respecto al punto
medio y además marcarlo en el lienzo, esto último,
retornando el punto p en pantalla.

8.
Por último y antes de iniciar con la recursividad,
se crea el método linea que consiste en ingresar
un punto a y un punto b (puntos inicial y final) y
además un punto gráfico g que nos ayudará a
marcarlo en el lienzo.

A esos puntos les asignará un color y además les


dibujará una línea dependiendo de los valores de
las coordenadas en a (x) y en b (y).

Retornará un punto en el lienzo denominado g.


INSTITUTO TECNOLÓGICO SUPERIOR DE EL MANTE
Estructura de Datos
REPORTE DE PRÁCTICAS DE PROGRAMACIÓN
Profesor: M.C.C. Cristhian Muñoz Meza Grupo: G2303-0094 Fecha: 15 de septiembre del 2023
Alumno: Emily Ochoa Sosa Valor: Calificación:

9.
Es entonces cuando podemos crear un método de tipo
Graphics, es decir, que devolverá un gráfico en pantalla
y que se llamará CurvaKoch. Necesitará una línea de
tipo Graphics denominada g, un punto inicial (pi) y un
punto final (pf) así como un dato de tipo int
denominado n que será el nivel de recursividad.

Asignamos los 3 objetos de tipo Punto y empezamos


con nuestro método recursivo.

Si el nivel de recursividad es igual a 0; se dibujará una


línea que tendrá un punto inicial, un punto final y una
línea de tipo Graphics en el plano.

Si la primera condición no se cumple, entonces (else);


será necesario usar el método razón para identificar los
segmentos, así como el método RotarConOtro para
rotarlo 𝜋/3 grados, es decir 60 grados.

Luego, se va a cerrar la Curva de Koch con otras 3


conectando cada punto inicial con uno final y el nivel de
recursividad será menor en una cantidad para conectar.

10.
Por último, crearemos 3 líneas para conectar los puntos
finales con iniciales, también se le asignará un nivel de
recursividad inicial de 1. Luego de todo el
procedimiento detallado, el código está listo para
compilar

3. PRUEBAS
1. Nivel de recursividad 0

2. Nivel de recursividad 1
INSTITUTO TECNOLÓGICO SUPERIOR DE EL MANTE
Estructura de Datos
REPORTE DE PRÁCTICAS DE PROGRAMACIÓN
Profesor: M.C.C. Cristhian Muñoz Meza Grupo: G2303-0094 Fecha: 15 de septiembre del 2023
Alumno: Emily Ochoa Sosa Valor: Calificación:

3. Nivel de recursividad 5

Para todas las pruebas que se hicieron, el único parámetro ajustable era el nivel de recursividad que se utilizaba
dentro del compilado.

4. RESULTADOS
1. Nivel de recursividad 0

Sin nivel de recursividad, sólo se genera un


triángulo sin puntos medios ni segmentaciones
por una razón y mucho menos rotaciones
respecto a estos puntos medios, sin embargo, si
se asignan colores a estas lineas gracias al
método de asignación de colores que se usaron
en el método principal.

2. Nivel de recursividad 1
En el nivel de recursividad 1, se cierra el
triángulo y, además, encuentra puntos medios,
por tanto, hace trabajar a los métodos para
encontrar la razón y segmentar estos puntos y,
además, rotar con respecto a este punto
medio. Se le asigna colores y genera una
combinación de ambos colores por segmento,
es por eso que se ve una diferencia en los
colores por segmento.

3. Nivel de recursividad 5
En un nivel de recursividad más avanzado como lo
es el nivel 5, se observa claramente una figura
semejante a la de un copo de nieve, simplemente
que este copo está hecho a base de recursividad y
de métodos referentes a la razón, a los puntos
medios y a la rotación de puntos con respecto a un
punto medio en un lienzo. Se asignan colores a
cada segmento y la unión de todos crean un
contraste muy llamativo a la vista del usuario.
INSTITUTO TECNOLÓGICO SUPERIOR DE EL MANTE
Estructura de Datos
REPORTE DE PRÁCTICAS DE PROGRAMACIÓN
Profesor: M.C.C. Cristhian Muñoz Meza Grupo: G2303-0094 Fecha: 15 de septiembre del 2023
Alumno: Emily Ochoa Sosa Valor: Calificación:

5. CONCLUSIONES
Con la elaboración de la practica se lograron abordar temas matemáticos que todo ingeniero debe conocer, el
desarrollo y la implementación de una interfaz gráfica, así como un lienzo y una ventana de usuario fueron otras
dos novedades en la compilación para este proyecto. La recursividad observada en el desarrollo puede ser muy
útil, sin embargo, todos logramos coincidir en que el uso de la misma es algo muy costoso para la memoria,
debido a que, ligeramente es el llamado de la variable una y otra vez y que siempre este en función de si misma.

6. COMENTARIOS
La práctica durante su elaboración se torno complicada debido a la dificultad con la que cuenta el lenguaje de
Java, sin embargo, las herramientas con las que cuenta el IDE NetBeans 8.02 ayudaron un poco mas a poder
implementar, crear y lograr la ejecución del programa

7. REFERENCIAS 8. SELLO

También podría gustarte