Está en la página 1de 12

Instituto Tecnolgico Superior de Lerdo

Administracin y Organizacin de Datos

Archivos Secuenciales en los Lenguajes de Programacin


Guillermo Ortega Castaeda
Gpo. A Semestre IV

17 de febrero de 2012

Utilizacin de archivos secuenciales en los lenguajes de programacin!!!


Los archivos secuenciales disponen de una serie de caractersticas que no los habilitan para el uso diario en una aplicacin, pero sin embargo por sus caractersticas permiten que sean usados en temas muy concretos:

Trasvase de datos entre empresas. Almacenamientos de datos para tablas de una aplicacin. Guardar datos de configuracin.

Normalmente estos datos son cargados al principio de un programa.

Formatos
ASCII delimitado

El ASCII delimitado es un formato que permite indistintamente el formato de longitud fija y variable, pues cada dato viene separado del otro con comas. Es el ms estndar, eso significa que los datos se almacenan: Los datos alfanumricos delimitados entre comillas dobles. Los campos numricos sin delimitadores. Los campos se separan entre si por comas. Los registros incorporan una marca de fin de registro, los caracteres ascii trece y diez.

Los problemas que pueden surgir a la hora de su utilizacin vendrn dados por los distintos tipos de datos numricos que cada aplicacin, o sea el lenguaje en el que se ha desarrollado esa aplicacin, sea capaz de tratar. Como el problema ms normal es ese, una forma de saltarlo es grabar todos los datos como datos de tipo string, que es un tipo de dato que cualquier lenguaje es capaz de tratar sin ningn problema.

Existe otro posible problema y es que el lenguaje en cuestin no sea capaz de tratar el formato, la alternativa es la de utilizar la instruccin de lectura, que todos los lenguajes disponen, que permita leer un registro completo, es decir de marca de fin de registro hasta la siguiente. Posteriormente se puede desarrollar una funcin que asle los campos buscando las comas ubicadas entre comillas dobles, y de esa forma se consigue separar los datos.

Registros de longitud fija

Podemos evidentemente grabar registros de datos sin separadores de campos y utilizando una estructura de datos fija y conocida, sino no es posible tratarlos. Se leen y graban con instrucciones que trabajan con registros completos, de marca a marca de fin de registro, o leyendo una sola variable de tipo string.

Estructuras
Los archivos secuenciales permiten que podamos trabajar con registros de longitud fija o de longitud variable, que es otra de sus ventajas. Otra posibilidad es la de poder utilizar estructuras de registros de distintos tipos en el interior del archivo.

Escritura
La escritura de cada uno de los formatos que podemos utilizar depender en gran medida de las posibilidades del lenguaje que estemos utilizando, ya que no todos los lenguajes incorporan instrucciones adecuadas a los posibles formatos. La escritura en un formato de longitud fija se podr realizar con una instruccin que permita grabar una variable de tipo string. La escritura de un formato en ascii delimitado es posible realizarla igualmente si no hay una instruccin que genere ese formato directamente con la misma instruccin que antes, pero previamente habr que realizar el montaje de los datos componiendo una cadena de datos con ese formato.

Lectura
La lectura de uno u otro tipo de estructura de datos depender de la estructura utilizada. Se vuelve a presentar la misma situacin que en la grabacin, puede ser que no dispongamos de instrucciones para la lectura del formato recibido, por lo tanto posiblemente habr que recurrir a la lectura de registros completos, como cadenas de caracteres, para su posterior desmontaje o desglose en los campos y tipos adecuados. Por ejemplo la lectura de un registro de longitud fija puede darse en dos formatos. Como cadena de caracteres, sin delimitadores. Como ascii delimitado, con delimitadores.

La estructura de longitud variable tambin puede darse bajo los dos tipos de formatos, siempre y cuando cada registro se acompae con las marcas de fin de registro.

