Está en la página 1de 26

Repblica Bolivariana de Venezuela Ministerio del Poder Popular para la Defensa Universidad Nacional Experimental de la Fuerza Armada Nacional

Bolivariana Ncleo: Anzotegui San Tome

PROGRAMACIN_______

Prof. Lesmary Lara

Integrantes: Kairolys Reina Franklin Mendoza

San Tome Junio 2013

ndice____________________________________________________________
Introduccin_______________________________________________________ ............. 3 Pilas_________________________________________________________ ...................... 4 Colas_____________________________________________________________ ........... 6 Listas_____________________________________________________________ ........... 7 Listas enlazadas circulares simples ........................................................................................ 10 Listas enlazadas doblemente circulares ................................................................................. 11 Aplicaciones ................................................................................................................................ 11 Lenguajes soportados ............................................................................................................... 12 rboles___________________________________________________________ .......... 12 Sistema de Archivos________________________________________________ ............ 14 Operaciones con Archivos: ....................................................................................................... 15 Archivos Aleatorios_________________________________________________ ............ 20 Ejercicios_________________________________________________________ ........... 24 Conclusin________________________________________________________ ........... 25 Anexos___________________________________________________________........... 26

Introduccin_______________________________________________________ Los datos estn formados por una estructura que se caracteriza por el hecho de que con un nombre se hace referencia a un grupo o espacio de memoria. A esto se le llama estructura de datos. En este trabajo se detalla las diferentes formas en la que se puede hacer dicha estructuras por que son un aspecto muy importante en la computacin. Se definirn los conceptos de pilas y colas y su uso y forma de operar de igual manera listas y por ltima arboles. Pasando por los Sistemas de Archivos, Grafos y Aleatorios.

Pilas_________________________________________________________ Las pilas son estructuras de datos que tienes dos operaciones bsicas: push (para insertar un elemento) y pop (para extraer un elemento). Su caracterstica fundamental es que al extraer se obtiene siempre el ltimo elemento que acaba de insertarse. Por esta razn tambin se conocen como estructuras de datos LIFO (del ingls Last In First Out). Una posible implementacin mediante listas enlazadas sera insertando y extrayendo siempre por el principio de la lista. Gracias a las pilas es posible el uso de la recursividad (lo veremos en detalle en el tema siguiente). La variable que llama al mismo procedimiento en el q est, habr que guardarla as como el resto de variables de la nueva llamada, para a la vuelta de la recursividad ir sacndolas, esto es posible a la implementacin de pilas.

Las pilas se utilizan en muchas aplicaciones que utilizamos con frecuencia. Por ejemplo, la gestin de ventanas en Windows (cuando cerramos una ventana siempre recuperamos la que tenamos detrs). Otro ejemplo es la evaluacin general de cualquier expresin matemtica para evitar tener que calcular el nmero de variables temporales que hacen falta. Por ejemplo: es una lista ordinal o estructura de datos en la que el modo de acceso a sus elementos es de tipo LIFO (del ingls Last In First Out, ltimo en entrar, primero en salir) que permite almacenar y recuperar datos. Esta estructura se aplica en multitud de ocasiones en el rea de informtica debido a su simplicidad y ordenacin implcita de la propia estructura. Para el manejo de los datos se cuenta con dos operaciones bsicas: apilar (push), que coloca un objeto en la pila, y su operacin inversa, retirar (o desapilar, pop), que retira el ltimo elemento apilado. En cada momento slo se tiene acceso a la parte superior de la pila, es decir, al ltimo objeto apilado (denominado TOS, Top of Stack en ingls).

