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ó
OPEN
per obrir un fitxer. - Llegir Dades: Utilitzem la instrucció
READ
per llegir dades del fitxer. - Tancar un Fitxer: Utilitzem la instrucció
CLOSE
per 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.old
significa que el fitxer ja existeix.action
: Indica l'acció que volem realitzar.read
significa 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 LlegirFitxer
Explicació 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
OPEN
per obrir el fitxerdades.txt
amb el número d'unitat10
. iostat=estat
emmagatzema l'estat de l'operació. Siestat
no és zero, significa que hi ha hagut un error.
- Utilitzem
-
Llegir les Dades:
- Utilitzem un bucle
DO
per llegir cinc números del fitxer i emmagatzemar-los a l'arraydades
.
- Utilitzem un bucle
-
Tancar el Fitxer:
- Utilitzem
CLOSE
per tancar el fitxer.
- Utilitzem
-
Imprimir les Dades:
- Utilitzem un altre bucle
DO
per 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 TemperaturaMitjana
Explicació 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.txt
amb el número d'unitat10
.
- Obrim el fitxer
-
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.
- 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