Sintaxis C#
using System; using System.Text; using System.IO;
namespace Test_TextFiles { class Program { static void Main(string[] args) { try { TextReader trs = new StreamReader(@"C:\test.txt"); //Lectura de todo el texto del archivo //Console.WriteLine(trs.ReadToEnd()); //o lectura secuencial while (trs.Peek()>=0 ) { Console.WriteLine(trs.ReadLine()); } trs.Close(); } catch (Exception e) { Console.WriteLine(e.Message); } Console.WriteLine("Presione cualquier tecla para continuar..."); Console.ReadKey(); } } }

Sintaxis PHP
<? function negrita($path,$cadena) { //Iniciamos la variable $texto = ""; //Abrimos el archivo en modo lectura $fp = fopen($path,"r"); //Leemos linea por linea el contenido del archivo while ($linea= fgets($fp,1024)) { //Sustituimos las ocurrencias de la cadena que buscamos $linea = str_replace($cadena,"<b>$cadena</b>",$linea); //Anadimos la linea modificada al texto $texto .= $linea; } return $texto; } //Definimos el path y la cadena $path="escribe el camino de acceso a tu archivo"; $cadena = "escribe tu cadena"; //Llamamos la funcion $texto = negrita ($path,$cadena); //Mostramos el texto echo $texto; ?>

Sintaxis Java
import java.awt.*; import javax.swing.*; <span id="IL_AD5" class="IL_AD">public</span> class IUBanco extends JPanel { // texto de las etiquetas para la GUI protected final static String nombres[] = { "Nmero de cuenta", "Primer nombre", "Apellido", "Saldo", "Monto de la transaccin" }; // <span id="IL_AD9" class="IL_AD">componentes</span> de GUI; protegidos para el acceso futuro de las subclases protected JLabel etiquetas[]; protected JTextField campos[]; protected JButton hacerTarea1, hacerTarea2; protected JPanel panelInternoCentro, panelInternoSur; protected int tamanio; // nmero de campos de texto en la GUI

// <span id="IL_AD12" class="IL_AD">constantes</span> que representan a los campos de texto en la GUI public static final int CUENTA = 0, PRIMERNOMBRE = 1, APELLIDO = 2, SALDO = 3, TRANSACCION = 4; // Configurar GUI. El <span id="IL_AD8" class="IL_AD">argumento</span> miTamanio del constructor determina el nmero de // filas de componentes de GUI. public IUBanco( int miTamanio ) { tamanio = miTamanio; etiquetas = new JLabel[ tamanio ]; campos = new JTextField[ tamanio ]; // crear etiquetas for ( int cuenta = 0; cuenta < etiquetas.length; cuenta++ ) etiquetas[ cuenta ] = new JLabel( nombres[ cuenta ] ); // crear campos de texto for ( int cuenta = 0; cuenta < campos.length; cuenta++ ) campos[ cuenta ] = new JTextField(); // crear panel para distribuir etiquetas y campos panelInternoCentro = new JPanel(); panelInternoCentro.setLayout( new GridLayout( tamanio, 2 ) ); // adjuntar etiquetas y campos a panelInternoCentro for ( int cuenta = 0; cuenta < tamanio; cuenta++ ) { panelInternoCentro.add( etiquetas[ cuenta ] ); panelInternoCentro.add( campos[ cuenta ] ); } // crear botones genricos; sin etiquetas ni manejadores de eventos hacerTarea1 = new JButton(); hacerTarea2 = new JButton(); // crear panel para distribuir los botones y adjuntarlos panelInternoSur = new JPanel(); panelInternoSur.add( hacerTarea1 ); panelInternoSur.add( hacerTarea2 ); // establecer esquema de este <span id="IL_AD6" class="IL_AD">contenedor</span> y adjuntarle los paneles setLayout( new BorderLayout() ); add( panelInternoCentro, BorderLayout.CENTER ); add( panelInternoSur, BorderLayout.SOUTH ); validate(); // validar esquema } // fin del constructor

// devolver referencia al botn de tarea genrico hacerTarea1 public JButton obtenerBotonHacerTarea1() { return hacerTarea1; } // devolver referencia al botn de tarea genrico hacerTarea2 public JButton obtenerBotonHacerTarea2() { return hacerTarea2; } // devolver referencia al arreglo campos de objetos JTextField public JTextField[] obtenerCampos() { return campos; } // borrar el contenido de los campos de texto public void borrarCampos() { for ( int cuenta = 0; cuenta < tamanio; cuenta++ ) campos[ cuenta ].setText( "" ); } // establecer valores de los campos de texto; lanzar IllegalArgumentException si // hay un nmero incorrecto de objetos String en el argumento public void establecerValoresCampos( String cadenas[] ) <span id="IL_AD2" class="IL_AD">throws</span> IllegalArgumentException { if ( cadenas.length != tamanio ) <span id="IL_AD3" class="IL_AD">throw</span> new IllegalArgumentException( "Debe haber " + tamanio + " objetos String en el arreglo" ); for ( int cuenta = 0; cuenta < tamanio; cuenta++ ) campos[ cuenta ].setText( cadenas[ cuenta ] ); } // obtener arreglo de objetos String con el contenido actual de los campos de texto public String[] obtenerValoresCampos() { String valores[] = new String[ tamanio ]; for ( int cuenta = 0; cuenta < tamanio; cuenta++ ) valores[ cuenta ] = campos[ cuenta ].getText(); return valores;

} } // fin de la clase IUBanco

Sintaxis XML

< xml="true" ns="urn:schemas-microsoftcom:office:office" prefix="o" namespace="">

Sintaxis Delphi
DELPHI: 1. unit Unit1; 2. 3. interface 4. 5. uses 6. Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, 7. Dialogs, StdCtrls; 8. 9. type 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. TForm1 = class(TForm) Memo: TMemo; archivo: TEdit; Button1: TButton; Button2: TButton; Button3: TButton; Button4: TButton; Label1: TLabel; Label2: TLabel; Label3: TLabel; Label4: TLabel; Label5: TLabel; Label6: TLabel; letras: TLabel; digitos: TLabel; blancos: TLabel; caracteres: TLabel; consonantes: TLabel;

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. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70.

vocales: TLabel; procedure Button4Click(Sender: procedure Button3Click(Sender: procedure Button1Click(Sender: procedure Button2Click(Sender: private { Private declarations } public { Public declarations } end; var Form1: TForm1; implementation {$R *.dfm} procedure TForm1.Button4Click(Sender: TObject); begin form1.close end; procedure TForm1.Button3Click(Sender: TObject); begin archivo.Text:=''; letras.caption:=''; digitos.caption:=''; blancos.caption:=''; caracteres.caption:=''; vocales.caption:=''; consonantes.caption:=''; memo.Text:=''; memo.SetFocus; end; procedure TForm1.Button1Click(Sender: TObject); begin memo.Lines.LoadFromFile(archivo.text); end; procedure TForm1.Button2Click(Sender: TObject); var TObject); TObject); TObject); TObject);

71. 72. 73. 74. 75. 76. 77. 78. 79. 80. 81. 82. 83. 84. 85. 86. 87. 88. 89. 90. 91. 92. 93. 94. 95. 96. 97. 98. 99. 100. 101.

l,d,b,v,c,ce,a,band:integer; x:char; begin l:=0; d:=0; b:=0; v:=0; c:=0; ce:=0; a:=0; while a<>length(memo.Text) do begin band:=0; a:=a+1; x:=memo.text[a]; if x in ['A'..'Z','a'..'z','','','','','','','','','','','',''] then begin l:=l+1; band:=1; end; if x in ['0'..'9'] then begin d:=d+1; band:=1; end; if x=' ' then begin

102. b:=b+1; 103. band:=1; 104. end; 105. 106. if x in ['a','e','i','o','u','A','E','I','O','U','','','','','','','','','',''] then 107. begin 108. v:=v+1; 109. band:=1; 110. end; 111. 112. if band=0 then

113. 114. 115. 116. 117. 118. 119. 120. 121. 122. 123. 124. 125. end; end. end;

ce:=ce+1;

letras.caption:=inttostr(l); digitos.caption:=inttostr(d); blancos.caption:=inttostr(b); vocales.caption:=inttostr(v); consonantes.caption:=inttostr(l-v); caracteres.caption:=inttostr(ce);

Bibliografias http://www.recursosdelweb.com/como-leer-archivossecuenciales-en-delphi/ http://www.desarrolloweb.com/articulos/411.php http://solocodigo.com/42056/archivos-en-c/ http://casidiablo.net/uso-del-objectoutputstream-java/ http://www.conocimientosweb.net/dcmt/downloads-cats-162-30titleA-30.html https://sites.google.com/site/natisaleja/archivossecuencialesyalea torios

También podría gustarte