Está en la página 1de 26

SEMANA 6 – INTRODUCCIÓN A LA PROGRAMACIÓN

INTRODUCCIÓN A LA PROGRAMACIÓN

SEMANA 6
Principios de estructuras de datos

Todos los derechos de autor son de la exclusiva propiedad de IACC o de los otorgantes de sus licencias. No está
permitido copiar, reproducir, reeditar, descargar, publicar, emitir, difundir, poner a disposición del público ni
utilizar los contenidos para fines comerciales de ninguna clase.
IACC
1
SEMANA 6 – INTRODUCCIÓN A LA PROGRAMACIÓN

RESULTADO DE APRENDIZAJE
Reconocer las estructuras de datos en la construcción de
algoritmos.

IACC
2
SEMANA 6 – INTRODUCCIÓN A LA PROGRAMACIÓN

RESULTADO DE APRENDIZAJE ............................................................................................................. 2


INTRODUCCIÓN ................................................................................................................................... 4
1. FUNDAMENTOS DE ESTRUCTURA DE DATOS.............................................................................. 5
1.1. TIPOS DE DATOS CON ESTRUCTURA LINEAL ....................................................................... 5
1.1.1. ARREGLOS (ARRAY) ..................................................................................................... 5
1.1.2. PILAS .......................................................................................................................... 11
1.1.3. COLAS ........................................................................................................................ 14
1.1.4. COLAS DOBLES........................................................................................................... 17
1.1.5. LISTAS ........................................................................................................................ 17
1.1.6. SECUENCIA ................................................................................................................ 18
1.2. TIPOS DE DATOS ABSTRACTOS .......................................................................................... 20
1.2.1 CONCEPTOS BÁSICOS ....................................................................................................... 20
1.2.2. ESPECIFICACIÓN ALGEBRAICA ................................................................................... 21
1.2.3. ESTRUCTURA DE DATOS DINÁMICAS ........................................................................ 22
COMENTARIO FINAL.......................................................................................................................... 23

IACC
3
SEMANA 6 – INTRODUCCIÓN A LA PROGRAMACIÓN

INTRODUCCIÓN
Los datos representan toda la entrada que se denominas TDA o tipos de datos
un algoritmo, un programa o un sistema abstractos.
requieren para generar resultados por medio
de operaciones de diferentes tipos. Sin Estos tipos de datos permitirán organizar los
embargo, los datos en muchas ocasiones valores de acuerdo con las necesidades del
requieren estructuras más complejas para usuario y del programador para realizar el
poderlos comprender y lograr transmitir procesamiento electrónico respectivo.
realmente el mensaje que se espera.

Estas estructuras particulares son resueltas


por medio de tipos de datos especiales que

Dos elementos son necesarios para formar una verdad: un hecho y una abstracción.

Remy de Gourmont

IACC
4
SEMANA 6 – INTRODUCCIÓN A LA PROGRAMACIÓN

1. FUNDAMENTOS DE ESTRUCTURA DE DATOS


Los datos representan la materia prima de cualquier algoritmo o programa de computadora, así, la
importancia de estos radica en que se deben representar de una manera tal que sean entendidos
para lograr un correcto procesamiento con el objetivo de generar una salida que se ajuste a lo
requerido por parte del usuario.

1.1. TIPOS DE DATOS CON ESTRUCTURA LINEAL


A continuación, se presentan un conjunto de estructuras de datos con sus características propias
con la finalidad de establecer diferencias y asociar a los distintos problemas que pueden ser
resueltos a través de ellas.

1.1.1. ARREGLOS (ARRAY)


Un arreglo representa una estructura que almacena un conjunto de datos del mismo tipo, cada
dato se almacena en una posición diferente del arreglo. De acuerdo Ecured (s.f.a), un arreglo
permite almacenar datos de tipo homogéneo, es decir, todos relacionados y del mismo tipo,
donde cada uno de los elementos que componen el arreglo (o vector), pueden ser de datos
numéricos (enteros o reales), de tipo string, carácter, o de tipo estructurado.

Ecured (s.f.a) también señala que todos los datos que componen el arreglo son denominados
elementos; al número de elementos de un arreglo se denomina tamaño o rango del vector,
también de acuerdo a su estructura se pueden clasificar en:

 De una dimensión (arreglos unidimensionales).


 De dos dimensiones (arreglos bidimensionales).
 De tres o más dimensiones.

