Fortran - Hacer bucle de construcción
La construcción do loop permite que una declaración, o una serie de declaraciones, se lleve a cabo de forma iterativa, mientras una condición dada es verdadera.
Sintaxis
La forma general del bucle do es:
do var = start, stop [,step]
! statement(s)
…
end do
Dónde,
la variable de ciclo var debe ser un número entero
inicio es el valor inicial
detener es el valor final
step es el incremento, si se omite, entonces la variable var aumenta en la unidad
Por ejemplo
! compute factorials
do n = 1, 10
nfact = nfact * n
! printing the value of n and its factorial
print*, n, " ", nfact
end do
Diagrama de flujo
Aquí está el flujo de control para la construcción do loop:
El paso inicial se ejecuta primero y solo una vez. Este paso le permite declarar e inicializar cualquier variable de control de bucle. En nuestro caso, la variable var se inicializa con el valor start.
A continuación, se evalúa la condición. Si es cierto, se ejecuta el cuerpo del bucle. Si es falso, el cuerpo del ciclo no se ejecuta y el flujo de control salta a la siguiente instrucción justo después del ciclo. En nuestro caso, la condición es que la variable var alcance su valor final.
Una vez que se ejecuta el cuerpo del bucle, el flujo de control vuelve a la instrucción de incremento. Esta declaración le permite actualizar la variable de control de bucle var.
La condición ahora se evalúa nuevamente. Si es cierto, el ciclo se ejecuta y el proceso se repite (cuerpo del ciclo, luego paso de incremento, y luego condición de nuevo). Una vez que la condición se vuelve falsa, el ciclo termina.
Ejemplo 1
Este ejemplo imprime los números del 11 al 20 -
program printNum
implicit none
! define variables
integer :: n
do n = 11, 20
! printing the value of n
print*, n
end do
end program printNum
Cuando el código anterior se compila y ejecuta, produce el siguiente resultado:
11
12
13
14
15
16
17
18
19
20
Ejemplo 2
Este programa calcula los factoriales de los números del 1 al 10 -
program factorial
implicit none
! define variables
integer :: nfact = 1
integer :: n
! compute factorials
do n = 1, 10
nfact = nfact * n
! print values
print*, n, " ", nfact
end do
end program factorial
Cuando el código anterior se compila y ejecuta, produce el siguiente resultado:
1 1
2 2
3 6
4 24
5 120
6 720
7 5040
8 40320
9 362880
10 3628800