Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Laboratorios de computación
salas A y B
M.I Edgar Tista García
Profesor:
01
Grupo:
06
No de Práctica(s):
24
No. de Lista o Brigada:
2022-2
Semestre:
20 de marzo de 2022
Fecha de entrega:
Observaciones:
CALIFICACIÓN: __________
Objetivos
Objetivo general:
Objetivo de la clase:
Actividad 1.
c->ultimo=(c->ultimo->tamano) +1;
Lo que básicamente hace esta instrucción, es tener control del índice último,
ya que su funcionamiento es el siguiente: con el operador modulo (%) se
obtiene el residuo de la división entre el índice ultimo y el tamaño, por
ejemplo, si se tiene al índice ultimo igual a 0, entre 8, que es el tamaño de
una cola, nos daría como residuo 0 y más el 1 constante, el resultado de la
operación seria 1 y este valor se le asignaría al índice ultimo. Tomemos otro
ejemplo, si el índice último es igual a 1, se divide entre 8, que es el tamaño
de la cola, el residuo dará 1 y más el 1 constante, el resultado es igual a 2.
En pocas palabras, esta instrucción está haciendo que el índice ultimo vaya
aumentando de 1 en 1.
Continuando, dentro del else de la línea 45, se vuelve a aplicar una condición,
pero esta vez, es para comprobar si la cola llego a su máxima capacidad, si
es que esto es falso, entra a otro else anidado y dentro de este, se vuelve a
encontrar otra condicional, la cual sirve para ver si el primer elemento se
encuentra en la posición 1, si esto es verdad, lo que se estará haciendo es ir
colocando a los valores de sentido contrario, de la posición que encuentra
detrás de 1, por ejemplo, si la cola es de 8 elementos, por su naturaleza
circular de la cola, la posición anterior de 1 será 8, y se ira recorrido de forma
descendiente (8,7,6…). Si es que la condición no es verdadera, se pasara al
último else, el cual hace uso del operador modulo para manejar al índice de
la lista.
Para crear el programa que pueda responder las preguntas, se hizo lo siguiente:
Como buena práctica, creamos dos funciones, las cuales tendrán las instrucciones
para cada inciso. Para esto, agregamos la declaración de la función colaincisoA y
colaincisoB a nuestra biblioteca “colaDoble.h”, las cuales no recibirán ningún
parámetro y no devolverán ningún valor, ya que lo único que se quiere hacer es
realizar las operaciones e imprimir las estructuras.
Hay que tomar en cuenta que solo vamos a usar a las operaciones encolarFinal y
desencolarInicio, ya que, tenemos como limitante usar solo las operaciones
correspondientes a una cola convencional y si recordamos, en una cola normal el
primer en llegar es el primero en llegar.
Comenzamos con declarar una variable auxiliar para guardar los elementos
que se desencolen. En la línea 117 creamos a nuestra cola queue con la función
crearCola, la cual recibe como parámetro un 9, esto debido a que se nos pide una
cola circular de tamaño 9 para el inciso a.
Ya, por último, vamos a mostrar el contenido y los índices de la cola para este inciso,
para hacer esto, basta con mandar a llamar a la función mostrarValores y
mostrarIndices, tal y como se hizo en las 133 y 135.
Las respuestas de las tres preguntas anteriores se obtuvieron con la ejecución del
programa:
Las respuestas de las tres preguntas anteriores se obtuvieron con la ejecución del
programa:
Para esta actividad se hizo uso de los archivos dados por el profesor sin ninguna
modificación. También hay que tomar en cuenta que los índices de la cola fueron
tomados de la siguiente manera:
Dentro de nuestra función main, declaramos una variable auxiliar para que podamos
usar nuestras operaciones de desencolar. Después, en la línea 7, creamos a nuestra
cola con la función crearCola, a la cual le pasaremos como parámetro al tamaño de
nuestra cola, que será de 8.
Para replicar al esquema 1, lo que vemos es que solo tiene elementos en los lugares
2,3,4 y 5, por lo tanto, encolamos los números del 101 al 105, con nuestra función
encolarFinal, ya que lo que queremos es ver a los elementos de manera consecutiva
y, por último, para que en el lugar 1 no se tenga nada, hacemos uso de la operación
desencolarInicio, pues el primer elemento es el que se necesita eliminar.
Mandamos a que nos muestre como quedo la cola al final de estas operaciones,
haciendo uso de la operación mostrarValores, y la salida en pantalla es la siguiente:
Para replicar al segundo esquema, lo que se hace es desencolar al elemento que
se encuentra al inicio, mediante nuestra función desencolarInicio de la línea 24. Esto
debido a que, para este esquema, el número que ocupa la posición 2 será 99 y no
102, Después, usamos a nuestra función desencolarFinal, debido a que
necesitamos a esa posición para almacenar otro valor.
Una vez eliminados los elementos necesarios, para colocar a los números 97,98 y
99, necesitamos ir almacenándolos en el inicio, por esto es que en línea 26,27 y 28,
se hizo uso de la función encolaInicior, pero íbamos pasando los parámetros de
forma descendiente, ya que al guardar los elementos con esta función se recorre en
sentido antihorario. Para agregar a los demás elementos, simplemente se usó a la
función encolarFinal, debido a que lo que se quiere es que estos elementos se
encuentren en las siguientes posiciones a las del último elemento (104).
Y, por último, para replicar al esquema 3, vemos que necesitamos eliminar a los tres
primeros elementos (97,98 y 99) y después agregar a un elemento al final. Así pues,
para llevar acabo esto, usamos tres veces a nuestra operación desencolarInicio,
pues si recordamos, el primer elemento es el que se encuentra en la posición 8 y
de ahí se irán borrando en sentido horario. Posteriormente vamos a encolar al final
al número 122, para esto usamos a nuestra función encolarFinal y después,
mandamos a mostrar los valores, los cuales quedan de la siguiente manera:
Ejercicio 4.
Por falta de tiempo no se pudo realizar el análisis del avance que tuvo con este
programa.
Conclusiones
Ahora que hemos visto y realizo todo lo anterior, puedo considerar que los objetivos
se lograron de manera muy buena. Gracias a las actividades que están propuestas,
pude analizar las definiciones, características, procedimientos y ejemplos que
involucran a estas estructuras lineales, para así poder implementarlas a ejercicios
que ayudaron mucho a la comprensión completa de cada concepto.
Considero que el manejo de índices que permite la cola doble será de gran utilidad
para mi aprendizaje en la programación, debido a que son temas que se me
facilitaron y son muy útiles para resolver problemas.
Es un tema sencillo que, con la práctica, hizo que algunos huecos con los que
contaba se fueran llenando, gracias a esto, es que en la mayoría de los programas
solicitados se llegó al %100 de cumplimiento, excepto en el programa de la actividad
4, que a mi parecer se llegó a cumplir un 80% con éxito lo solicito, ya que tiene
errores de lógica los cuales se me dificultaron observar.
Así pues, con los resultados obtenidos, puedo concluir que los temas abordados por
esta práctica quedaron totalmente cubiertos y, si bien, se llego a fallar con la
actividad 4, los errores no vienen sobre este tema, si no mas bien, vienen de errores
lógicos y de antecedentes que se siguen complicando.