IACC
5
SEMANA 6 – INTRODUCCIÓN A LA PROGRAMACIÓN

Figura 1: Representación de un arreglo


Fuente: https://goo.gl/bQnjo6

En la figura 1 se puede observar un arreglo de tamaño 6 con seis espacios para almacenar
elementos. Si sobre el arreglo de la figura se colocan los siguientes datos por ejemplo:

Entonces el índice permitiría responder a interrogantes como:

 ¿Qué valor tiene el arreglo en la posición 3? Donde el array[3] = 1


 ¿Qué valor tiene el arreglo en la posición 1? Donde el array[1] = 5

En este caso se tiene un arreglo de tipo integer o entero, con tamaño 6.

Es posible diseñar algoritmos o programas que permitan trabajar con todo el arreglo, en este caso
como todo array utiliza un tamaño finito de posiciones se recomienda utilizar un ciclo FOR aunque
cualquier estructura repetitiva permite recorrer y trabajar con las posiciones del array.

Al trabajar con un arreglo se deben seguir los siguientes pasos:

IACC
6
SEMANA 6 – INTRODUCCIÓN A LA PROGRAMACIÓN

EJEMPLO 1

Inicio

Paso 1. Leer el número de elementos que tiene el arreglo

Paso 2. Leer los elementos del arreglo

Paso 3. Hacer los cálculos o las operaciones que se requieran

Paso 4. Presentar los resultados o salidas del arreglo

Fin

Por ejemplo para implementar estos pasos se muestra el siguiente algoritmo:

IACC
7
SEMANA 6 – INTRODUCCIÓN A LA PROGRAMACIÓN

EJEMPLO 2

Algoritmo Leer datos de un arreglo:


Variables i, Cantidad_De_Datos: entero //La variable i es el índice
del arreglo

Arreglo: arreglo [100] de entero //Declaración del arreglo tope de 100


posiciones

Inicio

Escribir (“Ingrese el número a almacenar: (inferior o igual a 100)”) //un


número mayor a 100
generará un error
por el tope definido.

Leer (Cantidad_De_Datos)
i:=0
mientras (i <= Cantidad_De_Datos) hacer
Inicio
Escribir (Ingrese el número a ser almacenado en la posición, i)
Leer (Arreglo[i])
i=i+1
Fin

Fin

De esta manera se leen todos los datos del arreglo con el tamaño que definió el usuario.

De acuerdo con la Ecured (s.f.a), en general las características de este tipo de datos se resumen
en:

 Para acceder a las posiciones del arreglo se debe definir el índice, este índice es una
variable positiva que indica la posición dentro del vector o array.
 Los datos dentro del arreglo son todos del mismo tipo.

IACC
8
SEMANA 6 – INTRODUCCIÓN A LA PROGRAMACIÓN

 Se debe definir un tope o tamaño del arreglo.


 Algunas operaciones necesarias para trabajar con arreglos son: la creación del arreglo, la
inicialización del arreglo, la lectura y la escritura de datos en todo el arreglo.

A continuación, se presentan algunos ejemplos de estos tipos de datos:

EJEMPLO 3

Algoritmo arreglos

Variables i, totalDatos: entero


colección: arreglo [100] de entero
Inicio

escribir(“Por favor digite el número de datos de la colección : (inferior o


igual a 100)”)

leer(totalDatos)

i:=0

mientras (i < totalDatos) hacer

escribir (“Ingrese o digite el dato”)

