ESTRUCTURA DE DATOS
INFORMACIÓN La información no es un dato conjunto cualquiera de ellos. Es más bien una colección de hechos significativos y pertinentes, para el organismo u organización que los percibe. La definición de información es la siguiente: Información es un conjunto de datos significativos y pertinentes que describan sucesos o entidades. DATOS SIGNIFICATIVOS. Para ser significativos, los datos deben constar de símbolos reconocibles, estar completos y expresar una idea no ambigua. Los símbolos de los datos son reconocibles cuando pueden ser correctamente interpretados. Muchos tipos diferentes de símbolos comprensibles se usan para transmitir datos. La integridad significa que todos los datos requeridos para responder a una pregunta específica están disponibles. Por ejemplo, un marcador de béisbol debe incluir el tanteo de ambos equipos. Si se oye el tanteo "New York 6" y no oyes el del oponente, el anuncio será incompleto y sin sentido. Los datos son inequívocos cuando el contexto es claro. Por ejemplo, el grupo de signos 2-x puede parecer "la cantidad 2 menos la cantidad desconocida llamada x" para un estudiante de álgebra, pero puede significar "2 barra x" a un vaquero que marca ganado. Tenemos que conocer el contexto de estos símbolos antes de poder conocer su significado. Otro ejemplo de la necesidad del contexto es el uso de términos especiales en diferentes campos especializados, tales como la contabilidad. Los contables utilizan muchos términos de forma diferente al público en general, y una parte de un aprendizaje de contabilidad es aprender el lenguaje de contabilidad. Así los términos Debe y Haber pueden significar para un contable no más que "derecha" e "izquierda" en una contabilidad en T, pero pueden sugerir muchos tipos de ideas diferentes a los no contables. DATOS PERTINENTES. Decimos que tenemos datos pertinentes (relevantes) cuando pueden ser utilizados para responder a preguntas propuestas. Disponemos de un considerable número de hechos en nuestro entorno. Solo los hechos relacionados con las necesidades de información son pertinentes. Así la organización selecciona hechos entre sucesos y entidades particulares para satisfacer sus necesidades de información.
DATO Un dato es el valor observado de un atributo en una unidad de observación. Ejemplos: "tu estatura" es un dato; "la comuna en que esto tu colegio" es un dato; "el grado del jefe del reton mos cercano a tu escuela" es un dato. Debemos notar que hay datos cuantitativos (estatura, por ejemplo) y datos cualitativos (comuna y grado, por ejemplo). Datos son los hechos que describen sucesos y entidades."Datos" es una palabra en plural que se refiere a más de un hecho. A un hecho simple se le denomina "data-ítem" o elemento
de dato. Los datos son comunicados por varios tipos de símbolos tales como las letras del alfabeto, números, movimientos de labios, puntos y rayas, señales con la mano, dibujos, etc. Estos símbolos se pueden ordenar y reordenar de forma utilizable y se les denomina información. Los datos son símbolos que describen condiciones, hechos, situaciones o valores. Los datos se caracterizan por no contener ninguna información. Un dato puede significar un número, una letra, un signo ortográfico o cualquier símbolo que represente una cantidad, una medida, una palabra o una descripción. La importancia de los datos está en su capacidad de asociarse dentro de un contexto para convertirse en información. Por si mismos los datos no tienen capacidad de comunicar un significado y por tanto no pueden afectar el comportamiento de quien los recibe. Para ser útiles, los datos deben convertirse en información para ofrecer un significado, conocimiento, ideas o conclusiones.
DIFERENCIA ENTRE DATOS E INFORMACIÓN 1. Los Datos a diferencia de la información son utilizados como diversos métodos para comprimir la información a fin de permitir una transmisión o almacenamiento más eficaces. 2. Aunque para el procesador de la computadora hace una distinción vital entre la información entre los programas y los datos, la memoria y muchas otras partes de la computadora no lo hace. Ambos son registradas temporalmente según la instrucción que se le de. Es como un pedazo de papel no sabe ni le importa lo que se le escriba: un poema de amor, las cuentas del banco o instrucciones para un amigo. Es lo mismo que la memoria de la computadora. Sólo el procesador reconoce la diferencia entre datos e información de cualquier programa. Para la memoria de la computadora, y también para los dispositivos de entrada y salida (E/S) y almacenamiento en disco, un programa es solamente más datos, más información que debe ser almacenada, movida o manipulada. 3. La cantidad de información de un mensaje puede ser entendida como el número de símbolos posibles que representan el mensaje."los símbolos que representan el mensaje no son más que datos significativos. 4. En su concepto más elemental, la información es un mensaje con un contenido determinado emitido por una persona hacia otra y, como tal, representa un papel primordial en el proceso de la comunicación, a la vez que posee una evidente función social. A diferencia de los datos, la información tiene significado para quien la recibe, por eso, los seres humanos siempre han tenido la necesidad de cambiar entre sí información que luego transforman en acciones. "La información es, entonces, conocimientos basados en los datos a los cuales, mediante un procesamiento, se les ha dado significado, propósito y utilidad" VARIABLE
Si observamos un mismo atributo a través de diversas unidades de observación, entonces estamos conformando una variable. Ejemplos: "La estatura de los alumnos de tu colegio" define una variable cuantitativa, "La comuna en que esto cada escuela de la región" define una variable cualitativa y "El grado de cada carabinero de esta provincia" es también una variable cualitativa. Si observamos varios atributos en una misma unidad de observación estamos formando una observación o punto multidimensional. Ejemplos: "Estatura, edad, nota de Matemática, nota de Historia" conforman la observación ALUMNO. "Comuna, número de alumnos, numero de profesores, tipo de establecimiento" conforman la observación ESCUELA. "Grado, edad, lugar de nacimiento" puede conformar la observación CARABINERO.
Información Si hacemos ambas cosas simultaneamente, entonces tenemos un conjunto de datos, que si esta bien estructurado, contendre informacion (util). Ejemplo: Una planilla que contenga los datos de estatura, edad, nota de Matematica y nota de Historia de los alumnos de esta escuela sera un conjunto (matriz o base) de datos util. Para algunas aplicaciones es importante distinguir entre variables discretas y variables continuas. Ejemplos de variable discreta son: comuna, grado, numero de hermanos; el conjunto de POSIBLES valores e cada una de ellas es finito (o infinito numerable). Ejemplos de variable continua son: estatura, tiempo de conexion a Internet, peso; entre dos valores de cualquiera de esas variables existen infinitos otros valores POSIBLES.
PROCESAMIENTO DE DATOS Hasta el momento hemos supuesto que los datos que maneja una aplicación no son tan voluminosos y por lo tanto caben en memoria. Cuando recurrimos a archivos se debe a la necesidad de conservar datos después de que termina un programa, por ejemplo para apagar el computador. Sin embargo, existen problemas en donde el volumen de datos es tan grande que es
imposible mantenerlos en memoria. Entonces, los datos se almacenan en un conjunto de archivos, los que forman una base de datos. Una base de datos es por lo tanto un conjunto de archivos que almacenan, por ejemplo, datos con respecto al negocio de una empresa. Cada archivo se forma en base a un conjunto de líneas y cada línea esta formada por campos de información. Todas las líneas de un mismo archivo tienen la misma estructura, es decir los mismos campos de información. Diferentes archivos poseen estructuras distintas, i.e. campos de información. Por ejemplo, el archivo de postulantes post.dat, visto en capítulos anteriores, tiene la siguiente información: • •
ci: carnet de identidad de la persona. nombre.
En lo que sigue supondremos que ambos archivos son lo suficientemente grandes como para que no quepan en la memoria del computador. A continuación resolveremos eficientemente el problema de generar un archivo con los tres campos de información, sin colocar previamente el contenido de un archivo en un arreglo. Algunas definiciones Recolección de datos: Provee un vínculo para obtener la información interoperacionables racional y las parametrizaciones. Almacenamiento de datos: Las unidades de disco de la computadora y otros medios de almacenamiento externo permiten almacenar los datos a más largo plazo, manteniéndolos disponibles pero separados del circuito principal hasta que el microprocesador los necesita. Una computadora dispone también de otros tipos de almacenamiento. La memoria de sólo lectura (ROM) es un medio permanente de almacenamiento de información básica, como las instrucciones de inicio y los procedimientos de entrada/salida. Asimismo, una computadora utiliza varios buffers (áreas reservadas de la memoria) como zonas de almacenamiento temporal de información específica, como por ejemplo los caracteres a enviar a la impresora o los caracteres leídos desde el teclado. Procesamiento de datos: a. El objetivo es graficar el Procesamiento de Datos, elaborando un Diagrama que permita identificar las Entradas, Archivos, Programas y Salidas de cada uno de los Procesos. b. Su antecedente es el Diagrama de Flujo. c. Los elementos claves son los Programas. d. Se confecciona el Diagrama de Procesamiento de Datos e. Este Diagrama no se podrá elaborar por completo desde un primer momento ya que depende del Flujo de Información. f. En este primer paso sólo se identifican las Salidas y Programas. Los elementos restantes se identifican en forma genérica.
Validación de datos: Consiste en asegurar la veracidad e integridad de los datos que ingresan a un archivo. Existen numerosas técnicas de validación tales como: Digito verificador, chequeo de tipo, chequeo de rango. PROCESAMIENTO DISTRIBUIDO Y CENTRALIZADO Procesamiento Centralizado: En la década de los años 50’s las computadoras eran máquinas del tamaño de todo un cuarto con las siguientes características: • Un CPU • Pequeña cantidad de RAM • Dispositivos DC almacenamiento secundario (cintas) • Dispositivos d salida (perforadoras de tarjetas) • Dispositivos de entrada (lectores de tarjeta perforada) Con el paso del tiempo, las computadoras fueron reduciendo su tamaño y creciendo en sofisticación, • Aunque la industria continuaba siendo dominada por las computadoras grandes "mainframes". A medida que la computación evolucionaba, las computadoras, fueron capaces de manejar aplicaciones múltiples simultáneamente, convirtiéndose en procesadores centrales "hosts" a los que se les Conectaban muchos periféricos y terminales tontas que consistían solamente de dispositivos de entrada/salida (monitor y teclado) y quizá poco espacio de almacenamiento, pero que no podían procesar por sí mismas. Las terminales locales se conectaban con el procesador central a través de interfaces seriales ordinarias de baja velocidad, mientras que las terminales remotas se enlazaban con • El "host" usando módems y líneas telefónicas conmutadas. En este ambiente, se ofrecían velocidades de transmisión de 1200, 2400, o 9600 bps. Un ambiente como el descrito es lo que se conoce como procesamiento centralizado en su forma más pura "host/terminal". Aplicaciones características de este tipo de ambiente son: • Administración de grandes tuses de datos integradas • Algoritmos científicos de alta velocidad • Control de inventarios centralizado Al continuar la evolución de los "mainframes", estos se comenzaron a conectar a enlaces de alta velocidad donde algunas tareas relacionadas con las comunicaciones se delegaban a otros dispositivos llamados procesadores comunicaciones "Front End Procesos" (I7EP’s) y controladores de grupo "Cluster Controllers" (CC’s). Procesamiento Distribuido: El procesamiento centralizado tenía varios inconvenientes, entre los que podemos mencionar que un número limitado de personas controlaba el acceso a la información y a los reportes, se requería un grupo muy caro de desarrolladores de sistemas para crear las aplicaciones, y los costos de mantenimiento y soporte eran extremadamente altos. La evolución natural de la computación fue en el sentido del procesamiento distribuido, así las
Mini computadoras (a pesar de su nombre siguen siendo máquinas potentes) empezaron a tomar parte del procesamiento que tenían los "mainframes". Ventajas Existen cuatro ventajas del procesamiento de bases de datos distribuidas. La primera, puede dar como resultado un mejor rendimiento que el que se obtiene por un procesamiento centralizado. Los datos pueden colocarse cerca del punto de su utilización, de forma que el tiempo de comunicación sea mas corto. Varias computadoras operando en forma simultánea pueden entregar más volumen de procesamiento que una sola computadora. Segundo, los datos duplicados aumentan su confiabilidad. Cuando falla una computadora, se pueden obtener los datos extraídos de otras computadoras. Los usuarios no dependen de la disponibilidad de una sola fuente para sus datos .Una tercera ventaja, es que los sistemas distribuidos pueden variar su tamaño de un modo más sencillo. Se pueden agregar computadoras adicionales a la red conforme aumentan el número de usuarios y su carga de procesamiento. A menudo es más fácil y más barato agregar una nueva computadora más pequeña que actualizar una computadora única y centralizada. Después, si la carga de trabajo se reduce, el tamaño de la red también puede reducirse. Por último, los sistemas distribuidos se pueden adecuar de una manera más sencilla a las estructuras de la organización de los usuarios. 6. Estructura de Datos utilizados en el proceso electrónico de datos Arreglos Son una agrupación de datos homogéneos, es decir, con un mismo tipo de dato básico asociado. Se almacenan en forma contigua en la memoria y son referenciados con un nombre común y una posición relativa. Ejemplos: Arreglo Lineal (1 dimensión ó vector) Vista gráfica [1] [2] [3] [4] [5] Definición de tipo Type Linea: Array [1..5] of TipoBasico; Var MiArreglo:Linea; Arreglo Bidimensional (matriz) Vista gráfica [1,1] [1,2]
Definición de tipo Type TipoTabla:Array[1..3,1..4] of TipoBasico; Var MiTabla: TipoTabla;
Pilas o colas Lifo: Imagina un montón de platos "apilados" o bien fichas de dominó formando una torre e intenta eliminar una desde el centro, ¿qué ocurre?, naturalmente naturalmente esta operación no está permitida si queremos mantener intactos a los platos o a la torre construida. Por esta razón, una pila se asocia a una estructura de datos LIFO (LAST IN FIRST OUT). UT). En base a lo anterior, construye la definición de una PILA y discútela con el profesor. En general, podemos definir para cada una de las estructuras de datos una representación estática y otra dinámica según el método de asignación de memoria utilizado. Clasificación a.)Pila estática: Sin duda tendremos que utilizar arreglos o registros que como ya sabemos son la base para estructuras de datos más complejas. Considerando la siguiente figura: Vista gráfica
Suponiendo que Dato pertenece a un mismo tipo de datos y Cuenta Dato corresponde a un entero que se incrementa a medida que un nuevo elemento se incorpora a la pila. Intenta construir la definición de tipo para la estructura Pila. TYPE ______________________________ ______________________________ ______________________________ _________________________ END; b.)Pila Dinámica: Sin duda tendremos que utilizar nodos con punteros. Considera la siguiente figura:
Suponiendo que los punteros que aparecen en la figura son capaces de apuntar a un nodo y que Dato pertenece a cualquiera de los tipos básicos o estructurados, la definición de tipo sería: TYPE Puntero=^NodoPila; NodoPila=Record
Info:AlgunTipo; sgte:Puntero; End; Var tope:Puntero; Un concepto por introducir es el de encapsulamiento, que significa que una vez definida la estructura e implementadas las operaciones básicas, uno se remite a utilizarlas sin importar su codificación interna, es decir, las llamadas a PUSH(pila, x) o POP(pila, y) empilarán a x o desempilarán en y sin importar cómo lo hagan. c.)Listas Enlazadas: Corresponde a una estructura lineal compuesta por una colección de datos homogéneos con alguna relación entre ellos. Dicha estructura se crea a través del método dinámico de memoria. En una lista enlazada el orden de los elementos está determinado por un campo enlace (puntero) explícito en cada elemento, por ejemplo: pilas y filas dinámicas. La representación de lista enlazada es la más óptima debido a que cualquier proceso de actualización (modificación inserción o eliminación) se realiza en base a reasignación de punteros. En este capítulo trataremos sólo con las listas enlazadas ya que las listas secuénciales ya son bien conocidas por ustedes. Tipos de Listas Enlazadas • • • •
Listas lineales simplemente enlazadas Listas Circulares Listas doblemente enlazadas Listas múltiplemente enlazadas
ARBOLES Es una estructura de datos no lineal que posee raíz, ramas y hojas, técnicamente constituye un grafo finito y sin ciclos. Un árbol define ciertos niveles jerárquicos precedidos por la raíz (1er. nivel), en donde las hojas constituyen el nivel más bajo. Componentes Raíz: Nodo que constituye la única entrada a la estructura (por ello es necesario tener un puntero sobre él). Ramas o Arcos: Conexión entre dos nodos del árbol que representa una relación de jerarquía. Hojas: Nodo sin hijos. Características Nivel o profundidad de un nodo: Longitud del camino para ir desde la raíz al nodo. Por definición la raíz está en el nivel 0. Por ejemplo: profundidad(Y)=2, profundidad(raíz)=0, profundidad(árbol)= profundidad(hoja más profunda). Altura de un nodo: Longitud del camino más largo desde el nodo a una hoja. Por ejemplo: Altura(X)=1, Altura(Y)=0, Altura(arbol)=Altura(raíz)=profundidad(árbol) Grado de nodo: Cantidad de hijos de un nodo cualquiera. Grado de árbol: Cantidad máxima de hijos posibles de asociar a un nodo del árbol
Clasificación a.)Según Número de Hijos: b.)Según Estructura de Niveles: Arbol completo: Es un árbol binario en el cual cada nodo es una hoja o posee exactamente 2 hijos. Arbol lleno: Es un árbol binario con hojas en a lo más dos niveles adyacentes l-1 y l, en las cuales los nodos terminales se encuentran ubicados en las posiciones de más a la izquierda del árbol. Si un árbol binario es completo, necesariamente es lleno c.)Según Funcionalidad: Árbol binario de búsqueda (ABB) Árbol binario de expresión Archivos: Es una es estructura de datos que reside en memoria secundaria o almacenamiento permanente (cinta magnética, disco magnético, disco óptico, disco láser, etc.). La forma de clasificación más básica se realiza de acuerdo al formato en que residen estos archivos, de esta forma hablamos de archivos ASCII (de texto) y archivos binarios. En este capítulo nos centraremos en estos últimos. Definición archivo binario: Estructura de datos permanente compuesto por registros (filas) y éstos a su vez por campos (columnas). Se caracteriza por tener un tipo de dato asociado, el cual define su estructura interna. Definición archivo texto: Estructura de datos permanente no estructurado formado por una secuencia de caracteres ASCII. Tipos de Acceso a los Archivos a.)Secuencial: Se accesan uno a uno los registros desde el primero hasta el último o hasta aquel que cumpla con cierta condición de búsqueda. Se permite sobre archivos de Organización secuencial y Secuencial Indexada. b.)Random: Se accesan en primera instancia la tabla de índices de manera de recuperar la dirección de inicio de bloque en donde se encuentra el registro buscado. (dentro del rea primaria o de overflow). Se permite para archivos con Organización Sec.Indexada. c.)Dinámico: Se accesan en primera instancia la tabla de índices de manera de recuperar la dirección de inicio de bloque en donde se encuentra el registro buscado. (dentro del rea primaria o de overflow). Se permite para archivos con Organización Sec.Indexada.
d.)Directo: Es aquel que utiliza la función de Hashing para recuperar los registros. Sólo se permite para archivos con Organización Relativa. Constantes Las constantes son similares a una variable pero tienen un valor determinado que se mantiene igual en toda la ejecución del programa. El contenido de una variable puede cambiar tantas veces sea necesario. ¿Porque usar una constante si no puede cambiar de valor?. Hacemos esto cuando deseamos usar un mismo número o una palabra (string) varias veces. Variables Magnitud que puede tomar diferentes valores y se representa con una letra o letras. La variable real es el conjunto de los números reales, y se puede representar por cualquier letra o conjunto de letras y nos sirve para poder utilizar dicha letra para calculos o para obtener resultados. EL TRATAMIENTO AUTOMÁTICO DE LA INFORMACIÓN La informática se ocupa como ciencia de tratar la información de forma automática mediante máquinas electrónicas. Este tratamiento recibe el nombre de procesamiento de datos y se puede dividir en tres etapas diferenciadas: - Fase de entrada En la primera fase de entrada, el usuario introduce los datos a través de unos dispositivos conectados al ordenador. Estos dispositivos se denominan periféricos de entrada y son, entre otros, el teclado y el ratón. - Fase de proceso Una vez que ha recibido los datos, el ordenador los almacena en la memoria y realiza las operaciones necesarias para obtener los resultados. - Fase de salida Por último, el ordenador muestra en la fase de salida los resultados y lo hace a través de dispositivos conectados a él. Estos dispositivos se llaman periféricos de salida y son, por ejemplo, el monitor y la impresora.
CLASIFICACIÓN GENERAL DE LOS DATOS. este tipo de datos son los descriptores de dispuso tipos o los `rock files` que crean algunos programas en ejecución. Son datos que varian sin necesitar de la intervención del administrador de sistemas (root), los documentos, como este, son ejemplos de este tipo de datos
Son datos que solo pueden variar bajo la intervención del administrador de sistemas, por ejemplo, las librerias, los programas instalados, etc. Datos compartibles
Como su nombre lo indica, los datos compartibles son aquellos cuya naturaleza los hace suceptibles de ser `compartidos` con más de un host, un ejemplo de este tipo de datos son los `home` de los usuarios.
En todo sistema existen datos que solo tienen relación con el `host` que los alberga, fuera de este, pierden toda utilidad (o por lo menos pierden su utilidad oficial :-), un ejemplo de este tipo de datos son los descriptores de dispositivos o los `lock files` que crean algunos programas en ejecución.
Son datos que varian sin necesitar de la intervencion del administrador de sistemas (root), los documentos, como este, son ejemplos de este tipo de datos
Son datos que solo pueden variar bajo la intervención del administrador de sistemas, por ejemplo, las librerias, los programas instalados, etc. El sistema de archivos raiz o root (/) En un sistema que cumpla con las especificaciones del FHS, los contenidos del sistema de archivos raiz, deben ser suficientes para arrancar, reparar y/o recuperar el sistema. o
o o
Para arrancar el sistema es necesario que se encuentren presentes en `/` las utilidades que permitan `montar` otros sistemas de archivos, archivos de configuración, información sobre el cargador de arran que (bootloader) y todo otro dato que sea `escencial` para el arranque de la ma quina en cuestión. /usr, /opt y /var estan diseñados de manera que puedan estar localizados fisicamente en otras particiones. Para reparar el sistema, las utilidades que un administrador experimentad o pudiese necesitar deben estar presentes en el `sistema de archivos raiz`. Para restaurar el sistema, deben estar presentes las utilidades que permitan leer desde respaldos en cinta, discos y/o otros medios y copiar al sistema dañado.
Se debe hacer notar que estas instrucciones generales deben ser compatibles con la imperativa necesidad de mantener `/` lo suficientemente pequenho, muchas veces el `sistema de archivos raiz` es cargado desde dispositivos con poca capacidad de almacenamiento, además gran parte de los datos en el ubicad os son relevantes solo para la máquina a la que pertencen, por ende, no sie mpre pueden ser cargados desde otros hosts en la red, se debe hacer notar que un sistema de archivos pequeño es menos vulnerable a la corrupcion de datos debida a errores en el medio físico u otros factores . Software de orientación general no debe nunca almacenar información en `/` ni requerir archivos o directorios (subdirectorios) especiales en el, para eso existen otras ubicaciones (discutidas mas adelante en este mismo documento).
Los siguientes directorios, pueden ser también links a otras ubicaciones en el sistema, pero DEBEN existir como tales en /: o o o o o o o o o o o
/bin /boot /dev /etc /lib /mnt /opt /sbin /tmp /usr /var /bin Binarios esenciales para el funcionamiento del sistema, un ejemplo de este tipo de binarios en un sistema GNU/Linux son los commandos necesarios para montar otros sistemas de archivos, mount, umount, etc. /bin contiene binarios que pueden ser usados tanto por el administrador del sistema como por otros usuarios, pero que deben estar disponibles cuando aun no se ha montado ningún otro sistema de archivos adicional. Tambien puede contener binarios que son usados indirectamente por scripts