sábado, 27 de junio de 2009

Ejemplo de lectura en un fichero secuencial

Pasemos ahora a leer el fichero secuencial escrito anteriormente para "magnetizar" una matriz numérica.

Incluso en este caso la primera instrucción operativa del programa debe ser la de apertura del fichero. En la línea 190 hemos utilizado OPEN con el parámetro "I" (INPUT = de entrada) seguido por el número del canal (1).

Este número que usamos ahora no depende, en absoluto, del número de canal empleado en el programa de escritura, y solamente por casualidad se eligió también el 1. En cambio, el nombre del fichero MAT.SEC debe ser exactamente el utilizado en la escritura, porque solamente así el sistema DOS puede buscar en el disco el fichero correcto que contiene la matriz deseada.

La lectura de la matriz es muy simple y basta utilizar una instrucción INPUT# con una variable numérica (variable que puede ser diferente de la empleada en la escritura). Los dos bucles FOR NEXT anidados tienen como objetivo leer los elementos de la matriz línea por línea. En la línea 310, CLOSE cierra la comunicación con el fichero. En este caso, su eventual omisión no produciría daños en los datos, como-hubiera sucedido, por el contrario, en el caso de escritura.

100 REM *************************** 110 REM * MATRIZ DE NUMEROS *. 120 REM * EN FICHERO SECUENCIAL * 130 REM * LECTURA *

140 REM ***************************

150 REM

160 TR=100:TC=50:REM MATRIZ DE 100 X 50 170 REM 180 REM

190 OREN "I",#1,"MAT.SEC"

200 REM

210 REM ---- IMPRESION DE LA MATRIZ ----

220 REM

230 FOR L=l TO TR 240 FOR M=l RO TC 250 INPUT #1,C

260 PRINT "FILA ";L;" -COL ";M;

270 PRINT " : ";C

280 NEXT M

290 NEXT L

300 REM

310 CLOSE #1

320 REM

330 END

Si en lugar de una matriz numérica se hubiera tratado de una matriz de cadenas, no habría diferencias importantes. En lugar de la variable C habríamos empleado una variable de cadena tal como E$. Las únicas complicaciones se habrían dado si en lugar de grabar un solo número por registro hubiésemos querido grabar más. En este caso hubiéramos tenido que forzar la grabación de "comas separadoras", a las que antes hicimos alusión, de este modo:

290 PRINT #1,A¡",";B;" , ";C

en el programa de escritura.

Ello hubiera permitido, en la lectura, emplear variables separadas entre sí:

250 INPUT #1,D,E,F

No hay comentarios:

Publicar un comentario