Está en la página 1de 15

INSTITUTO POLITÉCNICO

NACIONAL
ESIME UNIDAD CULHUACAN

Unidad 1

Elaborado por:

GARFIAS
RAMIREZ
MAONRI

Grupo: 3CM45

Materia: Estructura de datos

Carrera: Ingeniería en Computación

Profesora: Jiménez Verónica Sara


Estructura de datos

1.1 Organización de los elementos.

“Una estructura de datos es una colección de datos que puedes ser


caracterizados por su organización y las operaciones que se definen en ella.”
“Las estructuras de daros son muy importantes en los sistemas de computadora.
Los tipos de datos más frecuentes utilizados en los diferentes lenguajes de
programación son: [Datos simples y Datos estructurados].”

Datos simples Estándar Entero (integer)


Real (real)
Carácter (char)
Lógico (boolean)
Definido por el Subrango (subrange)
programa Enumerativo
(no estándar) (enumerated)
Datos estructurados Estáticos Arrays
(vectores/matrices)
Registros (record)
Ficheros (archivos)
Conjuntos (set)
Cadenas (string)
Dinámicos Listas (pilas/colas)
Listas enlazadas
Árboles
Grafos

1.1.1 Descripción de la terminología, dato, estructura de dato, registro, grupo de


elementos, elemento simple, entidad, atributo, rango de valores, campo, clave
primaria o llave, arreglo, listas, colas, pilas, y árboles.

“Dato: El primer objeto de toda computadora es el manejo de información


o dato. Un dato es la expresión general que describe los objetos con los cuales
opera una computadora; la mayoría de las computadoras pueden trabajar con
varios tipos de (modos) de datos. Los algoritmos y los programas
correspondientes operan sobre esos tipos de datos.”
“Estructura de dato: Los registros (estructuras) y los arrays son tipos de
datos estructurados. La diferencia entre estos dos tipos de estructuras de datos
son los tipos de elementos que ellos contienen. Conjunto especifico de valores
de los datos y un conjunto de operaciones que actúan sobre ellos.”
“Registros: Una estructura que almacena diferentes tipos de datos bajo
una misma variable se denomina registro. Un registro se declara con la palabra
reservada estructura (struct, en ingles) o registro y se declara utilizando los
mismos pasos necesarios para utilizar cualquier variable.”
“Grupo de elementos: Un array o arreglo (matriz o vector) es un conjunto
finito y ordenado de elementos homogéneos. La propiedad “ordenado” significa
que el elemento primero, segundo, tercero, ..., enésimo de un array puede ser
identificado. Los elementos de un array son homogéneos, es decir, del mismo
tipo de datos. Un array puede estar compuesto de todos sus elementos de tipo
cadena, otro puede tener todos sus elementos de tipo entero, etc. Los arrays se
conocen también como matrices —en matemáticas— y tablas —en cálculos
financieros—.”
“Entidad: Un archivo o fichero es un conjunto de datos estructurados en
una colección de entidades elementales o básicas denominadas registros o
artículos, que son de igual tipo y constan a su vez de diferentes entidades de
nivel más bajo denominadas campos.”
“Atributo: Los atributos o características son las propiedades de los
objetos; por ejemplo, para las personas, la estatura, el color del cabello y de los
ojos, la edad, etc.; para un automóvil (coche o carro), la marca, la potencia, el
número de puertas, el precio, etc. Los atributos del mundo real son equivalentes
a los datos de un programa y tienen un valor determinado, 200 metros
cuadrados, 20.000 dólares, cinco puertas, etc.
Atributos = Datos”.
“Rango de valores: En esencia, un atributo es una propiedad o
característica de una clase y describe un rango de valores que la propiedad
podrá contener en los objetos de la clase. Una clase podrá contener ninguno o
varios atributos.”
Por ejemplo:

“Campo: Un campo es un item o elemento de datos elementales, tales


