Está en la página 1de 6

INTRODUCCIÓN A LA PROGRAMACIÓN.

Manuel Pacheco C.

Principios de estructuras de datos.

Instituto IACC

09/03/2020
INSTRUCCIONES:
 Leer contenidos de la semana 6.
 Revisar el material complementario disponible en recursos adicionales.
 Las respuestas a las preguntas del control deben ser una elaboración propia.
Usted se apoyará en los contenidos de la semana y también puede hacerlo con otros textos, pero
siempre debe identificar los autores y citar las fuentes. Recuerde agregar la bibliografía al final
del control en formato APA. Cuide su redacción y ortografía. Puede consultar en el Foro
Novedades el documento de Normas APA.

DESARROLLO DEL CONTROL:

1) En Santiago se ha inaugurado una dulcería famosa porque solo produce un tipo de


queque de chocolate que satisface todos los gustos. La dulcería no vende ni hornea ningún
otro tipo de producto.
Cada día asisten más y más clientes y se ha decidido implementar un sistema de ventas con
ticket para la atención de los usuarios. Además, se debe considerar, por orden del
repostero, que los queques se vendan en el orden en que van saliendo y no se deben
acumular en los mostradores (esto para garantizar calidad y frescura del producto).
Al implementar este sistema en la repostería, ¿qué tipo de datos abstractos reconoce que
pueden estar presentes en la implementación del sistema final? Fundamente su respuesta.

En este caso, para el sistema que se incorporó para una mayor rapidez de atención y mantener
frescos los productos que se venden, los datos abstractos que se implementaron nos permite la
atención del primer cliente en llegar hasta el último, planteándolo más claro, los datos abstractos
de COLA ya que este tiene un comportamiento FIFO el cual nos indica que el primero en entrar
es el primero en salir con la implementación de las COLA estamos ayudando a que los queques
no se vayan a cumulando.
Esta se puede implementar de varias formas en un programa, con vectores o listas enlazadas,
para una u otra se necesitan a lo menos dos variables representan a los punteros Frente (F=front)
y al final (r = rear).
Las colas facilitan el almacenamiento y la interconexión de datos en tránsito, la implementación
de impresión de turno, con lo que se debería implementar la PILAS ya que estas tienen un
comportamiento LIFO lo que significa que la última boleta en entrar es la primera en salir, con
esto además tendrá un control de sus ventas.

Para entender mejor describiere cómo funciona la COLA (fila)


1.- los elementos que llegan se insertan al final (ENCOLAR)
2.- los elementos que salen se leen por el principio (DESENCOLAR)
Esta estructura de datos se conoce como FIFO ya que almacenan datos en una lista.
2) Se requiere diseñar una función que calcule si una palabra es palíndromo o no. Para ello
debe comparar las estructuras de datos: pila, cola, arreglos, secuencias o listas, y
argumentar cuál recomienda para implementarla dentro de un programa.

Como definición Palíndromo: Palabra o expresión que es igual si se lee de izquierda a derecha o
de derecha a izquierda.

Como seudocódigo podría decir que funcionaria así:

Algoritmo Palindromo
Escribir "Escriba una palabra"
leer palabra
palabra <-Minusculas(palabra)
Dimension Alrevez[Longitud(palabra)]
Para cont<-Longitud(palabra) Hasta 1 Hacer
letra <- Subcadena(palabra, cont, cont)
Alrevez[cont] <- letra
PalabraAlrevez =Concatenar(PalabraAlrevez, Alrevez[cont])
FinPara

si palabra =palabraalrevez entonces


escribir palabra , "es un polindromo"
escribir "Cantidad de letras = ",Longitud(palabra)
escribir "Escrita al reves = ",palabraalrevez
sino
escribir palabra, " no es una palabra palindroma"
escribir "Cantidad de letras = ",Longitud(palabra)
escribir "Escrita al reves = ",palabraalrevez
FinSi
FinAlgoritmo
Pero aplicando lo pedido en la pregunta en base a como implementaría las estructuras de datos,
para lo cual daremos algunas definiciones para conocer cuál sería más adecuada:

Pila (Stack): Una pila es un método de estructuración de datos usando la forma LIFO (Último en
entrar, Primero en salir). Que permite almacenar y recuperar datos.

Cola: Una cola es una estructura de datos, caracterizada por ser una secuencia de elementos en
la que la operación de inserción Push se realiza por un extremo y la operación Pop por el otro.
También se le llama estructura FIFO (First In First Out), Debido a que el primer elemento que
entra será el primero elemento en salir.

Arreglos: Un arreglo es un conjunto de datos o una estructura de datos Homogéneos, que se


encuentran ubicados en forma consecutiva en la memoria Ram (sirve para almacenar datos en
forma temporal).

Secuencia: La secuencia constituye un tipo de dato abstracto formado por elementos de un


mismo tipo, por ejemplo, al definir una secuencia denominada “e”, esta tendrá un conjunto de
elementos del mismo tipo denominada elementos de secuencia, entonces, será tratada como una
secuencia de
“e”, donde los elementos de esta secuencia pueden ser enteros, caracteres o datos lógicos.

Listas: Una lista es una estructura de datos lineal que se puede representar simbólicamente como
un conjunto de nodos enlazados entre sí.
Las listas permiten modelar diversas entidades del mundo real como por ejemplo, los datos de
los alumnos de un grupo académico, los datos del personal de una empresa, los programas
informáticos almacenados en un disco magnético, etc.

Aplicando un poco las estructuras de datos no daría como resultado algo así:

lógico función EsPalíndromo(valor cadena : cad)


var
Pila : p
Cola : c
TipoElemento : e1, e2
entero : i
inicio
PilaNueva(p)
ColaNueva(c)
//Se insertan todos los caracteres de la cadena en la
//pila y en la cola al mismo tiempo
desde i<- 1 hasta longitud(cad) hacer
CInsertar(c,cad[i])
PInsertar(p,cad[i])
fin_desde
//Se sacan los caracteres de la pila y la cola hasta que
//se encuentra un carácter distinto o hasta que alguna de
//las estructuras esté vacía
repetir
Pop(p,e1)
Sacar(c,e2)
hasta_que (e1 <> e2) o EsPilaVacía(p)
//Los últimos caracteres sacados son iguales, es un palíndromo
devolver(e1 = e2)
fin_función

Con este seudocódigo podemos decir que utilizando una estructura de datos de pila y de cola
podremos utilizarlas para realizar lo pedido de buena manera.

Si bien con una estructura de datos de cola doble sería más sencillo, acá no se pidió analizar es
estructura de datos en particular. Pero para más bien hacer una comparación:
Como solución para el problema se utiliza la cola doble para guardar los caracteres de la palabra
ingresada. Lo primero que aremos será procesar la palabra de izquierda a derecha y se agregará
cada carácter al final de la cola doble. En este momento la cola doble estará funcionando de una
forma muy parecida a una cola.

def verificarPalindromo(cadena):
colaDobleCaracteres = ColaDoble()
for caracter in cadena:
colaDobleCaracteres.agregarFinal(caracter)
aunIguales = True

while colaDobleCaracteres.tamano() > 1 and aunIguales:


primero = colaDobleCaracteres.removerFrente()
ultimo = colaDobleCaracteres.removerFinal()
if primero != ultimo:
aunIguales = False
return aunIguales
print(verificarPalindromo("lsdkjfskf"))
print(verificarPalindromo("radar"))
Bibliografía

Contenido semana 6

También podría gustarte