Вы находитесь на странице: 1из 24

ADMINISTRACIN Y ORGANIZACIN DE DATOS

Archivos secuenciales en diferentes lenguajes de programacin

FELIPE DE JESUS MENDOZA DIAZ 10231491

Viernes 17 de Febrero del 2012

ARCHIVO SECUENCIAL EN C#
El tipo de acceso simple a un archivo de datos es el secuencial, un archivo que puede almacenar registros de cualquier magnitud. Cuando la informacin se escribe registro a registro, estos son colocados de uno en uno y cuando se leen se empieza por el primero y se contina hasta el ltimo. Este acceso utiliza dos archivos de texto en los que se escribe informacin desde el principio hasta el final y se lee igual que el secuencial. En cambio los archivos de texto no son los mas apropiados para almacenar grandes series de nmeros porque cada numero es almacenado como una secuencia byte.

Primero necesitamos saber que la clase Stream pertenece al namespace System.IO, debemos importar dicho namespace antes de comenzar. using System.IO; static void Main(string[] args) { string ruta = "c:\\archivo.txt"; StreamWriter escritor = new StreamWriter(ruta); escritor.WriteLine("Aqu- ira el texto que nosotros queremos"); escritor.Close();

} Este mtodo crea el archivo de texto, y dentro de el podemos escribir.

StreamReader lector = new StreamReader(ruta); Console.WriteLine(lector.ReadToEnd()); lector.Close(); Console.ReadLine(); Mtodo StreamReader para leer un archivo de texto. Recuerden que siempre que utilizen un stream deben cerrarlo con el mtodo Close(); para que puedan ocupar dicho archivo y no est solo como solo lectura o que otro programa est utilizandolo.

Pero si queremos aadir ms cosas como:

private const string DIR_ARCHIVO = "c:\\archivo.txt"; Agregar una constante en donde ir la ruta del archivo.

if (File.Exists(DIR_ARCHIVO)) {} Una condicin que deterimine si el archivo existe o no.