como un nombre, número de empleados, ciudad, número de identificación, etc.
Un campo está caracterizado por su tamaño o longitud y su tipo de datos
(cadena de caracteres, entero, lógico, etcétera.). Los campos pueden incluso
variar en longitud. En la mayoría de los lenguajes de programación los campos
de longitud variable no están soportados y se suponen de longitud fija. Un campo
es la unidad mínima de información de un registro.”
“Clave primaria (Llave): Una clave (key) o indicativo es un campo de datos
que identifica el registro y lo diferencia de otros registros. Esta clave debe ser
diferente para cada registro. Claves típicas son nombres o números de
identificación.”
“Arreglos: Un array o arreglo (matriz o vector) es un conjunto finito y ordenado de
elementos homogéneos. La propiedad “ordenado” significa que el elemento
primero, segundo, tercero, ..., enésimo de un array puede ser identificado. Los
elementos de un array son homogéneos, es decir, del mismo tipo de datos. Un
array puede estar compuesto de todos sus elementos de tipo cadena, otro puede
tener todos sus elementos de tipo entero, etc. Los arrays se conocen también
como matrices —en matemáticas— y tablas —en cálculos financieros—. El tipo
más simple de array es el array unidimensional o vector (matriz de una
dimensión). Un vector de una dimensión denominado NOTAS que consta de n
elementos se puede representar por la figura.”

“Listas: Una lista lineal es un conjunto de elementos de un tipo dado que


pueden variar en número y donde cada elemento tiene un único predecesor y un
único sucesor o siguiente, excepto el primero y último de la lista. Esta es una
definición muy general que incluye los ficheros y vectores. Los elementos de una
lista lineal se almacenan normalmente contiguos —un elemento detrás de otro—
en posiciones consecutivas de la memoria. Las sucesivas entradas en una guía
o directorio telefónico, por ejemplo, están en líneas sucesivas, excepto en las
partes superior e inferior de cada columna. Una lista lineal se almacena en la
memoria principal de una computadora en posiciones sucesivas de memoria;
cuando se almacenan en cinta magnética, los elementos sucesivos se presentan
en sucesión en la cinta. Esta asignación de memoria se denomina
almacenamiento secuencial. Posteriormente se verá que existe otro tipo de
almacenamiento denominado encadenado o enlazado. Las líneas así definidas
se denominan contiguas. Las operaciones que se pueden realizar con listas
lineales contiguas son:
1. Insertar, eliminar o localizar un elemento.
2. Determinar el tamaño —número de elementos— de la lista.
3. Recorrer la lista para localizar un determinado elemento.
4. Clasificar los elementos de la lista en orden ascendente o descendente.
5. Unir dos o más listas en una sola.
6. Dividir una lista en varias sublistas.
7. Copiar la lista.
8. Borrar la lista. Una lista lineal contigua se almacena en la memoria de la
computadora en posiciones sucesivas o adyacentes y se procesa como un array
unidimensional.
En este caso, el acceso a cualquier elemento de la lista y la adición de nuevos
elementos es fácil; sin embargo, la inserción o borrado requiere un
desplazamiento de lugar de los elementos que le siguen y, en consecuencia, el
diseño de un algoritmo específico. Para permitir operaciones con listas como
arrays se deben dimensionar éstos con tamaño suficiente para que contengan
todos los posibles elementos de la lista.”
“Colas: Las colas son otro tipo de estructura lineal de datos similar a las
pilas, diferenciándose de ellas en el modo de insertar/eliminar elementos. Una
cola (queue) es una estructura lineal de datos var array [1..n] de : C en la que las
eliminaciones se realizan al principio de la lista, frente (front), y las inserciones se
realizan en el otro extremo, final (rear). En las colas el elemento que entró el
primero sale también el primero; por ello se conoce com o listas FIFO (first-in,
first-out, “primero en entrar, primero en salir”). Así, pues, la diferencia con las
pilas reside en el modo de entrada/salida de datos; en las colas las inserciones
se realizan al final de la lista, no al principio. Por ello las colas se usan para
almacenar datos que necesitan ser procesados según el orden de llegada.

