En aquest tema, aprendrem com gestionar el posicionament dins dels fitxers en Fortran. Això inclou com moure's a través d'un fitxer per llegir o escriure en posicions específiques. Aquesta habilitat és crucial quan es treballa amb fitxers grans o quan es necessita accedir a dades en ubicacions específiques sense llegir tot el fitxer.

Conceptes Clau

  1. Posicionament de Fitxers: La capacitat de moure el punter de fitxer a una ubicació específica.
  2. Unitats de Fitxer: Identificadors que Fortran utilitza per referir-se als fitxers oberts.
  3. Comandes de Posicionament: Instruccions per moure el punter de fitxer.

Comandes de Posicionament

REWIND

La comanda REWIND es fa servir per moure el punter de fitxer al començament del fitxer.

REWIND(unit)
  • unit: El número de la unitat de fitxer.

Exemple:

OPEN(UNIT=10, FILE='dades.txt', STATUS='OLD')
REWIND(10)

BACKSPACE

La comanda BACKSPACE mou el punter de fitxer una línia enrere.

BACKSPACE(unit)
  • unit: El número de la unitat de fitxer.

Exemple:

OPEN(UNIT=10, FILE='dades.txt', STATUS='OLD')
BACKSPACE(10)

ENDFILE

La comanda ENDFILE mou el punter de fitxer al final del fitxer.

ENDFILE(unit)
  • unit: El número de la unitat de fitxer.

Exemple:

OPEN(UNIT=10, FILE='dades.txt', STATUS='OLD')
ENDFILE(10)

Exemple Pràctic

A continuació, es mostra un exemple pràctic que utilitza les comandes de posicionament per llegir i escriure en un fitxer.

PROGRAM FilePositioning
  IMPLICIT NONE
  INTEGER :: unit, i
  CHARACTER(LEN=20) :: line

  ! Obrir el fitxer
  unit = 10
  OPEN(UNIT=unit, FILE='dades.txt', STATUS='OLD')

  ! Llegir la primera línia
  READ(unit, '(A)') line
  PRINT *, 'Primera línia: ', TRIM(line)

  ! Moure el punter al començament del fitxer
  REWIND(unit)

  ! Llegir la primera línia de nou
  READ(unit, '(A)') line
  PRINT *, 'Primera línia després de REWIND: ', TRIM(line)

  ! Moure el punter una línia enrere
  BACKSPACE(unit)

  ! Llegir la línia anterior
  READ(unit, '(A)') line
  PRINT *, 'Línia després de BACKSPACE: ', TRIM(line)

  ! Moure el punter al final del fitxer
  ENDFILE(unit)

  ! Escriure una nova línia al final del fitxer
  WRITE(unit, '(A)') 'Nova línia al final del fitxer'

  ! Tancar el fitxer
  CLOSE(unit)
END PROGRAM FilePositioning

Exercicis Pràctics

Exercici 1

  1. Crea un fitxer de text anomenat exercici1.txt amb el següent contingut:

    Línia 1
    Línia 2
    Línia 3
    
  2. Escriu un programa en Fortran que:

    • Obri el fitxer exercici1.txt.
    • Llegeixi i imprimeixi la segona línia.
    • Escrigui una nova línia després de la segona línia.
    • Tanqui el fitxer.

Solució:

PROGRAM Exercici1
  IMPLICIT NONE
  INTEGER :: unit
  CHARACTER(LEN=20) :: line

  ! Obrir el fitxer
  unit = 10
  OPEN(UNIT=unit, FILE='exercici1.txt', STATUS='OLD')

  ! Llegir la primera línia
  READ(unit, '(A)') line

  ! Llegir la segona línia
  READ(unit, '(A)') line
  PRINT *, 'Segona línia: ', TRIM(line)

  ! Escriure una nova línia després de la segona línia
  WRITE(unit, '(A)') 'Nova línia després de la segona línia'

  ! Tancar el fitxer
  CLOSE(unit)
END PROGRAM Exercici1

Exercici 2

  1. Crea un fitxer de text anomenat exercici2.txt amb el següent contingut:

    Dada 1
    Dada 2
    Dada 3
    
  2. Escriu un programa en Fortran que:

    • Obri el fitxer exercici2.txt.
    • Mogi el punter al final del fitxer.
    • Escrigui una nova dada al final del fitxer.
    • Tanqui el fitxer.

Solució:

PROGRAM Exercici2
  IMPLICIT NONE
  INTEGER :: unit

  ! Obrir el fitxer
  unit = 10
  OPEN(UNIT=unit, FILE='exercici2.txt', STATUS='OLD')

  ! Moure el punter al final del fitxer
  ENDFILE(unit)

  ! Escriure una nova dada al final del fitxer
  WRITE(unit, '(A)') 'Nova dada al final del fitxer'

  ! Tancar el fitxer
  CLOSE(unit)
END PROGRAM Exercici2

Conclusió

En aquesta secció, hem après com utilitzar les comandes de posicionament de fitxers en Fortran per moure el punter de fitxer a ubicacions específiques. Aquestes habilitats són essencials per gestionar fitxers de manera eficient, especialment quan es treballa amb grans volums de dades. Hem vist exemples pràctics i hem proporcionat exercicis per reforçar els conceptes apresos. En la següent secció, explorarem les operacions amb fitxers binaris.

© Copyright 2024. Tots els drets reservats