if (File.Exists(DIR_ARCHIVO)) { Console.WriteLine("{0} ya existe." ,DIR_ARCHIVO); Console.WriteLine("---------------------------");

using (StreamReader lector = new StreamReader(DIR_ARCHIVO)) { Console.WriteLine(lector.ReadToEnd()); } Console.ReadLine();

Si existe entonces leer el archivo, de lo contrario, lo crear: using (StreamWriter escritor = File.CreateText(DIR_ARCHIVO)) { escritor.WriteLine("Ejemplo de StreamWriter"); escritor.WriteLine("{0} {1} {2}", 21, 31.1, 000.334445); escritor.Close();

Como primer paso debemos tener un archivo XML que nos sirva para probar nuestra aplicacin. Podemos crearlo con el cdigo detallado abajo con el nombre de XMLPrueba.xml. Debemos crear este archivo en un editor como el NotePad, ya que necesitamos un archivo sin caracteres extraos. Texto Plano VB.NET: 1. <?xml version="1.0" encoding="UTF-8"?> 2. <usuarios> 3. <name codigo="mtorres"> 4. 5. <nombre>Maria </nombre> <apellido>Torres </apellido>

6. </name> 7. <name codigo="cortiz"> 8. 9. 10. 11. <nombre>Carlos </nombre> <apellido>Ortiz </apellido> </name> </usuarios>

Luego de tener nuestro archivo XML creado podremos crear nuestro cdigo en VB.NET Utilizando el XMLTextReader Este formato es muy sencillo y para leer el achivo XML debemos hacerlo secuencialmente, lnea por lnea. Texto Plano VB.NET: 1. Imports System.IO 2. Imports System.Xml 3. Module ParsingUsingXmlTextReader 4. Sub Main() 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 'Leemos el tag usuarios 'Leemos el archivo y avanzamos al tag de usuarios m_xmlr.Read() 'Desabilitamos las lineas en blanco, 'ya no las necesitamos m_xmlr.WhiteSpaceHandling = WhiteSpaceHandling.NONE Dim m_xmlr As XmlTextReader 'Creamos el XML Reader m_xmlr = New XmlTextReader("C:\XMLPrueba.xml")

17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55.

m_xmlr.Read() 'Creamos la secuancia que nos permite 'leer el archivo While Not m_xmlr.EOF 'Avanzamos al siguiente tag m_xmlr.Read() 'si no tenemos el elemento inicial 'debemos salir del ciclo If Not m_xmlr.IsStartElement() Then Exit While End If 'Obtenemos el elemento codigo Dim mCodigo = m_xmlr.GetAttribute("codigo") 'Read elements firstname and lastname m_xmlr.Read() 'Obtenemos el elemento del Nombre del Usuario Dim mNombre = m_xmlr.ReadElementString("nombre") 'Obtenemos el elemento del Apellido del Usuario Dim mApellido = m_xmlr.ReadElementString("apellido") 'Escribimos el resultado en la consola, 'pero tambien podriamos utilizarlos en 'donde deseemos Console.WriteLine("Codigo usuario: " & mCodigo _ & " Nombre: " & mNombre _ & " Apellido: " & mApellido) Console.Write(vbCrLf) End While 'Cerramos la lactura del archivo m_xmlr.Close() End Sub End Module

Utilizando el XmlDocument Este formato es mas complejo y nos permite recorrer los nodos sin tener que utilizar una lectura secuencial. Definitivamente este formato es ms eficiente que el anterior principalmente para documentos XML muy grandes.

Texto Plano VB.NET: 1. Imports System.IO 2. Imports System.Xml 3. Module ParsingUsingXmlDocument 4. Sub Main() 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. Next Catch ex As Exception 'Error trapping Console.Write(ex.ToString()) 'Escribimos el resultado en la consola, 'pero tambien podriamos utilizarlos en 'donde deseemos Console.Write("Codigo usuario: " & mCodigo _ & " Nombre: " & mNombre _ & " Apellido: " & mApellido) Console.Write(vbCrLf) 'Obtenemos el Elemento apellido Dim mApellido = m_node.ChildNodes.Item(1).InnerText 'Obtenemos el Elemento nombre Dim mNombre = m_node.ChildNodes.Item(0).InnerText 'Iniciamos el ciclo de lectura For Each m_node In m_nodelist 'Obtenemos el atributo del codigo Dim mCodigo = m_node.Attributes.GetNamedItem("codigo").Value 'Obtenemos la lista de los nodos "name" m_nodelist = m_xmld.SelectNodes("/usuarios/name") 'Cargamos el archivo m_xmld.Load("C:\XMLPrueba.xml") 'Creamos el "XML Document" m_xmld = New XmlDocument() Try Dim m_xmld As XmlDocument Dim m_nodelist As XmlNodeList Dim m_node As XmlNode

42. 43. 44.

End Try End Sub End Module

Enlaces que te pueden interesar:

JAVA
// Una clase que representa un registro de informacin. import java.io.Serializable; public class RegistroCuentas implements Serializable { private int cuenta; private String primerNombre; private String apellidoPaterno; private double saldo;

// el constructor sin argumentos llama al otro constructor con valores predeterminados public RegistroCuentas() { this( 0, "", "", 0.0 ); }

// inicializar un registro public RegistroCuentas( int cta, String nombre, String apellido, double sald ) { establecerCuenta( cta ); establecerPrimerNombre( nombre );

establecerApellidoPaterno( apellido ); establecerSaldo( sald ); }

// establecer nmero de cuenta public void establecerCuenta( int cta ) { cuenta = cta; }

// obtener nmero de cuenta public int obtenerCuenta() { return cuenta; }

// establecer primer nombre public void establecerPrimerNombre( String nombre ) { primerNombre = nombre; }

// obtener primer nombre public String obtenerPrimerNombre() { return primerNombre; }

// establecer apellido paterno public void establecerApellidoPaterno( String apellido ) { apellidoPaterno = apellido; }

// obtener apellido paterno public String obtenerApellidoPaterno() { return apellidoPaterno; }

// establecer saldo public void establecerSaldo( double sald ) { saldo = sald; }

// obtener saldo public double obtenerSaldo() { return saldo; }

} // fin de la clase RegistroCuentas