En la vida real se tienen ejemplos numerosos de colas: la cola de un autobús, la


cola de un cine, una caravana de coches en una calle, etc. En todas ellas el
primer elemento (pasajero, coche, etc.) que llega es el primero que sale. En
informática existen también numerosas aplicaciones de las colas. Por ejemplo,
en un sistema de tiempo compartido suele haber un procesador central y una
serie de periféricos compartidos: discos, impresoras, etc. Los recursos se
comparten por los diferentes usuarios y se utiliza una cola para almacenar los
programas o peticiones de los diferentes usuarios que esperan su turno de
ejecución. El procesador central atiende —normalmente— por riguroso orden de
llamada del usuario; por tanto, todas las llamadas se almacenan en una cola.
Existe otra aplicación muy utilizada que se denomina cola de prioridades; en ella
el procesador central no atiende por riguroso orden de llamada, aquí el
procesador atiende por prioridades asignadas por el sistema o bien por el
usuario, y sólo dentro de las peticiones de igual prioridad se producirá una cola.”
“Pilas: Una pila (stack) es un tipo especial de lista lineal en la que la
inserción y borrado de nuevos elementos se realiza sólo por un extremo que se
denomina cima o tope (top). La pila es una estructura con numerosas analogías
en la vida real: una pila de platos, una pila de monedas, una pila de cajas de
zapatos, una pila de camisas, una pila de bandejas, etc.

Dado que las operaciones de insertar y eliminar se realizan por un solo extremo
(el superior), los elementos sólo pueden eliminarse en orden inverso al que se
insertan en la pila. El último elemento que se pone en la pila es el primero que se
puede sacar; por ello, a estas estructuras se les conoce por el nombre de LIFO
(last-in, first-out, último en entrar, primero en salir).
Las operaciones más usuales asociadas a las pilas son:
"push" Meter, poner o apilar: operación de insertar un elemento en la pila.
"pop" Sacar, quitar o desapilar: operación de eliminar un elemento de la pila.”
“Arboles: El árbol es una estructura de datos fundamental en informática, muy
utilizada en todos sus campos, porque se adapta a la representación natural de
informaciones homogéneas organizadas y de una gran comodidad y rapidez de
manipulación. Esta estructura se encuentra en todos los dominios (campos) de la
informática, desde la pura algorítmica (métodos de clasificación y búsqueda...) a
la compilación (árboles sintácticos para representar las expresiones o
producciones posibles de un lenguaje) o incluso los dominios de la inteligencia
artificial (árboles de juegos, árboles de decisiones, de resolución, etc.).
Las estructuras tipo árbol se usan principalmente para representar datos con una
relación jerárquica entre sus elementos, como son árboles genealógicos, tablas,
etc.
Un árbol A es un conjunto finito de uno o más nodos, tales que:
1. Existe un nodo especial denominado RAIZ(v1) del árbol.
2. Los nodos restantes (v2, v3, ..., vn) se dividen en m >= 0 conjuntos disjuntos
denominado A1, A2, ..., Am, cada uno de los cuales es, a su vez, un árbol. Estos
árboles se llaman subárboles del RAIZ.
La definición de árbol implica una estructura recursiva. Esto es, la definición del
árbol se refiere a otros árboles. Un árbol con ningún nodo es un árbol nulo; no
tiene raíz.
La Figura 13.1 muestra un árbol en el que se ha rotulado cada nodo con una
letra dentro de un círculo. Esta es una notación típica para dibujar árboles.
Los tres subárboles de la raíz A son B, C y D, respectivamente. B es la raíz de
un árbol con un subárbol E. Este subárbol no tiene subárbol conectado. El árbol
C tiene dos subárboles, F y G.”

1.2 Operaciones con estructuras de datos elementales.

“Las operaciones que se pueden realizar con vectores durante el proceso de


resolución de un problema son:
• asignación
• lectura/escritura
• recorrido (acceso secuencial)
• actualizar (añadir, borrar, insertar)
• ordenación
• búsqueda.
En general, las operaciones con vectores implican el procesamiento o tratamiento
de los elementos individuales del vector.”