La operacin retirar permite la obtencin de este elemento, que es retirado de la pila permitiendo el acceso al siguiente (apilado con anterioridad), que pasa a ser el nuevo TOS. Por analoga con objetos cotidianos, una operacin apilar equivaldra a colocar un plato sobre una pila de platos, y una operacin retirar a retirarlo. Las pilas suelen emplearse en los siguientes contextos: Evaluacin de expresiones en notacin postfija (notacin polaca inversa). Reconocedores sintcticos de lenguajes independientes del contexto Implementacin de recursividad Una pila cuenta con 2 operaciones imprescindibles: apilar y desapilar, a las que en las implementaciones modernas de las pilas se suelen aadir ms de uso habitual. Crear: se crea la pila vaca. (Constructor) Tamao: regresa el nmero de elementos de la pila. (Size) Apilar: se aade un elemento a la pila. (Push) Desapilar: se elimina el elemento frontal de la pila. (Pop) Cima: devuelve el elemento que esta en la cima de la pila. (Top o peek) Vaca: devuelve cierto si la pila est vaca o falso en caso contrario (empty). Implementacin: Un requisito tpico de almacenamiento de una pila de n elementos es O(n). El requisito tpico de tiempo de O (1) las operaciones tambin son fciles de satisfacer con un array o con listas enlazadas simples. La biblioteca de plantillas de C++ estndar proporciona una "pila" clase templated que se limita a slo apilar/desapilar operaciones. Java contiene una biblioteca de la clase Pila que es una especializacin de Vector. 5

Esto podra ser considerado como un defecto, porque el diseo heredado get () de Vector mtodo LIFO ignora la limitacin de la Pila. Estos son ejemplos sencillos de una pila con las operaciones descritas anteriormente (pero no hay comprobacin de errores).

Colas_____________________________________________________________ Las colas tambin son llamadas FIFO (First In First Out), que quiere decir el primero que entra es el primero que sale. Colas simples: Se inserta por un sitio y se saca por otro, en el caso de la cola simple se inserta por el final y se saca por el principio. Para gestionar este tipo de cola hay que recordar siempre cual es el siguiente elemento que se va a leer y cual es el ltimo elemento que se ha introducido. Colas circulares: En las colas circulares se considera que despus del ltimo elemento se accede de nuevo al primero. De esta forma se reutilizan las posiciones extradas, el final de la cola es a su vez el principio, crendose un circuito cerrado. Lo que se ha hecho es insertar (5), sacar (1), e insertar (8). Se sabr que una tabla est llena cuando rear y front estn en una posicin de diferencia. El teclado de ordenador se comporta exactamente como una cola circular. Para implementar las colas circulares mediante listas enlazadas se pone en el tipo T_Lista los punteros front y rear.

Colas con prioridad:Las colas con prioridad se implementan mediante listas o arrays ordenados. No nos interesa en este caso que salgan en el orden de entrada sino con una prioridad que le asignemos. Puede darse el caso que existan varios elementos con la misma prioridad, en este caso saldr primero aquel que primero llego (FIFO).

Listas_____________________________________________________________ Matemticamente, una lista es una sucesin finita de cero, uno o ms elementos del mismo tipo. Desde el punto de vista de las estructuras de datos, una lista es un conjunto finito de elementos, en el que para acceder a uno de ellos hay que pasar por todos los situados antes que l. Una lista es, por lo tanto, una estructura de datos secuencial. Ejemplos de listas utilizadas cotidianamente pueden ser: la lista de personas en la cola para visitar a un mdico, la secuencia de pasos de una receta de cocina, la lista de jugadores de un equipo de ftbol,... Las listas son estructuras de datos particularmente flexibles ya que pueden ir creciendo o decreciendo segn se necesite y pueden accederse, insertarse o eliminarse elementos en cualquier posicin dentro de la lista. En un programa se puede trabajar con una lista de datos a travs de una variable de tipo array, es decir, una estructura de datos esttica, pero es preferible implementar la lista mediante una estructura de datos dinmica para aprovechar y emplear de una forma ms flexible y ptima la memoria. Como ya se adelant en el captulo anterior, para llevar esto a cabo hay que utilizar variables de tipo apuntador o puntero. En este captulo se tratar el tema de las listas no a nivel terico, sino fundamentalmente, desde el punto de vista de su implementacin como una estructura de datos dinmica dentro de un programa. 7

