En aquest tema, aprendrem com llegir dades des de fitxers en Fortran. La gestió de fitxers és una habilitat essencial per a qualsevol programador, ja que permet treballar amb dades externes de manera eficient. Veurem com obrir fitxers, llegir-ne el contingut i tancar-los correctament.

Conceptes Clau

  1. Obrir un Fitxer: Utilitzem la instrucció OPEN per obrir un fitxer.
  2. Llegir Dades: Utilitzem la instrucció READ per llegir dades del fitxer.
  3. Tancar un Fitxer: Utilitzem la instrucció CLOSE per tancar el fitxer després de llegir-lo.

Sintaxi Bàsica

Obrir un Fitxer

OPEN(unit=unit_number, file='filename', status='old', action='read')
  • unit_number: Un número d'unitat que identifica el fitxer.
  • filename: El nom del fitxer que volem obrir.
  • status: Indica l'estat del fitxer. old significa que el fitxer ja existeix.
  • action: Indica l'acció que volem realitzar. read significa que volem llegir el fitxer.

Llegir Dades

READ(unit_number, *) variable
  • unit_number: El número d'unitat del fitxer obert.
  • variable: La variable on es guardaran les dades llegides.

Tancar un Fitxer

CLOSE(unit=unit_number)
  • unit_number: El número d'unitat del fitxer que volem tancar.

Exemple Pràctic

Suposem que tenim un fitxer anomenat dades.txt amb el següent contingut:

10
20
30
40
50

Volem llegir aquests números i imprimir-los a la pantalla.

Codi

PROGRAM LlegirFitxer
  IMPLICIT NONE
  INTEGER :: unit_number, i, estat
  INTEGER, DIMENSION(5) :: dades

  unit_number = 10

  ! Obrir el fitxer
  OPEN(unit=unit_number, file='dades.txt', status='old', action='read', iostat=estat)
  IF (estat /= 0) THEN
    PRINT *, 'Error obrint el fitxer'
    STOP
  END IF

  ! Llegir les dades
  DO i = 1, 5
    READ(unit_number, *) dades(i)
  END DO

  ! Tancar el fitxer
  CLOSE(unit=unit_number)

  ! Imprimir les dades
  PRINT *, 'Les dades llegides són:'
  DO i = 1, 5
    PRINT *, dades(i)
  END DO

END PROGRAM LlegirFitxer

Explicació del Codi

  1. Declaració de Variables:

    • unit_number: Número d'unitat per identificar el fitxer.
    • i: Variable de control per al bucle.
    • estat: Variable per emmagatzemar l'estat de l'operació d'obertura del fitxer.
    • dades: Array per emmagatzemar les dades llegides.
  2. Obrir el Fitxer:

    • Utilitzem OPEN per obrir el fitxer dades.txt amb el número d'unitat 10.
    • iostat=estat emmagatzema l'estat de l'operació. Si estat no és zero, significa que hi ha hagut un error.
  3. Llegir les Dades:

    • Utilitzem un bucle DO per llegir cinc números del fitxer i emmagatzemar-los a l'array dades.
  4. Tancar el Fitxer:

    • Utilitzem CLOSE per tancar el fitxer.
  5. Imprimir les Dades:

    • Utilitzem un altre bucle DO per imprimir les dades llegides.

Exercici Pràctic

Exercici

Crea un programa que llegeixi un fitxer anomenat temperatures.txt que conté temperatures diàries (una per línia) i calculi la temperatura mitjana.

Solució

PROGRAM TemperaturaMitjana
  IMPLICIT NONE
  INTEGER :: unit_number, i, estat, count
  REAL :: suma, mitjana, temperatura

  unit_number = 10
  suma = 0.0
  count = 0

  ! Obrir el fitxer
  OPEN(unit=unit_number, file='temperatures.txt', status='old', action='read', iostat=estat)
  IF (estat /= 0) THEN
    PRINT *, 'Error obrint el fitxer'
    STOP
  END IF

  ! Llegir les temperatures i calcular la suma
  DO
    READ(unit_number, *, IOSTAT=estat) temperatura
    IF (estat /= 0) EXIT
    suma = suma + temperatura
    count = count + 1
  END DO

  ! Tancar el fitxer
  CLOSE(unit=unit_number)

  ! Calcular la mitjana
  IF (count > 0) THEN
    mitjana = suma / count
    PRINT *, 'La temperatura mitjana és:', mitjana
  ELSE
    PRINT *, 'No s\'han llegit temperatures'
  END IF

END PROGRAM TemperaturaMitjana

Explicació de la Solució

  1. Declaració de Variables:

    • unit_number, i, estat, count: Variables de control.
    • suma, mitjana, temperatura: Variables per emmagatzemar les temperatures i calcular la mitjana.
  2. Obrir el Fitxer:

    • Obrim el fitxer temperatures.txt amb el número d'unitat 10.
  3. Llegir les Temperatures:

    • Utilitzem un bucle DO per llegir les temperatures fins que es produeixi un error (final del fitxer).
    • suma acumula les temperatures llegides.
    • count compta el nombre de temperatures llegides.
  4. Tancar el Fitxer:

    • Tanquem el fitxer.
  5. Calcular la Mitjana:

    • Si count és major que zero, calculem la mitjana i la imprimim.
    • Si no s'han llegit temperatures, imprimim un missatge indicant-ho.

Conclusió

En aquest tema, hem après com llegir dades des de fitxers en Fortran. Hem vist com obrir un fitxer, llegir-ne el contingut i tancar-lo correctament. També hem practicat amb un exemple pràctic i un exercici per reforçar els conceptes apresos. En el següent tema, veurem com escriure dades a fitxers.

© Copyright 2024. Tots els drets reservats