Está en la página 1de 10

Compendio didáctico para la asignatura Estructuras de Datos I en

integración con Material Multimedia Inclusivo


Prólogo

En el presente documento se realiza un análisis sistemático del contenido de la asignatura


Estructuras de Datos I con el fin de definir guías didácticas apropiadas para la distribución de
contenido, así como una relación e integración de material multimedia con características
inclusivas correspondientes.

La pertinencia de la elección de la asignatura de Estructuras de Datos para la sistematización


del contenido con enfoque inclusivo se debe esencialmente a dos factores principales, el
primero relacionado con fortalecer las capacidades y habilidades del estudiantado en los
contenidos de la asignatura, así como una guía de acompañamiento docente, mediante un
esquema de apoyo multimedia inclusivo, debido a las dificultades presentes al introducir un
cambio en el paradigma de las estructuras de datos formales. El segundo enfocado al contexto
de la UNAN-Managua, en especial la Facultad Regional Multidisciplinaria de Carazo (FAREM-
Carazo), en la necesidad de desarrollar material multimedia inclusivo integral dadas las
características del estudiantado y el acceso masivo de la universidad. En este sentido
particular, seis estudiantes de la carrera de ingeniería en sistemas de información de la
FAREM-Carazo, poseen discapacidad auditiva y se ha comprobado la necesidad de adecuación
de los materiales tradicionales a un entorno accesible, a su vez la pertinencia de este
compendio antes de que dichos estudiantes reciban la asignatura permitirá realizar de forma
posterior la evaluación del mismo.

También se destaca el proceso de concientización del docente universitario hacia la


homologación de materiales didácticos con características de accesibilidad y un ejemplo en la
creación de estos.
Introducción
Contenido

1. Introducción a las estructuras de datos

En el mundo de la programación, muchas veces se presenta la necesidad de gestionar


múltiples espacios de memoria agrupados en un solo identificador, acorde a las necesidades
del problema a solucionar; a su vez la necesidad de establecer reglas de ámbito global que
puedan ser heredadas a toda una estructura, definiendo los ámbitos de acción y forma de
operación de estas.

Las estructuras de datos no fundamentales, son formas de gestionar espacios de memoria


acorde a una especificación. Importantes en distintos ámbitos de aplicación por la
nomenclatura y operaciones básicas que la rigen y en esta asignatura en particular como una
forma de fomentar el desarrollo de lógica computacional en el estudiante.

En este sentido es necesario definir conceptos que se mantienen de una relación previa con
estructuras de datos fundamentales.

1.1. Estructuras por definición de espacio de almacenamiento


1.1.1. Estructura Estática: Se considera a aquella estructura que tiene espacios de
memoria definidos en tiempo de compilación y asignados de forma fija en tiempo
de ejecución. Un ejemplo, es la definición de variables con un tipo de dato de un
ancho especifico, en donde el espacio de almacenamiento delimitado a este tipo
no puede ser modificado en tiempo de ejecución. A continuación, se representa
ejemplos definidos en lenguaje C.

Int valor;

Float promedio;

Char nombre[25];
1 Ejemplos de Variables con espacio definido previa ejecución.

1.1.2. Estructura Dinámica: Se caracteriza por la definición de espacios de memoria en


tiempo de ejecución, es decir, previa ejecución no se realiza reservación alguna en
base a tipos de datos, al contrario, se van creando mientras se van necesitando
durante la ejecución. A continuación, se representa un ejemplo definido en
lenguaje C.

N=((nodo*) malloc(sizeof(nodo)))
2 Llamado a creación de espacio de memoria en tiempo de ejecución

typedef struct registro


{
struct registro *izq;
int info;
struct registro *der;
}nodo;
3 Definición de un tipo de datos del cual será el tipo de espacio de memoria a crear.
1.2. Estructuras por forma de crecimiento
1.2.1. Estructura Lineal: Estructura que su forma de crecimiento está definida en base a
una secuencia en la cual cada elemento es seguido y antecedido únicamente por
otro elemento o ninguno, por lo tanto, su representación visual es lineal.

4 Representación visual de una estructura de tipo lineal

1.2.2. Estructura Jerárquica: Estructura en la que cada elemento puede ser precedido o
antecedido por uno o más elementos en un nivel superior o inferior. Su
representación visual no es lineal, es jerárquica.