Para construir una lista dinmica de datos se han de definir los elementos de la lista como datos de tipo record con dos clases de campos: una serie de campos que almacenan informacin y otra serie de campos de tipo apuntador o puntero. Al menos se necesita uno de estos campos para que almacene la posicin de memoria del siguiente elemento de la lista. Por lo tanto, los campos puntero de los elementos de las listas utilizados en general en los programas almacenarn direcciones de memoria de ese mismo tipo de datos (apuntarn a otros datos que son elementos de la propia lista). El acceso a un elemento de una lista dinmica sera comparable a la bsqueda de un tesoro escondido en la que, en cada pista que se halla, se dice donde encontrar la siguiente. Un ejemplo de definicin de un elemento de una lista simple sera el siguiente: type puntero = ^elemento; Elemento = record Dato: integer; sig : puntero end; var p : puntero; Se denomina lista dinmica simple porque sus elementos slo necesitan un campo de tipo puntero. En este caso, los elementos de la lista simple son de tipo record con dos campos: En uno de ellos se almacena un nmero entero y en el otro la direccin de memoria del siguiente elemento en la lista. Hay que hacer constar que estas declaraciones no dan lugar a un error de compilacin al utilizar el identificador elemento en la definicin de puntero sin haberlo previamente declarado: es una excepcin a la regla. Ya que, en todo caso, qu habra que Definir primero: elemento puntero? El compilador decide, en este caso, que se debe declarar primero el tipo de dato puntero. 8

El siguiente programa utiliza la declaracin de tipos anterior para generar una lista y posteriormente visualizar los valores que se acaban de introducir. program lista_1; {Crea una lista en el orden contrario a su introduccion } Listas dinmicas 143 {Primero introduce los datos y luego los visualiza } type puntero = ^elemento; Elemento = record Dato: integer; Sig. : puntero end; var p, q : puntero; A: integer; begin p:=nil; { Almacena en p la constante nil } readln(a); { Asigna un valor a la variable entera a } while a<>0 do begin new(q); { Reserva espacio para una variable dinamica q^ } { y almacena en q su direccion de memoria } q^.dato:=a; { Almacena el valor de a en el campo dato } q^.sig:=p; { Almacena en sig la misma direccion que en p } 9

p:=q; { Y ahora en p la misma direccion que en q } readln(a) { Asigna otro valor a la variable entera a } end; { Cuando se cumple que a=0 el bucle dejar de ejecutarse } writeln('Valores de la lista : '); { El siguiente bucle visualiza por pantalla el valor almacenado en el campo dato de todos los elementos de la lista. Acaba cuando la variable q almacena la constante nil: esta indica el final de la lista } while q<>nil do begin writeln(q^.dato); q:=q^.sig end end. Listas enlazadas circulares simples Cada nodo tiene un enlace, similar al de las listas enlazadas simples, excepto que el siguiente nodo del ltimo apunta al primero. Como en una lista enlazada simple, los nuevos nodos pueden ser solo eficientemente insertados despus de uno que ya tengamos referenciado. Por esta razn, es usual quedarse con una referencia solamente al ltimo elemento en una lista enlazada circular simple, esto nos permite rpidas inserciones al principio, y tambin permite accesos al primer nodo desde el puntero del ltimo nodo. 1 10

Listas enlazadas doblemente circulares En una lista enlazada doblemente circular, cada nodo tiene dos enlaces, similares a los de la lista doblemente enlazada, excepto que el enlace anterior del primer nodo apunta al ltimo y el enlace siguiente del ltimo nodo, apunta al primero. Como en una lista doblemente enlazada, las inserciones y eliminaciones pueden ser hechas desde cualquier punto con acceso a algn nodo cercano. Aunque estructuralmente una lista circular doblemente enlazada no tiene ni principio ni fin, un puntero de acceso externo puede establecer el nodo apuntado que est en la cabeza o al nodo cola, y as mantener el orden tan bien como en una lista doblemente enlazada.

