En este módulo, aprenderemos cómo leer datos desde archivos en Fortran. La capacidad de manejar archivos es crucial para muchos programas científicos y de ingeniería, ya que permite almacenar y recuperar grandes cantidades de datos de manera eficiente.

Conceptos Clave

  1. Abrir un Archivo: Utilizar la instrucción OPEN para abrir un archivo.
  2. Leer Datos: Utilizar la instrucción READ para leer datos del archivo.
  3. Cerrar un Archivo: Utilizar la instrucción CLOSE para cerrar el archivo después de su uso.
  4. Manejo de Errores: Implementar manejo de errores para asegurar que el archivo se maneje correctamente.

Abrir un Archivo

Para abrir un archivo en Fortran, utilizamos la instrucción OPEN. Aquí hay un ejemplo básico:

PROGRAM LeerArchivo
  IMPLICIT NONE
  INTEGER :: unidad, iostat
  CHARACTER(LEN=100) :: nombreArchivo

  ! Asignar un número de unidad y el nombre del archivo
  unidad = 10
  nombreArchivo = 'datos.txt'

  ! Abrir el archivo
  OPEN(UNIT=unidad, FILE=nombreArchivo, STATUS='OLD', IOSTAT=iostat)

  ! Verificar si el archivo se abrió correctamente
  IF (iostat /= 0) THEN
    PRINT *, 'Error al abrir el archivo.'
    STOP
  END IF

  PRINT *, 'Archivo abierto exitosamente.'

  ! Cerrar el archivo
  CLOSE(UNIT=unidad)
END PROGRAM LeerArchivo

Explicación del Código

  • IMPLICIT NONE: Desactiva la declaración implícita de variables, lo que ayuda a evitar errores.
  • INTEGER :: unidad, iostat: Declara las variables unidad (número de unidad del archivo) e iostat (estado de la operación de entrada/salida).
  • CHARACTER(LEN=100) :: nombreArchivo: Declara una variable de cadena para el nombre del archivo.
  • OPEN(UNIT=unidad, FILE=nombreArchivo, STATUS='OLD', IOSTAT=iostat): Abre el archivo datos.txt con el número de unidad 10. STATUS='OLD' indica que el archivo ya existe. IOSTAT=iostat almacena el estado de la operación.
  • IF (iostat /= 0) THEN ... END IF: Verifica si hubo un error al abrir el archivo.
  • CLOSE(UNIT=unidad): Cierra el archivo.

Leer Datos del Archivo

Para leer datos de un archivo, utilizamos la instrucción READ. Aquí hay un ejemplo que lee números enteros de un archivo:

PROGRAM LeerDatos
  IMPLICIT NONE
  INTEGER :: unidad, iostat, numero
  CHARACTER(LEN=100) :: nombreArchivo

  ! Asignar un número de unidad y el nombre del archivo
  unidad = 10
  nombreArchivo = 'numeros.txt'

  ! Abrir el archivo
  OPEN(UNIT=unidad, FILE=nombreArchivo, STATUS='OLD', IOSTAT=iostat)

  ! Verificar si el archivo se abrió correctamente
  IF (iostat /= 0) THEN
    PRINT *, 'Error al abrir el archivo.'
    STOP
  END IF

  PRINT *, 'Archivo abierto exitosamente.'

  ! Leer datos del archivo
  DO
    READ(UNIT=unidad, FMT=*, IOSTAT=iostat) numero
    IF (iostat /= 0) EXIT
    PRINT *, 'Número leído:', numero
  END DO

  ! Cerrar el archivo
  CLOSE(UNIT=unidad)
END PROGRAM LeerDatos

Explicación del Código

  • READ(UNIT=unidad, FMT=*, IOSTAT=iostat) numero: Lee un número entero del archivo. FMT=* indica que se utiliza el formato libre.
  • IF (iostat /= 0) EXIT: Sale del bucle si hay un error o se alcanza el final del archivo.
  • PRINT *, 'Número leído:', numero: Imprime el número leído.

Ejercicio Práctico

Ejercicio 1: Leer y Sumar Números

Escribe un programa que lea una lista de números enteros desde un archivo llamado numeros.txt y calcule la suma de estos números.

Solución

PROGRAM SumarNumeros
  IMPLICIT NONE
  INTEGER :: unidad, iostat, numero, suma
  CHARACTER(LEN=100) :: nombreArchivo

  ! Inicializar variables
  unidad = 10
  nombreArchivo = 'numeros.txt'
  suma = 0

  ! Abrir el archivo
  OPEN(UNIT=unidad, FILE=nombreArchivo, STATUS='OLD', IOSTAT=iostat)

  ! Verificar si el archivo se abrió correctamente
  IF (iostat /= 0) THEN
    PRINT *, 'Error al abrir el archivo.'
    STOP
  END IF

  PRINT *, 'Archivo abierto exitosamente.'

  ! Leer y sumar los números del archivo
  DO
    READ(UNIT=unidad, FMT=*, IOSTAT=iostat) numero
    IF (iostat /= 0) EXIT
    suma = suma + numero
  END DO

  ! Cerrar el archivo
  CLOSE(UNIT=unidad)

  ! Imprimir la suma
  PRINT *, 'La suma de los números es:', suma
END PROGRAM SumarNumeros

Retroalimentación y Consejos

  • Error Común: Olvidar cerrar el archivo después de su uso. Siempre asegúrate de cerrar el archivo con CLOSE(UNIT=unidad).
  • Consejo: Utiliza IOSTAT para manejar errores de manera efectiva y evitar que el programa se detenga inesperadamente.

Conclusión

En esta sección, hemos aprendido cómo abrir, leer y cerrar archivos en Fortran. Estos conceptos son fundamentales para manejar datos de manera eficiente en programas científicos y de ingeniería. En la próxima sección, exploraremos cómo escribir datos en archivos, lo que complementará nuestras habilidades de manejo de archivos en Fortran.

© Copyright 2024. Todos los derechos reservados