1hacer in programa que lea un número desconocido de datos reales de un disco y detecte el final de...

6
1 Hacer in programa que lea un número desconocido de datos reales de un disco y detecte el final de los datos en el archivo 2 Definir entradas y salidas a) nombre del file a ser abierto b) datos contenidos en el file 3 Describir el algoritmo Ejemplo de cómo usar el IOSTAT par a detectar el fin de archivo Recordar: IOSTAT= ierror En la lectura ierror toma el valor 0 si no existió ningún error. Si existió un error en el formato devuelve un número positivo Si encontró el fin de archivo , la variable devuelve un número negativo.

Upload: hernando-diaz

Post on 28-Jan-2016

216 views

Category:

Documents


1 download

TRANSCRIPT

Page 1: 1Hacer in programa que lea un número desconocido de datos reales de un disco y detecte el final de los datos en el archivo 2Definir entradas y salidas

1 Hacer in programa que lea un número desconocido de datos reales de un disco y detecte el final de los datos en el archivo

2 Definir entradas y salidasa) nombre del file a ser abiertob) datos contenidos en el file

3 Describir el algoritmo

Ejemplo de cómo usar el IOSTAT par a detectar el fin de archivo

Recordar:IOSTAT= ierrorEn la lectura ierror toma el valor 0 si no existió ningún error.Si existió un error en el formato devuelve un número positivo Si encontró el fin de archivo , la variable devuelve un número negativo.

Page 2: 1Hacer in programa que lea un número desconocido de datos reales de un disco y detecte el final de los datos en el archivo 2Definir entradas y salidas

comenzar

Nvals ← 0

Lee nombre del archivo

Abre archivo

lee valor

Ierror == 0

Ierror ==0

Escribe error de apertura de file

no

Nvals = nvals+1

Escribir nvals, valor

si

Ierror>0

no

Imp: Terminó el archivo, nvals

Imp: Error en la línea

stop

no

si

si

Page 3: 1Hacer in programa que lea un número desconocido de datos reales de un disco y detecte el final de los datos en el archivo 2Definir entradas y salidas

4. Escribir el algoritmo en lenguaje FORTRAN

PROGRAM lectura!! Proposito: Ver como funciona IOSTAT para encontrar errores!IMPLICIT NONE! Diccionario e inicializaciónCHARACTER (len=20) : : archi ! Nombre del archivoINTEGER : : nvals = 0 ! Número de valoresINTEGER : :ierror ! Valor del IOSTAT REAL : : valor ! Valores leídos!WRITE(*;*) ‘Entra el nombre del archivo’READ (*,*) archiWRITE(*,*) ‘ El archivo es:’, archi!! Se abre el archivo y se ven los erroresOPEN(UNIT= 3, FILE=archi, STATUS=‘OLD’, ACTION= ‘READ’, IOSTAT=ierror)

Page 4: 1Hacer in programa que lea un número desconocido de datos reales de un disco y detecte el final de los datos en el archivo 2Definir entradas y salidas

if1 IF( ierror ==0) THENDO READ(3, *, IOSTAT = ierror) valor IF(ierror /= 0) EXIT nvals= nvals + 1 WRITE( *, 1010) nvals, valor 1010 FORMAT(‘ ‘, ‘registro ‘, nvals, ‘ valor’, F10.4)END DO

if2 IF( ierror > 0) THENWRITE(*, 1020) nvals+1 1020 FORMAT (‘0’, ‘ Hay un error en la lectura en el registro ‘, I6)ELSE WRITE(*,1030) nvals1030 FORMAT( ‘0’, ‘Llegó al fin de archivo . Hay ‘, I6, ‘registros’)END IF if2

ELSE if1WRITE(*,1040) ierror1040 FORMAT (‘ ‘, ‘ Error en la apertura del file: ‘, I6)END IF if1CLOSE(UNIT=3)END PROGRAM lectura

Page 5: 1Hacer in programa que lea un número desconocido de datos reales de un disco y detecte el final de los datos en el archivo 2Definir entradas y salidas

5. Verificación del programa

Para verificar el programa vamos a usar 2 archivos. Uno de ellos con un error en los datos

arch1

-17.0

30.001

1.0

12000

-0.012

arch2

-17.0

30.001

AAAA

12000

-0.012

Los resultados:*******************************************Entra el nombre del archivo‘arch1’El archivo es: arch1registro 1 valor -17.0000registro 2 valor 30.0010registro 3 valor 1.0000registro 4 valor 12000.0000registro 5 valor 0.0120Llegó al fin de archivo . Hay 5 registros

Page 6: 1Hacer in programa que lea un número desconocido de datos reales de un disco y detecte el final de los datos en el archivo 2Definir entradas y salidas

Entra el nombre del archivo‘arch2’El archivo es: arch2registro 1 valor -17.0000registro 2 valor 30.0010

Hay un error en la lectura en el registro 3************************************************Finalmente si hay un error en el archivo*************************************************Entra el nombre del archivo‘aarch2’El archivo es: aarch2Error en la apertura del file: 29