leer (colección[i]

i := i + 1

Fin del ciclo

Fin del algoritmo

Fin

El algoritmo anterior permitirá almacenar datos en un arreglo del tamaño que indique el usuario al
escribir su variable TotalDatos.

IACC
9
SEMANA 6 – INTRODUCCIÓN A LA PROGRAMACIÓN

EJEMPLO 4

Se requiere calcular, utilizando arreglo, el promedio de un conjunto de 40 notas de


un estudiante.

Algoritmo cálculo de promedio


Variables:

Suma, Promedio: real


i: entero
Notas: arreglo [40] de real

Inicio:

Suma = 0

haga desde (i = 1; i <=40; i = i + 1)


leer (Notas[i])
suma = suma + Notas[i]

fin del haga desde

promedio = suma/40

Escribir (El promedio de las 40 notas es:, promedio)

Fin

IACC
10
SEMANA 6 – INTRODUCCIÓN A LA PROGRAMACIÓN

1.1.2. PILAS
De acuerdo con Quevedo, López y Asencio A. (2004), estas estructuras de datos tienen un
comportamiento “LIFO”: Last In First Out, último en entrar, primero en salir, por tanto las pilas
manejan dos operaciones básicas:

 Operación push (para insertar un elemento) y


 Operación pop (para extraer un elemento).

Su característica fundamental es que al extraer se obtiene siempre el último elemento que acaba
de insertarse.

A continuación se presentan algunos ejemplos en los cuales se implementa el uso de pilas en la


apertura y cierre de ventanas de Microsoft Windows.

Figura 2: Operaciones Push y Pop de una Pila.


Fuente: https://goo.gl/Q4kWrZ

IACC
11
SEMANA 6 – INTRODUCCIÓN A LA PROGRAMACIÓN

Figura 3: Operaciones Push y Pop de una Pila.


Fuente: https://goo.gl/LcRuvU

En el siguiente video se puede observar a detalle la manipulación de


datos utilizando pilas:

https://goo.gl/Ca53rE

Es importante destacar que las pilas tienen un tope o capacidad máxima tal como los arreglos. Por
tanto cuando se almacenan datos hasta el tope o cima de la pila ya no se pueden seguir agregando
datos a la misma.

IACC
12
SEMANA 6 – INTRODUCCIÓN A LA PROGRAMACIÓN

Figura 4: Pila de capacidad o tope = 4 con un Push de un elemento nuevo.


Fuente: https://goo.gl/33K47b

En el siguiente ejemplo se puede observar el proceso de inserción de datos en una pila:

EJEMPLO 5

Fuente: https://goo.gl/K3hgdS

IACC
13
SEMANA 6 – INTRODUCCIÓN A LA PROGRAMACIÓN

1.1.3. COLAS
A diferencia de las pilas, las colas tienen un comportamiento FIFO, First In First Out, primero en
entrar es el primero en salir. Por ejemplo en la cola de un supermercado, los clientes que van
llegando deben ponerse detrás de las personas que también esperar por pagar. La cajera, en este
caso, atenderá en primer lugar a la persona que primero llegó a la cola.

Imagen 1: Cola de supermercado


Fuente: https://goo.gl/GfVq7c

Otro ejemplo de acuerdo con lo que expone Blancarte (2014) sobre las colas corresponde a la
dinámica que se presenta en un banco: un cliente toma un número para esperar su turno,
inmediatamente se puede conocer cuántas personas o números hay por delante, por lo que
automáticamente se deduce que estas personas serán atendidas antes. Si se ve el
comportamiento se puede notar en este escenario que el primer cliente que llegó y solicitó un
turno será atendido primero y quien llegó al último será atendido hasta el final.

IACC
14
SEMANA 6 – INTRODUCCIÓN A LA PROGRAMACIÓN

Figura 5: Incorporación de un elemento a la cola.


Fuente: https://goo.gl/W56BKh

A la izquierda se muestra cómo un elemento es agregado a la cola, mientras que a la derecha se


muestra cómo queda constituida la cola una vez que el nuevo elemento ha sido incorporado.

Al extraer un elemento de la cola se tiene que:

Figura 6: Salida de un elemento de la cola.


Fuente: https://goo.gl/tCi1V1

IACC
15
SEMANA 6 – INTRODUCCIÓN A LA PROGRAMACIÓN

Una característica importante de la cola es que no se permite sacar


elementos que no sean el primero de la cola, ya que de lo contrario no
correspondería a esta estructura de datos.

La siguiente figura muestra los valores de inicio tanto de una cola como de una pila con la finalidad
de comparar las dos estructuras de datos implementadas en un programa con interfaz gráfica:

EJEMPLO 6

Pilas y Colas
Fuente: https://www.academia.edu/22313790/Pilas_y_Colas

IACC
16
SEMANA 6 – INTRODUCCIÓN A LA PROGRAMACIÓN

1.1.4. COLAS DOBLES


Esta estructura similar a la cola simple y tiene como característica especial que permite insertar y
eliminar elementos por ambos extremos de la cola. Para identificar esta estructura se utiliza el
“frente y final” a fin de indicarle al usuario por cuál extremo requiere ingresar o retirar el dato.

Figura 7: Representación de una cola doble.


Fuente: https://goo.gl/rBZEmJ

1.1.5. LISTAS
De acuerdo con Ecured (s.f.b), una lista representa una estructura de datos lineal que enlaza
diferentes nodos entre sí, modelando situaciones reales como: datos de los alumnos de un
colegio, datos del personal de una empresa o programas informativos almacenados en un disco
magnético.

Figura 8: Representación de una lista.


Fuente: https://goo.gl/dc6X72

Se puede notar que la referencia contenida en el nodo de una lista se denomina “siguiente”, e
indica en dónde se encuentra el siguiente elemento de la lista. El último elemento de la lista no
tiene nodo siguiente, por lo que se dice que la referencia siguiente del último elemento es null
(nulo).

IACC
17
SEMANA 6 – INTRODUCCIÓN A LA PROGRAMACIÓN

1.1.6. 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.

Se deben definir qué operaciones se deben programar para la secuencia definida, por ejemplo:

a) Seleccionar el primer elemento de la secuencia.