1.2.1 Descripción de las operaciones, en estructura de datos, de recorrido, búsqueda,


inserción y eliminación.
“Recorrido: Se puede acceder a los elementos de un vector para introducir
datos (escribir) en él o bien para visualizar su contenido (leer). A la operación de
efectuar una acción general sobre todos los elementos de un vector se la
denomina recorrido del vector. Estas operaciones se realizan utilizando
estructuras repetitivas, cuyas variables de control (por ejemplo, I) se utilizan
como subíndices del vector (por ejemplo, S[I]). El incremento del contador del
bucle producirá el tratamiento sucesivo de los elementos del vector.”

1.2.2 Descripción de las operaciones, en estructuras de datos, ordenación y mezcla.


“Las definiciones de clases incluyen una descripción de operaciones
permisibles para cada clase, tales como desplazamiento de un círculo o rotación
de una línea. A continuación se prosigue el diseño de un programa utilizando
objetos de las clases.”
“Ordenación: En un vector es necesario, con frecuencia, clasificar u
ordenar sus elementos en un orden particular. Por ejemplo, clasificar un conjunto
de números en orden creciente o una lista de nombres por orden alfabético. La
clasificación es una operación tan frecuente en programas de computadora que
una gran cantidad de algoritmos se han diseñado para clasificar listas de
elementos con eficacia y rapidez. La elección de un determinado algoritmo
depende del tamaño del vector o array (arreglo) a clasificar, el tipo de datos y la
cantidad de memoria disponible. La ordenación o clasificación es el proceso de
organizar datos en algún orden o secuencia específica, tal como creciente o
decreciente para datos numéricos o alfabéticamente para datos de caracteres.
Los métodos de ordenación se dividen en dos categorías:
• Ordenación de vectores, tablas (arrays o arreglos).
• Ordenación de archivos. La ordenación de arrays se denomina también
ordenación interna, ya que se almacena en la memoria interna de la
computadora de gran velocidad y acceso aleatorio.
La ordenación de archivos se suele hacer casi siempre sobre soportes de
almacenamiento externo, discos, cintas, etc., y, por ello, se denomina también
ordenación externa. Estos dispositivos son más lentos en las operaciones de
entrada/salida, pero, por el contrario, pueden contener mayor cantidad de
información.
Ordenación interna: clasificación de los valores de un vector según un orden en
memoria central: rápida.
Ordenación externa: clasificación de los registros de un archivo situado en un
soporte externo: menos rápido.”
“Mezcla: La fusión o mezcla de archivos (merge) consiste en reunir en un
archivo los registros de dos o más archivos ordenados por un campo clave T. El
archivo resultante será un archivo ordenado por el campo clave T. Supongamos
que se dispone de dos archivos ordenados sobre dos cintas magnéticas y que se
desean mezclar o fundir en un solo archivo ordenado. Sean los archivos F1 y F2
almacenados en dos cintas diferentes. El archivo F3 se construye en una tercera
cinta.”

1.3 Notación matemática.

“La Tabla 1.7 representa notaciones equivalentes de los cuatro sistemas de


numeración comentados anteriormente.”

1.3.1 Funciones matemáticas: entera inferior y superior, modulo, valor, permutaciones,


exponenciales y algoritmos.

“Matemáticamente una función es una operación que toma uno o más


