Els bucles són una part fonamental de qualsevol llenguatge de programació, ja que permeten repetir un bloc de codi diverses vegades. En Fortran, hi ha diverses estructures de control de bucles que podem utilitzar per aconseguir aquest comportament. En aquesta secció, explorarem els bucles DO, DO WHILE i FORALL.

Bucles DO

El bucle DO és el més comú en Fortran. Permet repetir un bloc de codi un nombre determinat de vegades.

Sintaxi

DO variable = inici, final, increment
    ! Bloc de codi a repetir
END DO
  • variable: Variable de control del bucle.
  • inici: Valor inicial de la variable de control.
  • final: Valor final de la variable de control.
  • increment: Valor pel qual s'incrementa la variable de control en cada iteració (opcional, per defecte és 1).

Exemple

PROGRAM bucle_do
    INTEGER :: i

    DO i = 1, 10
        PRINT *, "Valor de i: ", i
    END DO
END PROGRAM bucle_do

En aquest exemple, el bucle DO imprimeix els valors de i des de 1 fins a 10.

Bucles DO WHILE

El bucle DO WHILE repeteix un bloc de codi mentre una condició sigui certa.

Sintaxi

DO WHILE (condició)
    ! Bloc de codi a repetir
END DO
  • condició: Condició lògica que es verifica abans de cada iteració.

Exemple

PROGRAM bucle_do_while
    INTEGER :: i

    i = 1
    DO WHILE (i <= 10)
        PRINT *, "Valor de i: ", i
        i = i + 1
    END DO
END PROGRAM bucle_do_while

En aquest exemple, el bucle DO WHILE imprimeix els valors de i des de 1 fins a 10.

Bucles FORALL

El bucle FORALL és utilitzat per operacions en arrays i permet especificar una operació que s'aplica a tots els elements d'un array.

Sintaxi

FORALL (índex = inici:final:increment)
    ! Operació amb arrays
END FORALL
  • índex: Variable de control del bucle.
  • inici: Valor inicial de la variable de control.
  • final: Valor final de la variable de control.
  • increment: Valor pel qual s'incrementa la variable de control en cada iteració (opcional, per defecte és 1).

Exemple

PROGRAM bucle_forall
    INTEGER, DIMENSION(10) :: array
    INTEGER :: i

    FORALL (i = 1:10)
        array(i) = i * i
    END FORALL

    PRINT *, "Array: ", array
END PROGRAM bucle_forall

En aquest exemple, el bucle FORALL assigna a cada element de l'array el quadrat del seu índex.

Exercicis Pràctics

Exercici 1

Escriu un programa que calculi la suma dels primers 100 nombres naturals utilitzant un bucle DO.

Solució

PROGRAM suma_nombres
    INTEGER :: i, suma

    suma = 0
    DO i = 1, 100
        suma = suma + i
    END DO

    PRINT *, "La suma dels primers 100 nombres naturals és: ", suma
END PROGRAM suma_nombres

Exercici 2

Escriu un programa que imprimeixi els nombres parells entre 1 i 20 utilitzant un bucle DO WHILE.

Solució

PROGRAM nombres_parells
    INTEGER :: i

    i = 2
    DO WHILE (i <= 20)
        PRINT *, "Nombre parell: ", i
        i = i + 2
    END DO
END PROGRAM nombres_parells

Exercici 3

Escriu un programa que multipliqui cada element d'un array per 2 utilitzant un bucle FORALL.

Solució

PROGRAM multiplica_array
    INTEGER, DIMENSION(5) :: array = (/1, 2, 3, 4, 5/)
    INTEGER :: i

    FORALL (i = 1:5)
        array(i) = array(i) * 2
    END FORALL

    PRINT *, "Array multiplicat per 2: ", array
END PROGRAM multiplica_array

Resum

En aquesta secció, hem après sobre les estructures de control de bucles en Fortran, incloent els bucles DO, DO WHILE i FORALL. Hem vist la sintaxi de cada tipus de bucle i hem treballat amb exemples pràctics per entendre millor el seu funcionament. Els exercicis pràctics proporcionats ajuden a reforçar els conceptes apresos i a aplicar-los en situacions reals. En la següent secció, explorarem més sobre arrays i cadenes en Fortran.

© Copyright 2024. Tots els drets reservats