b) Seleccionar el último elemento de la secuencia.
c) Determinar la longitud de la secuencia.
d) Determinar el mayor elemento de la secuencia.
e) Determinar el menor elemento de la secuencia.

Un ejemplo de estas operaciones se define a continuación:

El algoritmo del ejemplo 7 determina el primer elemento de la secuencia.

EJEMPLO 7

Función PRIMER_ELEMENTO (S: Secuencia): Elemento


Postcondición: e1 o Fin (S)
Acción: Si S = (e1, e2, …., en) entonces PRIMER_ELEMENTO = e1

Sino PRIMER_ELEMENTO = Fin (S)

Fin

El algoritmo del ejemplo 8 determina el último valor de la secuencia y su longitud.

IACC
18
SEMANA 6 – INTRODUCCIÓN A LA PROGRAMACIÓN

EJEMPLO 8

Función ULTIMO_ELEMENTO (S: Secuencia): Elemento


Postcondición: e1 o Fin (S)
Acción: Si S = (e1, e2, …., en) entonces ULTIMO_ELEMENTO = e1

Sino ULTIMO _ELEMENTO = Fin (S)

Fin

Función LONGITUD (S: Secuencia): Elemento


Postcondición: LONGITUD (S)
Acción: Si S = ( ) entonces LONGITUD = 0

Sino Si S = (e1, e2, …, en) entonces LONGITUD = n

Fin

Estas funciones declaradas anteriormente permiten hacer


operaciones sobre la secuencia, sin embargo para implementarlas, se
deben utilizar estructuras que estén definidas en los lenguajes de
programación.

La estructura usada generalmente es el arreglo y la definición de la estructura se realiza de la


siguiente manera:

IACC
19
SEMANA 6 – INTRODUCCIÓN A LA PROGRAMACIÓN

EJEMPLO 9

Tipo:

Secuencia =Array{1--n} de tipo Carácter //Esto define una estructura de tipo carácter de
n posiciones

Var:

S: Secuencia;

1.2. TIPOS DE DATOS ABSTRACTOS


1.2.1 CONCEPTOS BÁSICOS
Todas las estructuras definidas previamente: pilas, colas, listas y secuencias se definen como tipos
de datos abstractos. De acuerdo con Bustos (s.f.) los tipos de dato abstractos o TDA representan
datos a los que se les asocian operaciones.

Existen operaciones permitidas que se abstraen de la manera en que se implementan estas


operaciones, con esto, se puede implementar un TDA en distintas estructuras de datos generando
la misma funcionalidad.

Algunas de las ventajas de usar los datos TDA, según Bustos (s.f.), son:

1) Organizan el código del programa y agrupan los datos complejos de una forma más
comprensible.
2) Robustecen el sistema.
3) Reducen los tiempos de compilación.
4) Facilitan la extensibilidad y escalabilidad del código.

IACC
20
SEMANA 6 – INTRODUCCIÓN A LA PROGRAMACIÓN

Figura 9: Secuencias.
Fuente: https://goo.gl/F9E6CT

