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