JAVA ARCHIVOS SECUENCIALES Existen ademas muchas operaciones asociadas a archivos, las mas 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 cargar o grabar datos en sus registros, o leer algun 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 algun 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 pograma o se vera el anuncio ABORT,RETRY,FAIL. 98, /s, scandisk 4.-Altas en archivo.- En este proceso se carga una clase en memoria con sus datos pertinentes y se graba la clase en el archivo en disco. 5.-Lectura de archivo.- En este proceso, se abre el archivo y se manda el registro de disco, a una clase 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, ya sea consola o mejor an, a una pagina html 7.-Busqueda en archivos: Una de las operaciones mas comunes, consiste en que el usuario pide toda la informacin de algun renglon en disco, porporcionando la informacin de algun campo, generalmente el campo clave de la clase. 8.- Filtros.- En este proceso el usuario esta interesado en algun conjunto de renglones con caracteristicas comunes (condicin), por ejemplo todos los alumnos de sisJAVA TEMA s, o todos los empleados que ganen mas de $500.00 pesos, o todos los clientes que sean de tijuana, etc 9.-Modificaciones de registros o archivos: Problema muy comun, 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: tambien muy comun este proceso,por ejemplo el alumno ya egreso, el cliente huyo, etc.

Delphi xe2
En Delphi los ficheros y archivos pueden ser de dos tipos: ficheros en formato ASCII o ficheros en formato binario y pueden, a su vez, organizarse de dos formas diferentes: en forma secuencial o en forma indexada. En un fichero secuencial todos los componentes del fichero se almacenan secuencialmente uno despus del otro. En este trabajo se aborda cmo se crean y utilizan en Delhi tanto los ficheros en formato ASCII como en formato binario organizados secuencialmente, ya que para almacenar datos con estructura indexada es mucho ms cmodo hacerlo usando bases de datos, las cuales Delphi maneja a la perfeccin. Ficheros en formato ASCII. Los ficheros en formato ASCII son los ms sencillos de todos. Se pueden visualizar con el Bloc de Notas de Windows y suelen llevar extensin txt. Un fichero de este tipo puede definirse fcilmente declarando al identificador que lo representa de tipo texto. Esta declaracin puede expresarse como: Var Nombre del fichero : TextFile Para leer o escribir datos en un fichero con formato ASCII se deben dar los siguientes pasos: 1. Indicarle a Delphi que se trata de un fichero de tipo texto. 2. Declarar las variables que se usarn para leer o escribir datos en el fichero. Estas variables deben ser de tipo String ya que se trata de un fichero en formato ASCII. 3. Indicarle a Delphi como se llama el fichero y con que nombre se conocer en el programa para lo cual se emplea la funcin AssignFile. 4. Se abre el fichero en el modo en el que se desea trabajar:

Modo lectura. Se indica con la orden Reset. Modo escritura para aadir datos. Se indica con la orden Append. Modo reescritura para crear el fichero y si este exista con anterioridad sobrescribirlo. Se indica con la orden Rewrite.

1. Cerrar el fichero una vez concluido el proceso de lectura o escritura. Se indica con la orden CloseFile.

Ejemplo:Los siguientes procedimientos permiten crear el fichero Grupo, almacenar en l los nombres de los estudiantes que lo integran y recuperar luego el listado. Procedure CrearFichero;

Var Datos : TextFile; begin AssignFile (Datos, 'Grupo.txt'); Rewrite (Datos); CloseFile (Datos); end; Procedure EscribirDatos (Nombre : String); Var Datos : TextFile; begin AssignFile (Datos, 'Grupo.txt'); Append (Datos); Writeln (Datos, Nombre); CloseFile (Datos); end; Procedure LeerDatos; Var Datos : TextFile; I : Integer; begin AssignFile (Datos, 'Grupo.txt'); Reset (Datos);

I := 1; While Not Eof (Datos) do begin Readln (Datos, Nombre[I]); Inc (I); end; CloseFile (Datos); end; Antes de usarlos, declare el arreglo Nombre de tipo String. La funcin Eof permite conocer si se lleg o no al final del fichero respondiendo True en caso positivo y False en caso contrario. Para conocer el nmero de registros que existen en un fichero, se puede utilizar la siguiente funcin: Function ContarRegistros : Integer; Var Cantidad : Integer; Datos : TextFile; Linea : String; begin Cantidad := 0; AssignFile (Datos, 'Grupo.txt'); Reset (Datos); While Not Eof (Datos) do begin

Readln (Datos, Linea); Inc (Cantidad); end; CloseFile (Datos); ContarRegistros := Cantidad; end;

Ficheros en formato binario.