1.2.2. ESPECIFICACIÓN ALGEBRAICA

La especificación algebraica o ecuacional define las propiedades de un tipo de dato abstracto con
ecuaciones que tienen variables cuantificadas universales para cualquier valor que tomen las
variables. De acuerdo con Martí, Ortega y Verdejo (2003) se siguen los siguientes pasos:

a) Identificación de los objetos del TAD y sus operaciones (declaración del TAD, módulos que
usa, parámetros).
b) Definición de la signatura (sintaxis) de un TAD (nombre del TAD y perfil de las
operaciones).
c) Definición de la semántica (significado de las operaciones).

La operación de un TAD representa una función que toma como parámetros (entrada) cero o más
valores de diversos tipos, y produce como resultado un solo valor de otro tipo. El caso de cero
parámetros representa una constante del tipo de resultado.

De acuerdo con Martí, Ortega y Verdejo (2003), se presentan las siguientes consideraciones
relacionadas con los datos abstractos:

 Las ecuaciones algebraicas también se conocen con el nombre de axioma.


 Los axiomas determinan las propiedades y el comportamiento de las operaciones.
 Toda especificación deben cumplir estas dos propiedades:
a) Solo pertenecen al tipo los valores que puedan ser creados mediante términos
sintácticamente correctos.
b) Cada término bien formado denota un único valor del tipo especificado.
 Mediante las ecuaciones debe ser posible deducir todas las equivalencias que son válidas
entre los términos, es decir, identificar las secuencias de operaciones (términos) que
producen el mismo resultado.

IACC
21
SEMANA 6 – INTRODUCCIÓN A LA PROGRAMACIÓN

1.2.3. ESTRUCTURA DE DATOS DINÁMICAS

Estas estructuras de dato no tienen un tamaño determinado en memoria ocupada, por tanto
pueden crecer a medida que sea requerido por el programa. Esta es su gran diferencia con los
datos estáticos cuyo tamaño en bit está definido. El tipo de datos dinámico suelen denominarse
punteros, y se caracterizan por el hecho de que con un nombre se hace referencia a un conjunto
de espacios de memoria.

De acuerdo con Pérez (s.f.) un puntero es una variable cuya finalidad es que almacena una
dirección en memoria de otra variable.

Figura 10: Representación de un puntero.


Fuente: https://goo.gl/xtiM4x

IACC
22
SEMANA 6 – INTRODUCCIÓN A LA PROGRAMACIÓN

COMENTARIO FINAL
Al identificar y conocer los tipos de datos abstractos, el programador o analista informático tendrá
más herramientas para elaborar programas bajo lenguajes de programación comerciales o de
software libre. El conocer estructuras como las pilas, las colas, los arreglos entre otras, permitirá
realizar un modelado más complejo en la forma en que los datos se pueden procesar en un
computador.

IACC
23
SEMANA 6 – INTRODUCCIÓN A LA PROGRAMACIÓN

REFERENCIAS
Blancarte, O. (2014), Estructura de datos – Queue (Cola). Recuperado de: https://goo.gl/pmHiw8

Bustos, B. (s.f.). Tipos de Datos Abstractos. Recuperado de: https://goo.gl/ZF4ntm

Ecured (s.f.a). Arreglos (informática). Recuperado de:

https://www.ecured.cu/Arreglos_(Inform%C3%A1tica)

Ecured (s.f.b). Listas (informática). Recuperado de:

https://www.ecured.cu/Listas_(Inform%C3%A1tica)

Martí, N; Ortega, Y. y Verdejo, J. (2003). Estructuras de datos y métodos algorítmicos. España:

Editorial Pearson Educación.

Pérez, F. (s.f.) Estructura de datos dinámica. Recuperado de: https://goo.gl/d48epv

Quevedo E., López R. y Asencio A. (2004). Pilas y colas. Recuperado de: https://goo.gl/Av9NWd

PARA REFERENCIAR ESTE DOCUMENTO, CONSIDERE:

IACC (2018). Principios de estructuras de datos. Introducción a la Programación.

Semana 6.

IACC
24
SEMANA 6 – INTRODUCCIÓN A LA PROGRAMACIÓN

IACC
25
SEMANA 6 – INTRODUCCIÓN A LA PROGRAMACIÓN

IACC
26

También podría gustarte