Aplicaciones Las listas enlazadas son usadas como mdulos para otras muchas estructuras de datos, tales como pilas, colas y sus variaciones. El campo de datos de un nodo puede ser otra lista enlazada. Mediante este mecanismo, podemos construir muchas estructuras de datos enlazadas con listas; esta practica tiene su origen en el lenguaje de programacin Lisp, donde las listas enlazadas son una estructura de datos primaria (aunque no la nica), y ahora es una caracterstica comn en el estilo de programacin funcional. A veces, las listas enlazadas son usadas para implementar vectores asociativos, y estas en el contexto de las llamadas listas asociativas. Hay pocas ventajas en este uso de las listas enlazadas; hay mejores formas de implementar stas estructuras, por ejemplo con rboles binarios de bsqueda equilibrados. Sin embargo, a veces una lista enlazada es dinmicamente creada fuera de un subconjunto propio de nodos semejante a un rbol, y son usadas ms eficientemente para recorrer sta serie de datos.

11

Lenguajes soportados Muchos lenguajes de programacin tales como Lisp y Scheme tienen listas enlazadas simples ya construidas. En muchos lenguajes de programacin, estas listas estn construidas por nodos, cada uno llamado cons o celda cons. Las celdas cons tienen dos campos: el car, una referencia del dato al nodo, y el cdr, una referencia al siguiente nodo. Aunque las celdas cons pueden ser usadas para construir otras estructuras de datos, este es su principal objetivo. En lenguajes que soportan tipos abstractos de datos o plantillas, las listas enlazadas ADTs o plantillas estn disponibles para construir listas enlazadas. En otros lenguajes, las listas enlazadas son tpicamente construidas usando referencias junto con el tipo de dato record. En la seccin de implementaciones hay un ejemplo completo en C y en Maude

rboles___________________________________________________________ Un rbol es una estructura de datos dinmica ( las estructuras del rbol pueden cambiar durante la ejecucin del programa ) no lineal ( puesto que a cada elemento del rbol puede seguirle varios elementos ) y homognea en el que cada elemento puede tener varios elementos posteriores y solamente un elemento anterior. Es una estructura jerrquica aplicada sobre una coleccin de elementos u objetos llamados nodos, de los cuales uno es conocido como raz , adems se crea una relacin de parentesco entre los nodos dando lugar a trminos como padre, hijo, hermano, antecesor, sucesor, ancestro, etc. Un rbol es una estructura que est compuesta por un dato y varios rboles. Dado un nodo cualquiera de la estructura, podemos considerarlo como una estructura independiente, es decir un nodo cualquiera puede ser considerado como la raz de una rbol completo.

12

En relacin con otros nodos: Nodo Padre: Nodo que contiene un puntero al nodo actual. En un rbol un nodo solo puede tener un nodo padre.. X es padre de Y s y solo s el nodo X apunta a Y, tambin se dice que X es antecesor de Y. En la figura B es padre de E y F. Nodo Hijo: Cualquiera de los nodos apuntados por uno de los nodos del abol. Un nodo puede tener varios hijos.. X es hijo de Y, s y solo s el nodo X es apuntado por Y. Tambien se dice que X es descenciente directo de Y. En la figura : E es hijo de B. Hermano: Dos nodos sern hermanos si son descencientes directos de un mismo nodo. En la figura Ey F son hermanos. En cuanto a la posicin dentro del rbol: Nodo Raz: Es el nico nodo del rbol que no tiene padre. Este es el nodo que usaremos para referirnos al rbol. En la figura A es el nodo raz. Nodo Hoja: Nodo que no tiene hijos. Se llama hoja o terminal a aquellos nodos que no tienen ramificaciones ( hijos ). En la figura .. N es un nodo hoja. Nodo Interior: Es un nodo que no es raz ni hoja. En la figura .. D es un nodo interior. Orden: Es el nmero potencial de hijos que puede tener cada elemento de rbol. De este modo, diremos que un rbol en el que cada nodo puede apuntar a otros dos es de orden dos, si puede apuntar a tres ser de orden tres, etc. Podramos decir que nuestro rbol de ejemplo es de orden tres. Grado: El nmero de hijos que tiene el elemento con ms hijos dentro del rbol. En el rbol del ejemplo, el grado es tres, ya que tanto A como D tienen tres hijos, y no existen elementos con ms de tres hijos.