Los ficheros en formato binario solo pueden ser ledos por el programa que los cre o por uno que se programe para leerlos. La manera ms sencilla de definirlos es incluir la definicin del fichero como parte de una declaracin de variable de tipo fichero. La forma general de esta declaracin es: Var Nombre del fichero: File of tipo donde tipo se refiere al tipo de dato de los componentes individuales del fichero. La ventaja con respecto a los ficheros en formato ASCII es que se puede contar con dos funciones que no existan en estos: FileSize y FilePos. La primera de ellas retorna el nmero de registros que existen en el fichero y la segunda la posicin actual del puntero dentro del fichero. Los componentes individuales del fichero pueden ser de tipo simple o de tipo estructurado. En este ltimo caso se debe declarar primero la estructura de datos y luego indicarle al fichero que use esa estructura. Ejemplo: Los siguientes procedimientos permiten crear el fichero Informacin, almacenar en l el nombre y el nmero del carn de identidad de un grupo de estudiantes y luego recuperar esa informacin. Procedure CrearFichero; Var Datos : File of TListado; begin AssignFile (Datos, Informacion.fic);

Rewrite (Datos); CloseFile (Datos); end; Procedure EscribirDatos (NuevaInformacion : TListado); Var Datos : File of TListado; begin AssignFile (Datos, Informacion. fic); Reset (Datos); Seek (Datos,FileSize (Datos)); Write (Datos, NuevaInformacion); CloseFile (Datos); end; Procedure LeerDatos; Var Datos : File of TListado; I : Integer; begin AssignFile (Datos, Informacion. fic); Reset (Datos); For I := 1 to FileSize (Datos) do Read (Datos, Listado [I]); CloseFile (Datos);