valores llamados argumentos y produce un valor denominado resultado —valor
de la función para los argumentos dados—. Todos los lenguajes de
programación tienen funciones incorporadas, intrínsecas o internas, y funciones
definidas por el usuario.”
“Modulo: Los métodos más eficaces para el proceso de diseño se basan
en el conocido divide y vencerás. Es decir, la resolución de un problema
complejo se realiza dividiendo el problema en subproblemas y a continuación
dividiendo estos subproblemas en otros de nivel más bajo, hasta que pueda ser
implementada una solución en la computadora. Este método se conoce
técnicamente como diseño descendente (top-down) o modular. El proceso de
romper el problema en cada etapa y expresar cada paso en forma más detallada
se denomina refinamiento sucesivo.
Cada subprograma es resuelto mediante un módulo (subprograma) que tiene un
solo punto de entrada y un solo punto de salida.
Cualquier programa bien diseñado consta de un programa principal (el módulo
de nivel más alto) que llama a subprogramas (módulos de nivel más bajo) que a
su vez pueden llamar a otros subprogramas. Los programas estructurados de
esta forma se dice que tienen un diseño modular y el método de romper el
programa en módulos más pequeños se llama programación modular. Los
módulos pueden ser planeados, codificados, comprobados y depurados
independientemente (incluso por diferentes programadores) y a continuación
combinarlos entre sí. El proceso implica la ejecución de los siguientes pasos
hasta que el programa se termina:
1. Programar un módulo.
2. Comprobar el módulo.
3. Si es necesario, depurar el módulo.
4. Combinar el módulo con los módulos anteriores.”
“Valor: El paso por valor se utiliza en muchos lenguajes de programación;
por ejemplo, C, Modula-2, Pascal, Algol y Snobol. La razón de su popularidad es
la analogía con los argumentos de una función, donde los valores se
proporcionan en el orden de cálculo de resultados. Los parámetros se tratan
como variables locales y los valores iniciales se proporcionan copiando los
valores de los correspondientes argumentos. Los parámetros formales —locales
a la función— reciben como valores iniciales los valores de los parámetros
actuales y con ello se ejecutan las acciones descritas en el subprograma.”

1.3.2 Notación algorítmica, Diagrama de flujo y pseudocódigo.

“Notación algorítmica: La notación algorítmica se simplifica con el


formato:”
“para indicar la asignación de un mismo valor a cada elemento de un
vector A. Esta notación se considerará con mucho cuidado para evitar confusión
con posibles variables simples numéricas de igual nombre (A).”
“Diagrama de flujo: Un diagrama de flujo (flowchart) es una representación
gráfica de un algoritmo. Los símbolos utilizados han sido normalizados por el
Instituto Norteamericano de Normalización (ANSI)”
“Pseudocódigo: El pseudocódigo es una herramienta de programación en la que
las instrucciones se escriben en palabras similares al inglés o español, que
facilitan tanto la escritura como la lectura de programas. En esencia, el
pseudocódigo se puede definir como un lenguaje de especificaciones de
algoritmos.”

1.3.3 Estructuras de control y Recursividad.

“En un programa estructurado el flujo lógico se gobierna por las


estructuras de control básicas:
1. Secuenciales.
2. Repetitivas.
3. Selectivas.
…El estudio de las estructuras de control se realiza basado en las herramientas
de programación ya estudiadas: diagramas de flujo, diagramas N-S y
pseudocódigos.”
“Recursividad: La recursión (recursividad) es una herramienta muy potente en
algunas aplicaciones, sobre todo de cálculo. La recursión puede ser utilizada
como una alternativa a la repetición o estructura repetitiva. El uso de la recursión
es particularmente idóneo para la solución de aquellos problemas que pueden
definirse de modo natural en términos recursivos.
La escritura de un procedimiento o función recursiva es similar a sus homónimos
no recursivos; sin embargo, para evitar que la recursión continúe indefinidamente
es preciso incluir una condición de terminación.
La razón de que existan lenguajes que admiten la recursividad se debe a la
existencia de estructuras específicas tipo pilas (stack, en inglés) para este tipo de
procesos y memorias dinámicas.”

1.3.4 Implementación de factorial en forma iterativa y recursiva.

“Las listas enlazadas deberán implementarse de forma dinámica, pero si el


lenguaje no lo permite, lo realizaremos a través de arrays (o arreglos), con lo
cual impondremos limitaciones en cuanto al número de elementos que podrá
contener la lista y estableceremos una ocupación en memoria constante. Los
nodos podrán almacenarse en arrays paralelos o arrays de registros. Cuando se
empleen arrays de registros, el valor (dato o información) del nodo se
almacenará en un campo y el enlace con el siguiente elemento se almacenará
en otro. Otra posible implementación, como ya se ha dicho antes, es con dos
arrays: uno para los datos y otro para el enlace.”

