Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Laboratorios de computación
salas A y B
Profesor: M.I. Edgar Tista García
Grupo: 01
No de Práctica(s): 03
Semestre: 2021-2
Observaciones:
CALIFICACIÓN:
__________
Cote Valencia Alexis Daniel Grupo 1 Estructuras de Datos y Algoritmos 1
ACTIVIDAD 1
Código de la guía de Laboratorio “Nodo Película”
Este código lo que hace es, en primer lugar crear una estructura llamada pelicula
para poder almacenar cadenas de caracteres y variables numéricas enteras, acto
seguido declara una función sin retorno (void) encargada de imprimir los datos a
almacenar de la estructura anterior, después se define una estructura de tipo
película (en este punto el código original tenía un error, se trataba de declarar una
estructura de tipo nodo, la estructura nodo no existía en ninguna parte por lo que al
momento de compilar el código mostraba error, para corregir eso se borraba la
palabra nodo y en su lugar agregábamos la palabra película); a continuación
comienza la función principal en la que se dan, por parte del mismo código, el
Cote Valencia Alexis Daniel Grupo 1 Estructuras de Datos y Algoritmos 1
ACTIVIDAD 3
Código de la práctica 1 “Ejercicio 1”
necesarias) en la que se declaró una variable de tipo entero para poder almacenar
el total de divisiones deseadas (divisiones_totales), también se declaró un arreglo
de tipo entero para poder ir almacenando el total de cada sección
total_datos_ingresados igualada a 0 (total de divisiones en la posición 0, total de
batallones en la posición 1 y el total de militares en la posición 2) y se declaró una
variable de tipo carácter para almacenar la opción a escoger en el menú de
opciones; cuando se almacena el total de divisiones a crear (divisiones_totales), en
seguida se crean dos arreglos, uno de tipo Division nombrado divisiones con
extensión del número de divisiones a rear y otro de tipo division nombrado
arreglo_almacenar con la misma extensión del anterior, el primer arreglo sirve para
poder ingresar a las distintas variables en las que se almacenarán los datos de los
militares, divisiones y/o de batallones, mientras que el segundo arreglo sirve para
almacenar las cantidades de soldados en cada batallón y las cantidades de
batallones en cada división; antes de ir la siguiente función igualamos
total_datos_ingresados[0] a la suma de total_datos_ingresados[0] con
divisiones_totales para tener un conteo de cuántas divisiones se han creado.
Acto seguido lo que se hace es llamar a una función denominada crearDivisión en
la que tendrá como parámetros de entradas los arreglos previamente mencionados
(el arreglo divisiones, el arreglo arreglo_almacenar y el arreglo
total_datos_ingresados) junto con la variable de tipo entero (divisiones_totales), ya
dentro de esta nueva función lo que se hace como primer paso es declarar otras 2
variables de tipo entero (un contador para un for “contador_divisiones” y uno para
almacenar el total de batallones “batallones_ingresar” en la División en la que nos
encontraremos con el for) y dos arreglo de tipo carácter en el que se almacenará el
nombre de la División (nombre_division) y su zona (Zona_division), igualamos el
arreglo total_datos_ingresados[1] a la suma de total_datos_ingresados[1] más
batallones_ingresar para tener un recuento de los batallones totales; iniciamos el
ciclo for con el contador igualado a cero aumentando en una unidad después de
cada ciclo hasta ser menor a divisiones_totales, en este for se iba preguntando los
datos respectivos a la División en la que nos encontrábamos y, al ser cadenas de
caracteres los datos a guardar, los almacenábamos en primera instancia en los
arreglos de caracteres mencionados anteriormente junto con la ayuda de las
funciones setbuf (sirve para limpiar el buffer de la terminal y no reconozco el primer
enter ingresado antes de la línea para almacenar en la variable) y fgets (nos permite
guardar una cadena de caracteres con espacios hasta encontrar un salto de línea)
para después, con la función strcpy, almacenarlos en la estructura según como
fuera necesario (divisiones[contador_divisiones].Zona por ejemplo); después de
haber almacenado los datos de la División se pregunta al usuario cuántos batallones
tendrá dicha división, el valor se almacena en la variable batallones_ingresar y en
el último renglón del for se llamó a una nueva función para crear los batallones
respectivos (crearBatallon), sus parámetros de entrada es la variable
batallones_ingresar, el contador contador_divisiones, el arreglo divisiones, el
arreglo arreglo_almacenar, el arreglo total_datos_ingresar.
Cote Valencia Alexis Daniel Grupo 1 Estructuras de Datos y Algoritmos 1
arreglo_almacenar[agregar_a_batallon].nuevos_batallones[agregar_nuevo_militar]
.nuevos_soldados, dentro del for lo que se hará es preguntar los datos respectivos
del militar y se almacenarán en las variables como se hizo en la función crearMilitar
sólo que se usa como índice las variables agregar_a_batallon,
agregar_nuevo_militar, nuevo_militar y una vez concluido todo lo anterior nos
regresa al menú de opciones, si escogemos la parte de Mostrar Militares aparecerán
en pantalla el nuevo número de militares totales junto con todos los militares
anteriormente creados y los nuevos militares creados señalando el batallón en el
que se encuentran y su respectiva división.
Para finalizar si se escoge la opción Salir lo que hará será cerrar el programa por
completo y si selecciona cualquier otra opción no mencionada en el menú le pedirá
de favor que escoja una de las ya establecidas regresándolo al menú.
Cote Valencia Alexis Daniel Grupo 1 Estructuras de Datos y Algoritmos 1
CONCLUSIONES
Toda la práctica presento ser un verdadero reto en todos sus aspectos, en primer
lugar por la parte del tema visto (estructuras) ya que no es un tema nada fácil de
comprender debido a que se necesita un gran nivel de abstracción para poder saber
como relacionar las estructuras con los datos que deseamos almacenar además de
cómo podemos relacionarlos con otras funciones o hacer uso de la recursividad en
otras estructuras.
Por otro lado la comprensión de los códigos del manual de prácticas (de la guía de
laboratorio) fue en cierta forma complicado, esto debido a que no se explicaba a
fondo qué era lo que se quería lograr o cuál era su objetivo a cumplir además de
que al momento de declarar varias variables y cambiarles el nombre dentro de las
funciones el alumno se llegaba a confundir, por otro lado al momento de ejecutar el
segundo código se encontró con un error de declaración debido a que decía que no
existía el arreglo “nodo” cosa que no comprendía a qué se refería y al momento de
buscar en libros de programación y en internet logré saber que nodo se llamaba a
una “estructura recursiva” y pude hacer el cambio necesario sin embargo pienso yo
que estaría bien que el profesor explicara eso en la clase o algunos que otros
conceptos que los libros manejan con otro nombre.
En la parte del código del ejercicio dejado por el profesor desde mi punto de vista
fue excelente ya que nos obligó a usar mucho nuestro razonamiento al igual que
nos obligaba a tener un pensamiento abstracto de cómo se relacionaban los datos,
por ejemplo para un batallón puede existir n-militares pero para un militar sólo existe
una división, para una división existen n-batallones que a su vez existen n-militares
pero por cada militar existe un batallón y por cada batallón existe un militar; esta
forma de ver la relación entre datos, si no me equivoco, la ocupan en la materia de
Base de Datos por lo que nos ayuda a ir forjando nuestras habilidades para esa
clase.
Por otro lado desde mi punto de vista el tiempo que nos dejó el profesor, suponiendo
que el paro de labores no se hubiese acatado o no se hubiese dado, era
extremadamente poco debido a que simplemente el tiempo de análisis de cómo
debe funcionar el programa y de cómo tengo que relacionar los datos llevaba
bastante tiempo y, para que después de implementarlo hubiera un error o el camino
que se siguió para resolver el problema no fuera el más optimo o el correcto, que al
final nos marcara error el compilador o nos diéramos cuenta que no sirve como
nosotros esperábamos por lo que desde mi punto de vista hubiera sido mejor dejar
dos semanas de trabajo.
En la parte de los objetivos de clase y los objetivos de laboratorio se cumplieron en
su totalidad sin problema alguno, además de que hemos ido implementando todo lo
aprendido durante el curso y durante la materia de Fundamentos de Programación