end; Antes de usarlos declare el tipo de dato TListado. Type TListado = Record Nombre : String [50]; NumeroIdentidad : Real; end; y la variable Listado como un arreglo de tipo Tlistado. La funcin Seek permite recorrer el fichero avanzando el puntero dentro del mismo. Para copiar el contenido de un fichero en otro, se puede utilizar el siguiente procedimiento: Procedure CopiarFichero; Var FicheroOrigen, FicheroDestino : File of TListado; Contenido : TListado; begin AssignFile (FicheroOrigen, Informacion.fic'); Reset (FicheroOrigen); AssignFile (FicheroDestino, 'Copia.fic'); Rewrite (FicheroDestino); While Not Eof (FicheroOrigen) do begin Read (FicheroOrigen, Contenido); Write (FicheroDestino, Contenido);

end; CloseFile (FicheroOrigen); CloseFile(FicheroDestino); end;

Delphi XE.
Declaracin e inicializacin de variables
Para la declaracin de variables os valemos de las siguientes sintaxis: var <Nombre de variable> : <Tipo de variable> <Nombre de variable 1>, <Nombre de variable 2>, <Nombre de variable n> : <Tipo de variable> Para inicializar las variables recin creadas: <Nombre de Variable> := <Valor>

Tabla de Operadores con asociatividad y precedencia


Operadores Asociatividad + * / div mod Por la Izquierda Por la Izquierda Por la Izquierda Por la Izquierda Por la Izquierda Por la Izquierda

Orden de Precedencia

Operadores

Las operaciones entre parntesis

Races o Potencias

Multiplicaciones o Divisiones

Sumas o Restas

Si hay 2 o ms operadores del mismo Orden entonces se usa la asociatividad por la izquierda

Estructuras de decisin e iteracin


Antes de iniciar con las estructuras de decisin e iteracin, se debe conocer los operadores de las condiciones que son la base de las dos siguientes estructuras a ver. Hay que tener claro que la diferencia entre = y := es, que el primero compara dos variables y el segundo es una asignacin de valores. A continuacin se presenta una tabla con los operadores para cuando hay ms de una condicin a evaluar.

Operador > < >= <= = <>

Significado Mayor que Menor que Mayor o Igual que Menor o Igual que Igual Distinto de

Operador Significado AND OR NOT y lgico o lgico negacin

Decisin Uso del If If condicin (es) then Begin Bloque de Instrucciones; End Else Begin

Bloque de Instrucciones; End

Uso del Case Case <variable> of Constante1: Begin Instrucciones; End; Constante2: Begin Instrucciones; End; Constante3: Begin Instrucciones; End; Else Begin Instrucciones; End; Iteracin Ciclo For For <variable> := valor inicial To valor final Do Begin Instrucciones; End Ciclo Repeat Until Repeat Instrucciones; *Instruccin de salida del Ciclo; Until (Condicin);

Declaracin, definicin y uso de mtodos y funciones


Delphi por supuesto tiene lo que es el uso de funciones y Procedimientos, ahora definiremos por separado cada uno de estos mdulos. Procedimientos: Es un modulo de un programa que realiza tareas especificas y que no puede regresar valores a la parte principal del programa u otro procedimiento que lo est invocando. Declaracin y Definicin de los Procedimientos. Procedure <Nombre del procedimiento> Var {Lista de variables locales} Begin {Bloque instrucciones} End; Este esquema de la definicin y declaracin se hace en la seccin de VAR del programa principal. Uso. Simplemente en el programa principal se copia el nombre del procedimiento previamente definido en el lugar donde se le requiera. Funciones: Una funcin es un modulo de un programa separado del cuerpo principal, que realiza una tarea especfica y que puede regresar un valor a la parte principal del programa u otra funcin o procedimiento que la invoque. Declaracin y Definicin de las Funciones. Function<Nombre de la Funcion> ( Parametros): <Tipo de Dato a retomar>; Var {Lista de variables locales} Begin {Bloque de instrucciones} <Nombre de la Funcion> := Instruccin; Aqu ocurre el famoso return de las funciones End; Este esquema de la definicin y declaracin se hace en la seccin de VAR del programa principal. Uso. Simplemente en el programa principal se hace el llamado a funcin.

Implementacin y uso de la Programacin Orientada a Objetos


Generalmente la POO se asocia rpidamente con lenguajes como C++, pero Object Pascal, de ah su nombre cuenta con todos los componentes bsicos de un lenguaje orientado a objetos con la encapsulacin, la herencia y el polimorfismo. Comenzando con el concepto de encapsulacin de datos que trata bsicamente de encerrar un conjunto de datos dentro de un objeto que slo los mtodos del propio podr manipular. Para eso se hace uso de la palabra reservada Type. type {<Nombre del Objeto> = Object} Persona = Object {Atributos} nombre:String[25]; private apellido:String[25]; {Procedimientos y Funciones} procedure init(name:String;apell:String); procedure nombreCompleto; procedure setApellido(apell:String); function getNombre:String; {fin del type} end; Ahora solo falta definir las funciones y procedimientos del Object Persona, Observe que un atributo tiene la palabra reservada de Private, esta palabra hace que el atributo solo pueda ser accesado o modificado por medio de mtodos del propio Objeto. El primer atributo se asume que es un atributo pblico es decir que puede ser modificado y/o accesado sin necesidad de mtodos. A continuacin se definen los procedimientos y funciones del objeto. var procedure Persona.init; begin nombre:=name; setApellido(apell); end; procedure Persona.nombreCompleto; begin writeln(Nombre,' ',getApellido); end; procedure setApellido;

begin apellido := apel; end; function Persona.getApellido:String; begin getApellido:= apellido; end; La definicin de las funciones y procedimientos se hace en la seccin var del main y la diferencia est en que el nombre de la funcin o del procedimiento siempre es precedido por el Nombre del objeto ms punto. Ejemplo: Persona.setApellido Persona.nombreCompleto Otro aspecto a destacar es que tanto las funciones como los procedimientos, en el momento de definirlos no es necesario copiar la lista de parmetros que necesiten y en el caso de las funciones no es necesario escribe : <tipo que retornan> porque ya estn encapsulados en el type. Ahora para las herencias sencillamente donde se crea es esqueleto en el Type se hace lo siguiente: Type Padre = Object {esqueleto de la clase Padre}; end; Hijo = Object (Padre) {esqueleto de la clase Hijo}; end; Var {definiciones de los procedimientos y funciones de Padre}; {definiciones de los procedimientos y funciones de Hijo};
Una recomendacin es que los mtodos comunes entre el padre y el hijo se deben declarar y definir en el padre, porque esos mtodos se heredan de manera implcita en el hijo, dejando solamente la tarea de declarar y definir los mtodos nicos del hijo. Por ltimo falta mencionar la declaracin del polimorfismo, bsicamente es una herencia mltiple de un padre a varios hijos, ac se usa la palabra reservada virtual. Este hace que los mtodos (procedimientos y funciones) comunes entre el padre y el hijo puedan sobrescribirse. Bsicamente permite que si hay un padre que hereda a varios hijos un mtodo en comn pero que cada mtodo segn el hijo funciona de manera diferente, puedan ser definidos en cada hijo usando siempre el mismo nombre.

Вам также может понравиться