13

Nivel: Se define para cada elemento del rbol como la distancia a la raz, medida en nodos. El nivel de la raz es cero, el de sus hijos uno y asi sucesivamente. En el ejemplo, el nodo D tiene nivel 1, el nodo G tiene nivel 2 y el nodo N nivel 3. Rama: Es el camino desde el nodo raz a una hoja. En el ejemplo A-B-E-K y A-B-F son ramas. Altura: La altura de un rbol se define como el nivel del nodo de mayor nivel. Como cada nodo de un rbol puede considerarse a su vez como la raz de un rbol, tambien podemos hablar de altura de ramas, el mximo nmero de nodos que hay que recorrer para llegar de la raz a una de las hojas. El rbol de la Figura tiene altura 3, la rama B tiene altura 2, la rama G tiene altura 1 y la N cero. Peso: Es el nmero de nodos del rbol sin contar la raz. Camino: Es una consecuencia de nodos, en el que dos nodos consecutivos cualesquiera son padre e hijo. En el ejemplo A-D-H y A-C-G-M son caminos. Longitud de camino: Es el nmero de arcos que deben ser recorridos para llegar desde la raz al nodo X. Por definicin la raz tiene longitud de camino 1, y sus descendientes directos longitud de camino 2 y as sucesivamente. En nuestro rbol de ejemplo G tiene longitud de camino 3 y N tiene longitud de camino 4.

Sistema de Archivos________________________________________________ Un sistema de archivos es un conjunto de tipo de datos abstractos que son implementados para el almacenamiento, la organizacin jerrquica, la manipulacin, el acceso, el direccionamiento y la recuperacin de datos. Los sistemas de archivos comparten mucho en comn con la tecnologa de las bases de datos.

14

Operaciones con Archivos: Existen muchas operaciones asociadas a archivos, las ms elementales son: 1.- Creacin de Archivo.- En este proceso se pretende solamente crear un archivo nuevo en disco con su nombre tipo y especialidad de almacenamiento de datos apropiado. 2.- Apertura de Archivos.- En este caso se pretende abrir un archivo ya existente en disco para procesarlo ya sea para cargar o grabar estructuras en sus registros o leer algn registro en especial para mandarlo a una variable de cualquier tipo. No confundir creacin con apertura, creacin es un proceso que solo se ejecuta una sola vez en la vida de un archivo, mientras que apertura, siempre se esta realizando por los programas especializados en algn proceso. 3.- Cierre de archivos: Es la operacin mas importante en cualquier programa que maneje archivos, o se cierra el archivo como ultima instruccin del programa o se vera el anuncio ABORT, RETRY, FAIL. 98, /s, scandisk. 4.- Altas en archivo.- En este proceso se captura una estructura en memoria con sus datos pertinentes y despus se graba la estructura al archivo en disco. 5.- Lectura de archivo.- En este proceso se abre el archivo, se manda el registro de disco a una estructura en memoria para su procesamiento. 6.- Consulta de archivos: En este proceso se pretende desplegar todos los registros del archivo en disco a la pantalla. 7.- Bsqueda en archivos: Una de las operaciones mas comunes consiste en que el usuario pide toda la informacin de algn rengln en disco proporcionando la informacin de algn campo generalmente el campo clave de la estructura. 8.- Filtros.- En este proceso el usuario esta interesado en algn conjunto de renglones con caractersticas comunes (condicin), por ejemplo todos los alumnos de sistemas o todos los empleados que ganen mas de $500.00 pesos, o todos los clientes que sean de tijuana, etc.