5 Representación visual de una estructura de tipo Jerárquica


2. Pilas
2.1. Conceptos básicos

Una estructura de datos Pila es aquella que contextualiza las operaciones y reglas que rigen a
una representación de “pila” en el quehacer cotidiano, caracterizándose por la forma de
ingresar y extraer elementos de una agrupación de estos, siguiendo las especificaciones de una
estructura LIFO.

LIFO (Del inglés: Last Input, First Output, ultimo en entrar, primero en salir), hace referencia a
las estructuras que cumplen con la metodología de ingreso y egreso de elementos, descrita en
las siglas que la definen.

Un ejemplo de “pila” en el mundo corpóreo es: una agrupación de libros apilados de forma
vertical, en la cual, para acceder a cualquiera de los elementos, solo se puede realizar a partir
del extremo superior. Es decir, en una pila de tres libros, para acceder al libro 2, se debe retirar
primero el libro 3 y posteriormente acceder o retirar el libro 2, destacando que, una vez
realizada esta operación, el libro 3 debería colocarse nuevamente en la cima de la pila.

Analizando los argumentos anteriores, nos describe a una estructura de datos que es capaz de
agrupar un conjunto de elementos, sin embargo, el acceso al contenido debe ser realizado
siguiendo la normativa de una estructura LIFO.

La representación de este tipo de estructura conlleva a una representación lineal, en este


sentido desde un lenguaje de programación, cualquier estructura base lineal que permita
almacenar un conjunto de elementos y que cumpla con las características LIFO es considerada
una pila de elementos.

Una pila de elementos puede ser considerada de forma estática si la estructura base que es
utilizada para definir la pila sigue también esta característica, ejemplo “Arreglos; o puede ser
dinámica si la estructura base también lo es, ejemplo “creación de espacios en tiempo de
ejecución mediante punteros”.

A continuación se muestra una referencia de la declaración de un tipo de datos “pila” y su


posterior asignación, usando lenguaje C.

typedef struct pila


{
int elem[MAX];
int tope;
};
6 Representación de una estructura como tipo de datos Pila

pila p
7 Asignación del tipo de datos "pila" a la variable p.

Una característica de la estructura de datos LIFO es que para acceder a los elementos
únicamente se realiza mediante la gestión de una variable que se encarga de almacenar la
posición del elemento que se encuentra en la cima de la pila, denominada “Tope”.

En este sentido hay que tener presente que, en la gestión de este tipo de estructuras, hay que
diferenciar claramente los elementos Contenido y Posición. Contenido hace referencia al valor
almacenado en la pila, el cual puede ser de cualquier tipo según especificación previa y
Posición que representa la posición actual de los elementos en la pila, el que será gestionado
mediante la variable “Tope” mencionada anteriormente.

2.2. Operaciones de gestión de una estructura Pila


2.2.1.Vacía: Una pila está vacía cuando la cantidad de elementos que forma parte de la
pila es 0. En este sentido, basándonos en la estructura de almacenamiento
“Arreglo” para definir la estructura de datos pila, considerando su representación
conceptual y teórica en lenguaje C, la variable “Tope” utilizada para gestionar la
pila, tendría asignado los valores 0 y -1, respectivamente.

Contenido
Posición 1 2 3 4 5
8 Representación conceptual Pila de 5 elementos, “Vacía”, Tope=0

Contenido
Posición 0 1 2 3 4
9 Representación teórica en “Lenguaje C” Pila de 5 elementos, “Vacía”, utilizando arreglos, Tope=-1

A continuación, se presenta el algoritmo Pila_Vacía, según Cairo&Guardati, el cual verifica si


una estructura tipo PILA está vacía, implementada de forma estática en un arreglo
unidimensional, asignando a BAND el valor de verdad correspondiente. Los parámetros BAND
y TOPE, de tipo Booleano y Entero, respectivamente.

1. Si (TOPE=0) {Verifica si no hay elementos almacenados en la pila}


Entonces
Hacer BAND ← Verdadero {La Pila está Vacía}
Si no
Hacer BAND ← FALSO {La pila no está Vacía}
2. {Fin del condicional del paso 1}
10 Algoritmo Pila _Vacía, según Cairo&Guardati

