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
- Obrir un Fitxer: Utilitzem la instrucció
OPENper obrir un fitxer. - Llegir Dades: Utilitzem la instrucció
READper llegir dades del fitxer. - Tancar un Fitxer: Utilitzem la instrucció
CLOSEper tancar el fitxer després de llegir-lo.
Sintaxi Bàsica
Obrir un Fitxer
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.oldsignifica que el fitxer ja existeix.action: Indica l'acció que volem realitzar.readsignifica que volem llegir el fitxer.
Llegir Dades
unit_number: El número d'unitat del fitxer obert.variable: La variable on es guardaran les dades llegides.
Tancar un Fitxer
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:
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 LlegirFitxerExplicació del Codi
-
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.
-
Obrir el Fitxer:
- Utilitzem
OPENper obrir el fitxerdades.txtamb el número d'unitat10. iostat=estatemmagatzema l'estat de l'operació. Siestatno és zero, significa que hi ha hagut un error.
- Utilitzem
-
Llegir les Dades:
- Utilitzem un bucle
DOper llegir cinc números del fitxer i emmagatzemar-los a l'arraydades.
- Utilitzem un bucle
-
Tancar el Fitxer:
- Utilitzem
CLOSEper tancar el fitxer.
- Utilitzem
-
Imprimir les Dades:
- Utilitzem un altre bucle
DOper imprimir les dades llegides.
- Utilitzem un altre bucle
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 TemperaturaMitjanaExplicació de la Solució
-
Declaració de Variables:
unit_number,i,estat,count: Variables de control.suma,mitjana,temperatura: Variables per emmagatzemar les temperatures i calcular la mitjana.
-
Obrir el Fitxer:
- Obrim el fitxer
temperatures.txtamb el número d'unitat10.
- Obrim el fitxer
-
Llegir les Temperatures:
- Utilitzem un bucle
DOper llegir les temperatures fins que es produeixi un error (final del fitxer). sumaacumula les temperatures llegides.countcompta el nombre de temperatures llegides.
- Utilitzem un bucle
-
Tancar el Fitxer:
- Tanquem el fitxer.
-
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.
- Si
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.
Curs de Programació en Fortran
Mòdul 1: Introducció a Fortran
- Introducció a Fortran
- Configuració de l'Entorn de Desenvolupament
- Sintaxi i Estructura Bàsiques
- Escrivint el teu Primer Programa en Fortran
Mòdul 2: Conceptes Bàsics
- Variables i Tipus de Dades
- Operadors i Expressions
- Entrada i Sortida
- Estructures de Control: Sentències If
- Estructures de Control: Bucles
Mòdul 3: Arrays i Cadenes
Mòdul 4: Procediments i Funcions
Mòdul 5: Estructures de Dades Avançades
Mòdul 6: Gestió de Fitxers
Mòdul 7: Temes Avançats
Mòdul 8: Millors Pràctiques i Optimització
- Tècniques d'Optimització de Codi
- Depuració i Perfilat
- Escrivint Codi Mantenible
- Estàndards i Portabilitat de Fortran