15

9.- Modificaciones de registros o archivos: Problema muy comn, donde los datos originales ya grabados se tienen que cambiar o actualizar, por ejemplo el nombre no era juan es juana, o la calificacin no es 100 es 20, etc. 10.- Bajas de registros: tambin muy comn este proceso, por ejemplo el alumno ya egreso, el cliente huyo, etc.

Archivos Secuenciales: Los archivos secuenciales se denominan de esta manera por que la forma de escribir y leer los datos en un archivo es, desde el principio hasta el fin del archivo, es decir, si yo quisiera acceder a un determinado dato del archivo y este dato se encuentra en la mitad del archivo, para llegar a ese dato necesito pasar por todos los dems datos, de forma secuencial. El archivo finaliza con una marca de fin de archivo (eof).

Declaracin de un archivo Para declarar un archivo primero se declara una variable tipo text de la siguiente forma: VAR VarArchivo : Text; Una vez declarada la variable se asigna al nombre de algn archivo:

ASSIGN (VarArchivo, NombreArchivo); Donde NombreArchivo es una cadena de caracteres que contiene el nombre del archivo, la unidad de disco donde se encuentra y el directorio. Por ejemplo: ASSIGN (VarArchivo, 'C:\DOS\PRUEBA.TXT');

16

Abrir archivos Existen tres formas de abrir un archivo:

Escribir datos en un archivo Para escribir datos a un archivo se utilizan las instrucciones Write y WriteLn, como si se quisiera escribir a la pantalla, con la diferencia de que se especificar la variable de archivo ya declarada. Ejemplo: WriteLn(VarArchivo, 'Prueba de archivos'); Esta sentencia grabara el texto 'Prueba de archivos' en el archivo asignado a VarArchivo.

Leer datos de un archivo Para leer los datos de un archivo de acceso secuencial se utilizan las instrucciones Read y ReadLn. La instruccin Read lee uno o varios datos del archivo abierto y deja el puntero en el mismo rengln en el cual ley los datos, en cambio ReadLn lee los datos y mueve el puntero al siguiente rengln.

Fin del archivo Normalmente los archivos de este tipo se leen rengln por rengln hasta llegar al final del mismo. Cuando se conoce de antemano el tamao del archivo es posible utilizar un ciclo FOR, pero es ms seguro utilizar la funcin EOF la cual es verdadera despus de que el programa lee la ltima lnea de un archivo de acceso secuencial.La sintaxis de la funcin EOF es: EOF (VaribleArchivo);

17

Es comn realizar la verificacin de la funcin con un ciclo WHILE como en el ejemplo siguiente: WHILE NOT EOF(Archivo) DO BEGIN ReadLn(Archivo, Datos); WriteLn(Datos); END; Cerrar archivos: Para asegurar que toda la informacin se grabe en el disco correctamente es necesario cerrar el archivo antes de que se termine la ejecucin del programa, de lo contrario se corre el riego de que la ltima informacin que se haya accesado no se grabe en su totalidad.La instruccin para cerrar un archivo es Close, y su sintaxis es:Close (VaribleArchivo)

Funcin Eoln: La funcin Eoln sirve para verificar si el puntero ha llegado al final de la lnea. Regresa el valor verdadero si se encuentra al final. Comnmente se utiliza en las lecturas carcter por carcter.

Agregar datos a un archivo de texto: Para aadir datos a un archivo de texto son necesarios los siguientes pasos: Asignar un archivo a una variable con Assign Agregar los datos con el procedimiento Append Escribir los datos Cerrar el archivo A continuacin se ilustra un ejemplo de un programa que agrega una lnea a un archivo de texto:

18

PROGRAM Archivo; VAR Texto : TEXT; BEGIN Assign (Texto, 'PRUEBA.DAT'); ppend(Texto); WriteLn(Texto, 'Agregando una linea al archivo PRUEBA.DAT'); Close (Texto) END.

Archivos Secuenciales Indexados: Estos archivos mantienen las caractersticas bsicas de los archivos secuenciales: los registros se organizan en secuencia basada en un campo clave. Definicin de ndice: Un ndice en informtica es como el ndice de un libro donde tenemos los captulos del libro y la pgina donde empieza cada captulo. Un ndice es una estructura de datos que permite recuperar las filas de una tabla de forma ms rpida adems de proporcionar una ordenacin distinta a la natural de la tabla. Un ndice se define sobre una columna o sobre un grupo de columnas, y las filas se ordenarn segn los valores contenidos en esas columnas. Por ejemplo, si definimos un ndice sobre la columna poblacin de la tabla de clientes, el ndice permitir recuperar los clientes ordenados por orden alfabtico de poblacin.

Ventajas de los archivos secuenciales indexados Rpido acceso. El sistema de gestin de archivos se encarga de relacionar la posicin de cada registro con su contenido mediante la tabla de ndices. Desventajas

19

Desaprovechamiento del espacio por quedar huecos intermedio cada vez que se actualiza el archivo.

Se necesita espacio adicional para el rea de ndices.

Caractersticas de los Archivos Secuenciales Indexados: Los registros se organizan en una secuencia basada en un campo clave. Se incluye una tabla de ndices que proporciona una capacidad de bsqueda para llegar a las proximidades de un registro deseado mediante la clave.

Archivos Aleatorios_________________________________________________ A diferencia de los archivos secuenciales, los archivos aleatorios almacenan datos en forma de registros. Como habamos dicho en la unidad anterior para leer datos de un archivo secuencial haba que leer todo el archivo, es decir que no podamos leer por ejemplo los datos que estuviesen en la lnea 35 del mismo sin antes pasar por todos los datos anteriores, por eso su nombre de archivo secuencial. En cambio los archivos aleatorios, tambin llamados archivos directos, almacenan los datos con una estructura diferente. Los datos se guardan en registros mediante una estructura definida de tipo Type (estructura definida por nosotros) tambin llamada UDT. Por ejemplo si tuvisemos 25 registros, cada uno con datos (apellido, e-mail, telfono, etc.), y quisiera acceder al registro 17, puedo leer los datos del registro 17 sin tener que leer los 16 registros anteriores, ganando con ello ms velocidad y teniendo una estructura de datos definida.

20

Declaracin de un archivo Para declarar un archivo de acceso directo se realiza con las palabras reservadas FILE OF, su sintaxis es la siguiente: VariableArchivo : FILE OF TipoElementos; Esta declaracin se realiza en la seccin correspondiente a la declaracin de las variables. Ejemplo: PROGRAM Archivo_Tipeado; VAR Archivo : FILE OF Integer; BEGIN END. Normalmente no se desea crear archivos que puedan almacenar un solo tipo de datos ya que se requeriran varios archivos, por ejemplo para alguna base de datos: uno para los nombres, otro para apellidos, otro para la edad, etc. Para evitar este inconveniente es posible usar registros del tipo RECORD, que permiten grabar en un solo registro un grupo de datos que pueden ser de diferentes tipos, uno de tipo INTEGER, uno de tipo STRING, etc. Los registros del tipo record deben ser declarados antes de las variables en una seccin llamada TYPE con el siguiente formato:

21