2.2.2.Llena: Una pila está llena cuando la cantidad de elementos que forma parte de la
pila coincide con la cantidad definida en la estructura. En este sentido,
basándonos en la estructura de almacenamiento “Arreglo” para definir la
estructura de datos pila considerando su representación conceptual y teórica en
lenguaje C, la variable “Tope” utilizada para gestionar la pila, tendría asignado los
valores 5 y 4, respectivamente.

Contenido A B C D E
Posición 1 2 3 4 5
11 Representación conceptual Pila de 5 elementos, “Llena”, Tope=5

Contenido A B C D E
Posición 0 1 2 3 4
12 Representación conceptual “Lenguaje C” Pila de 5 elementos, “Llena”, utilizando arreglos, Tope=4

A continuación, se presenta el algoritmo Pila_Poner, según Cairo&Guardati, el cual verifica si


una estructura tipo PILA está Llena, implementada de forma estática en un arreglo
unidimensional de MAX elementos, asignando a BAND el valor de verdad correspondiente. Los
parámetros BAND y TOPE, de tipo Booleano y Entero, respectivamente.

1. Si(TOPE=MAX) {Verifica si la posición tope es igual a la máxima cantidad de elementos}


Entonces
Hacer BAND ← Verdadero {La Pila está Llena}
Si no
Hacer BAND ← FALSO {La pila no está Llena}
2. {Fin del condicional del paso 1}
13 Algoritmo Pila _Llena, según Cairo&Guardati

2.2.3.Poner: Es una operación que permite agregar elementos en una pila, siempre y
cuando exista espacio disponible “No esté llena”. Para tal fin cada vez que se
requiera insertar un elemento debe de verificar la disponibilidad de la pila,
haciendo un llamado a la operación “Llena” definida anteriormente.

A continuación, se presenta el algoritmo Pila_Llena, según Cairo&Guardati, el cual agrega


el elemento DATO en una estructura tipo pila –PILA-, si no está llena. El valor TOPE es
actualizado y MAX representa el número máximo de elementos que puede almacenar
PILA.

1. Llamar a Pila_Llena con PILA, TOPE, MAX y BAND


2. Si(BAND=VERDADERO) {Verifica si la pila está llena, el valor BAND es el resultado de
llamar a la función Pila_Llena}
Entonces
Escribir “Desbordamiento, Pila Llena”
Si no
Hacer TOPE ← TOPE + 1 Dato {El valor de la variable TOPE es actualizado}
PILA [TOPE] ← Dato {Se inserta el nuevo elemento en la posición que está en la
cima de la pila}
3. {Fin del condicional del paso 1}
14 Algoritmo Pila _Poner, según Cairo&Guardati

2.2.4.Quitar: Es una operación que permite extraer elementos de una pila, siempre y
cuando exista algún elemento “No esté vacía”. Para tal fin cada vez que se
requiera extraer un elemento debe de verificar la disponibilidad de la pila,
haciendo un llamado a la operación “Vacía” definida anteriormente.

A continuación, se presenta el algoritmo Pila_Quitar, según Cairo&Guardati, el cual extrae


el elemento DATO en una estructura tipo pila –PILA-, si no está vacía. El elemento extraído
es el que se encuentra en la posición indicada por TOPE, luego este valor es actualizado.

1. Llamar a Pila_Vacía con PILA, TOPE y BAND


2. Si(BAND=VERDADERO) {Verifica si la pila está vacía, el valor BAND es el resultado de
llamar a la función Pila_Vacía}
Entonces
Escribir “Subbordamiento, Pila Vacía”
Si no
Hacer DATO ← PILA[TOPE] {El valor de la pila que se encuentra en la posición
TOPE es almacenado en DATO}
TOPE ← TOPE - 1 {El valor de la variable TOPE es actualizado}
3. {Fin del condicional del paso 1}
15 Algoritmo Pila _Quitar, según Cairo&Guardati

3. Lógica de operaciones y definición de Algoritmos


4. Colas
5. Conceptos básicos
6. Lógica de operaciones y definición de Algoritmos
7. Listas
8. Conceptos básicos
9. Lógica de operaciones y definición de Algoritmos

También podría gustarte