ESTRUCTURAS DE DATOS FUNDAMENTALES

19,113 views
18,811 views

Published on

ESTRUCTURAS DE DATOS FUNDAMENTALES

0 Comments
12 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
19,113
On SlideShare
0
From Embeds
0
Number of Embeds
464
Actions
Shares
0
Downloads
1
Comments
0
Likes
12
Embeds 0
No embeds

No notes for slide

ESTRUCTURAS DE DATOS FUNDAMENTALES

  1. 1. ESTRUCTURAS DE DATOS FUNDAMENTALES UNIVERSIDAD AUTONOMA GABRIEL RENE MORENO FACULTAD DE CIENCIAS EXACTAS Y TECNOLOGIA <ul><li>PROFESOR: </li></ul><ul><li>Ing. Evans Balcazar Veizaga </li></ul>
  2. 2. Objetivos <ul><li>• Tipos de datos simples </li></ul><ul><ul><li>int, byte, short, long, double, float, char, boolean </li></ul></ul><ul><li>• Estructuras de datos fundamentales o básicas: </li></ul><ul><ul><li>Arrays (arreglos) </li></ul></ul><ul><ul><li>Conjuntos </li></ul></ul><ul><ul><li>Ficheros (secuencias) </li></ul></ul><ul><li>• Estructuras de datos avanzadas </li></ul><ul><ul><li>Pilas </li></ul></ul><ul><ul><li>Colas </li></ul></ul><ul><ul><li>Listas </li></ul></ul>
  3. 3. Contenido : <ul><li>2.1 LA ESTRUCTURA ARRAY (ARREGLO) </li></ul><ul><ul><li>2.1.1 Arrays unidimensionales </li></ul></ul><ul><ul><li>2.1.2 Arrays multidimensionales: matrices </li></ul></ul><ul><li>2.2 LA ESTRUCTURA CONJUNTO </li></ul><ul><li>2.3 LA ESTRUCTURA FICHERO (SECUENCIA) </li></ul><ul><li>2.3.1 Texto </li></ul><ul><li>2.3.2 Tipeados </li></ul><ul><li>2.3.4 Binarios </li></ul>
  4. 4. Arreglos Unidimensionales : <ul><li>NIVEL LÓGICO </li></ul><ul><li>· Un array o arreglo es una colección finita y de tamaño fijo de elementos homogéneos y ordenados. </li></ul><ul><li>· El array es una estructura de acceso directo o aleatorio. Se accede directamente a un elemento del array a través del índice de selección. </li></ul>
  5. 5. Arreglos Unidimensionales : <ul><li>NIVEL LÓGICO </li></ul><ul><li>· Operaciones básicas: </li></ul><ul><li>* Constructor: </li></ul><ul><li>construir(dimension) </li></ul><ul><li>* Selector: </li></ul><ul><li>accederElemento ( indiceSelección) </li></ul><ul><li>El ponedor y selector pueden usarse para: </li></ul><ul><li>extraer un valor del array </li></ul><ul><li>modificar el valor de una celda del array </li></ul><ul><li>· Operaciones complejas: dependen del TipoBase </li></ul>
  6. 6. Almacenamiento en Memoria : - El array se almacena es posiciones consecutivas de memoria. A la variable referencia se le asocia la dirección del primer elemento del array, denominada dirección base. - Cantidad de espacio que se requiere para almacenar el array: tamañoFisicoArray = numElementos x p p = número de bytes necesarios para almacenar un elemento de tipo TipoBase - Se puede calcular la dirección física del elemento i-ésimo: direccion (nombreArray[indiceSeleccion]) = direccionBase (nombreArray) + (p ´ indiceSeleccion)
  7. 7. Arreglos Bidimensionales : NIVEL LÓGICO · Un array bimensional es un array cuyos elementos son arrays. · Es idéntico al array unidimensional sólo que se necesitarán dos índices que tenga el array. · Operaciones básicas: - Constructor: construirArray (fils, cols) - Selector: accederElemento (indiceSelección1, indiceSelección2)
  8. 8. Arreglos Multidimensionales : NIVEL LÓGICO · Un array multimensional es un array cuyos elementos son arrays. · Es idéntico al array unidimensional sólo que se necesitarán tantos índices como dimensiones tenga el array. Operaciones básicas: - Constructor: construirArray (rangoIndice1, rangoIndice2, ..., rangoIndiceN) - Selector: accederElemento (indiceSelección1, ..., indiceSelecciónN)
  9. 9. Almacenamiento en Memoria : <ul><li>A. La matriz se sigue almacenando es posiciones consecutivas de memoria </li></ul><ul><li>Opciones: </li></ul><ul><ul><li>1. Almacenar por filas </li></ul></ul><ul><ul><li>2. Almacenar por columnas </li></ul></ul><ul><li>- Cantidad de espacio que se requiere para almacenar una matriz: </li></ul><ul><li>tamañoFisicoMatriz = numFilas x numColumnas x p </li></ul><ul><li>- Dirección física del elemento i , j : </li></ul>
  10. 10. Almacenamiento en Memoria : B. Se almacenan en bloques consecutivos de memoria las direcciones de las filas de la matriz, que a su vez se almacenan como arrays - Cantidad de espacio que se requiere para almacenar una matriz: tamañoFisicoMatriz = numFilas ´ (p’ + numColumnas ´ p) p’ : número de bytes que ocupa una referencia a memoria
  11. 11. Conjunto : NIVEL LÓGICO · Un conjunto matemático C es una colección no ordenada de miembros o elementos de un determinado tipo (T0). · Conjunto potencia (2 C ): conjunto de todos los subconjuntos de T0 · Dado un tipo de conjunto definido sobre un tipo base T0, una variable de ese tipo podrá ser cualquier subconjunto del conjunto potencia de T0
  12. 12. Conjunto : <ul><li>NIVEL LÓGICO </li></ul><ul><li>· Operaciones básicas: </li></ul><ul><li>- Constructor : </li></ul><ul><li>construirConjunto () </li></ul><ul><li>Selector: </li></ul><ul><li>no tiene sentido acceder a un elemento del conjunto, sino sólo decir si pertenece o no al mismo </li></ul><ul><li>· Operaciones complejas: </li></ul><ul><li>pertenencia, unión, intersección, diferencia, complemento, inclusión, igualdad </li></ul>
  13. 13. Practica 3 : <ul><li>Realizar la Implementación de la Clase Conjunto, que almacena el TipoBase Char. </li></ul><ul><ul><ul><li>Data </li></ul></ul></ul><ul><ul><ul><ul><li>ele:Array[1..MAX_C] of TipoBase; </li></ul></ul></ul></ul><ul><ul><ul><ul><li>dim:integer </li></ul></ul></ul></ul><ul><ul><ul><li>Operations </li></ul></ul></ul><ul><ul><ul><ul><li>setElement, getElement, cantidad, pertenece </li></ul></ul></ul></ul>
  14. 14. Practica 3 : <ul><li>Realizar la Implementación de la Clase Cadena, que administra los caracteres en un vector. </li></ul><ul><ul><ul><li>Data </li></ul></ul></ul><ul><ul><ul><ul><li>cad: Array[1..MAX_CxMAX_C] of TipoBase; </li></ul></ul></ul></ul><ul><ul><ul><ul><li>dim: integer; </li></ul></ul></ul></ul><ul><ul><ul><ul><li>may, min, sep: Conjunto </li></ul></ul></ul></ul><ul><ul><ul><li>Operations </li></ul></ul></ul><ul><ul><ul><li>addChar, insChar, elimChar, interChar, cantChar, getChar, busqChar, invert, toMay, toMin, toTitle, cantPal, insPal, elimPal, cambPal, buscPal, addPal, rotar </li></ul></ul></ul>
  15. 15. Ficheros : NIVEL LÓGICO · El fichero es una secuencia almacenada en memoria secundaria . · Los arrays y conjuntos tiene cardinalidad finita, siempre que los tipos sobre los que se definen sean de cardinalidad finita, pero los ficheros son de cardinalidad infinita · En tiempo de compilación no se puede determinar el tamaño del fichero, ya que éste puede crecer/decrecer. · La secuencia es una estructura de cardinalidad infinita .
  16. 16. Ficheros : NIVEL DE IMPLEMENTACIÓN · Tipos de ficheros Ficheros de texto Ficheros de acceso aleatorio (clase RandomAccessFile) Ficheros con tipo (interfaz Serializable)
  17. 17. Ficheros : <ul><li>NIVEL DE IMPLEMENTACIÓN </li></ul><ul><li>· Operaciones básicas: El acceso a un elemento del fichero dependerá de si éste es de acceso secuencial o directo </li></ul><ul><ul><li>- Constructor </li></ul></ul><ul><ul><li>construirFichero () </li></ul></ul><ul><ul><li> insertarElemento ( elemento) insertarElemento ( elemento, posición) </li></ul></ul><ul><ul><li>- Selector: </li></ul></ul><ul><ul><li>seleccionarElemento (nombreFichero) </li></ul></ul><ul><ul><li>seleccionarElemento (nombreFichero, posición) </li></ul></ul><ul><li>· Operaciones complejas: recorrido del fichero, determinación del tamaño del fichero, concatenación de ficheros, búsqueda de un elemento. </li></ul>
  18. 18. Ficheros : <ul><li>NIVEL DE APLICACIÓN </li></ul><ul><li>· Los ficheros se utilizan siempre que es necesario mantener información en memoria secundaria. </li></ul><ul><li>· La elección de un tipo de fichero u otro depende de la especificación del problema : </li></ul><ul><ul><li>El fichero de texto sólo permite acceso secuencial y la unidad constitutiva es el carácter. </li></ul></ul><ul><ul><li>El fichero de acceso aleatorio puede accederse secuencial o aleatoriamente, y está compuesto de bytes. </li></ul></ul><ul><ul><li>El fichero con tipo permite trabajar con objetos y acceder secuencialmente. </li></ul></ul>
  19. 19. Ficheros Textos : <ul><li>ARCHIVOS TEXTOS: </li></ul><ul><li>· Están constituidos por líneas de longitud variables separadas unas de otras por los códigos de retorno y avance de línea </li></ul><ul><li>Operaciones: </li></ul><ul><li>Declaración : </li></ul><ul><ul><li>Var f:text; </li></ul></ul><ul><ul><li>Asignación : </li></ul></ul><ul><ul><li>Assign(f,”nombre_archivo.txt”) </li></ul></ul><ul><ul><li>Apertura : </li></ul></ul><ul><ul><li>Reset(f); </li></ul></ul><ul><ul><li>Rewrite(f) </li></ul></ul>
  20. 20. Ficheros Textos : <ul><li>ARCHIVOS TEXTOS: </li></ul><ul><li>Operaciones: </li></ul><ul><ul><li>Lectura/Escrituras: </li></ul></ul><ul><ul><li>Readln(f, c) </li></ul></ul><ul><ul><li>Writeln(f,c) </li></ul></ul><ul><li>Fin de Línea: </li></ul><ul><ul><ul><li>Eof(f) </li></ul></ul></ul><ul><ul><li>Cerrar Archivo: </li></ul></ul><ul><ul><li>Close(f) </li></ul></ul><ul><ul><li>Añadir Texto: </li></ul></ul><ul><ul><li>Append(f) </li></ul></ul>
  21. 21. Practica 4 : <ul><li>Realizar un programa que me permita Crear un Archivo Texto indicandole con un cadena el nombre y dos filas que contendra. </li></ul><ul><li>Realizar un programa que me permita leer el archivo creado en el ejercicio anterior y me imprima en pantalla. </li></ul>
  22. 22. Ficheros Con Tipo : Archivos con tipo (de acceso directo), contienen una serie de datos accesibles individualmente. · Estos tipos de datos pueden ser simples (enteros, carácter, etc) o estructurados (registros, cadenas, etc) pero no enumerados ni subrango. · Los archivos con tipos están organizados en registros con estructuras fijas. La longitud de un registro corresponde al número de bytes requeridos para almacenar el tipo de datos. · Cuando un archivo se abre, su puntero indica el registro de rango cero, es decir el primer registro. Después de cada operación de lectura o escritura, el puntero de archivo se incrementa en el número de registros leídos o escritos.
  23. 23. Ficheros Con Tipos : <ul><li>Declaración: </li></ul><ul><ul><li>TYPE </li></ul></ul><ul><ul><li>Cliente = RECORD </li></ul></ul><ul><ul><li>Codigo : String[10]; </li></ul></ul><ul><ul><li>Nombre : String[40]; </li></ul></ul><ul><ul><li>Direccion : String[30]; </li></ul></ul><ul><ul><li>Saldo : Real </li></ul></ul><ul><ul><li>END; </li></ul></ul><ul><ul><li>VAR </li></ul></ul><ul><ul><li>f_clie: FILE OF Cliente; </li></ul></ul><ul><ul><li>r_clie: Cliente; </li></ul></ul>
  24. 24. Ficheros Con Tipos : <ul><li>Operaciones con archivos de acceso directo: </li></ul><ul><ul><li>– declaración de un archivo </li></ul></ul><ul><ul><li>– asignación de archivo </li></ul></ul><ul><ul><li>– apertura de un archivo </li></ul></ul><ul><ul><li>– registro actual y tamaño de un archivo </li></ul></ul><ul><ul><ul><li>FileSize, FilePos </li></ul></ul></ul><ul><ul><li>– posicionamiento en el interior de un archivo </li></ul></ul><ul><ul><ul><li>Seek </li></ul></ul></ul><ul><ul><li>– lectura y escritura de archivos </li></ul></ul><ul><ul><ul><li>Read, Write </li></ul></ul></ul><ul><ul><li>– fin de archivo </li></ul></ul><ul><ul><li>– cierre de un archivo </li></ul></ul>
  25. 25. Practica 5 : <ul><li>Realizar un programa que me permita guardar un registro de persona y luego recuperarlo. </li></ul>
  26. 26. GRACIAS Estructura de Datos

×