La seccin TYPE se escribe antes de la declaracin de las variables. Como ejemplo, si se quiere crear un archivo el que se guarden el nombre, domicilio, edad y estado civil de un grupo de personas, el primer paso a realizar es crear un registro que contenga todos estos campos: TYPE Datos = RECORD Nombre : String[40]; Domicilio : String[60]; Edad : Integer; EdoCivil : String[10]; END; El siguiente paso es declarar un archivo del tipo Datos as como una variable del mismo tipo de los que se utilizarn en el archivo: VAR Archivo: FILE OF Datos; Persona : Datos;

Asignacin de un archivo : An cuando se tenga declarado el archivo no es posible grabar nada en l si no se le asigna un nombre real para guardarlo en el disco. El proceso de dicha asignacin es el mismo que para los archivos de texto: Assign (Archivo, 'Nombre.ext'); Nombre.txt puede ser una constante, una variable o estar escrita directamente en el programa. Naturalmente debe cumplir con todas las reglas para nombrar un archivo.

Abrir Archivos: Una vez declarado un archivo ya es posible abrirlo. En caso de querer abrir un archivo nuevo se utiliza la instruccin Rewrite, o si el archivo ya existe en el disco se abre con el procedimiento Reset. 22

No existe ninguna diferencia entre la apertura de un archivo de acceso directo para su lectura o para su escritura. Si al utilizar el procedimiento Rewrite el archivo asignado ya exista se eliminar del disco y se crear uno nuevo, por lo mismo se debe tener cuidado al momento de abrir estos archivos.

Posicionamiento en el interior de un archivo: Cada uno de los registros de un archivo esta referenciado por un nmero especfico comenzando desde el registro 0 y aumentando de 1 en 1. La funcin FilePos devuelve el nmero de registro actual, su sintaxis es: FilePos (VariableArchivo) VariableArchivo es la variable a la cual se asign un nombre de archivo en el disco. Para moverse a un registro determinado se utiliza la funcin Seek, con la siguiente sintaxis: Seek (VariableArchivo, NumRegistro); Para moverse al final del archivo para agregar un nuevo registro se utiliza este mismo comando con el parametro NumRegistro como sigue: Seek (VariableArchivo, FileSize(VariableArchivo)); Cuando se avanza en un archivo registro por registro se utiliza la funcin EOF para determinar si ya se lleg al final del archivo.

Lectura y escritura de archivos: Para la lectura y escritura en un archivo de acceso directo nicamente se utilizan los procedimientos Read y Write. Despus de cada operacin de lectura o escritura el puntero se posiciona en el siguiente registro.

Cerrar un archivo: Para cerrar los archivos abiertos se procede igual que en uno de acceso secuencial, utilizando el procedimiento close: Close (VariableArchivo); 23

Ejercicios_________________________________________________________

24

Conclusin________________________________________________________ La clase de estructura de datos me dejo mucho, desde la programada, lo cual ya mejore un poco ms, hasta la lgica de entender y ver las cosas de otra manera. Todo esto que acabo de explicar es un repaso de mi clase estructura de datos y simplemente puedo decir que si pudiera volverla a tomar, tenlo por seguro que volver a decir esto tantas veces sea un arte programar. END OF FILE; EXIT; En cierto modo y en la bsqueda de la verdad, de la lgica y de la razn hemos analizado profundamente los aspectos tcnicos acerca de las diferentes estructuras dinmicas y no dinmicas que se encuentran en el lenguaje, centrndonos especialmente y con particular nfasis en las funciones todas ellas muy importantes para la programacin estructurada, las colas ,las pilas herramientas indispensables para el ahorro del tiempo a nosotros los programadores solo la tecnologa futura y los nuevos avances tecnolgicos nos darn la luz y nos ensearan el camino por el cual debe pasar la humanidad llevada de la mano por la informtica.

25

Anexos___________________________________________________________

Push en una Pila Vaca

Aadiendo Elementos en una Cola Vaca

Movimientos de Pilas y Colas

Grafos

Listas

Arboles

26

También podría gustarte