1.4 Arreglos unidimensionales.

“Un array o arreglo (matriz o vector) es un conjunto finito y ordenado de


elementos homogéneos. La propiedad [ordenado] significa que el elemento primerio,
segundo, tercero, …, enésimo de un array puede ser indefinido. Los elementos de
un array son homogéneos, es decir, del mismo tipo de datos. Un array puede estar
compuesto de todos sus elementos de tipo cadena, otro puede tener todos sus
elementos de tipo entero, etc. Los array se conocen también como matrices -en
matemáticas- y las tablas -en cálculos financieros.”

1.4.1 Acceso a las diferentes localidades de un arreglo de caracteres


unidimensionales.

“Se puede acceder a los elementos de un vector para introducir datos


(escribir) en él o bien para visualizar su contenido (leer). A la operación de
efectuar una acción general sobre todos los elementos de un vector se la
denomina recorrido del vector. Estas operaciones se realizan utilizando
estructuras repetitivas, cuyas variables de control (por ejemplo, I) se utilizan
como subíndices del vector (por ejemplo, S[I]). El incremento del contador del
bucle producirá el tratamiento sucesivo de los elementos del vector.”

1.5 Arreglos bidimensionales.

“El array bidimensional se puede considerar como un vector de vectores. Es, por
consiguiente, un conjunto de elementos, todos del mismo tipo, en el cual el orden de
los componentes es significativo y en el que se necesita especificar dos subíndices
para poder identificar cada elemento del array.
Si se visualiza un array unidimensional, se puede considerar como una columna de
datos; un array bidimensional es un grupo de columnas”

1.5.1 Arreglos bidimensionales, matrices.

“El diagrama representa una tabla o matriz de treinta elementos (5 × 6)


con 5 filas y 6 columnas. Como en un vector de treinta elementos, cada uno de
ellos tiene el mismo nombre. Sin embargo, un subíndice no es suficiente para
especificar un elemento de un array bidimensional; por ejemplo, si el nombre del
array es M, no se puede indicar M[3], ya que no sabemos si es el tercer elemento
de la primera fila o de la primera columna. Para evitar la ambigüedad, los
elementos de un array bidimensional se referencian con dos subíndices: el
primer subíndice se refiere a la fila y el segundo subíndice se refiere a la
columna. Por consiguiente, M[2, 3] se refiere al elemento de la segunda fila,
tercera columna. En nuestra tabla ejemplo M[2, 3] contiene el valor 18.”

“Un array bidimensional M, también denominado matriz (términos


matemáticos) o tabla (términos financieros), se considera que tiene dos
dimensiones (una dimensión por cada subíndice) y necesita un valor para cada
subíndice para poder identificar un elemento individual. En notación estándar,
normalmente el primer subíndice se refiere a la fila del array, mientras que el
segundo subíndice se refiere a la columna del array.”

1.6 Registros.

“Los registros (estructuras) y los arrays son tipos de datos estructurados. La


diferencia entre estos dos tipos de estructuras de datos son los tipos de elementos
que ellos contienen. Un array es una estructura de datos homogénea, que significa
que cada uno de sus componentes deben ser del mismo tipo. Un registro es una
estructura de datos heterogénea, que significa que cada uno de sus componentes
pueden ser de tipos de datos diferentes. Por consiguiente, un array de registros es
una estructura de datos cuyos elementos son de los mismos tipos heterogéneos.”
Bibliografía
Joyanes Aguilar L. , (2020) , Fundamentos de programación (Algoritmos, estructuras de datos y

objetos) , Quinta edición , Ciudad de México, México , Mc graw Hill.

Joyanes Aguilar L. , (2008) , Fundamentos de programación (Algoritmos, estructuras de datos y

objetos) , Cuarta edición , Ciudad de México, México , Mc graw Hill.

También podría gustarte