3.5.4 Comando do infinito

Ideia da construção do bloco do $do$ infinito. Como é necessário o uso do comando $if$, é interessante que esta parte seja apresentada após o comando $if$.

!contador inteiro
n=0
do
	n = n + 1
	!(o que se deseja calcular)
	!(condicao de parada e saida do "do implicito")
	if ("condicao satisfeita") exit
end do

Vamos contruir novamente o programa para o cálculo de 4 fatorial,

$\displaystyle 4\! = 4 \times 3 \times 2 \times 1 = 24$ (3.5.2)

Escreva um programa que calcule o fatorial de um número, agora com o $do$ infinito. O exemplo acima é simples, mas e se tivéssemos que calcular $1000.0 !$, você pode fazer o programa utilizando o $do$ infinito. Escreva o programa prog6b.f90

program prog6b
implicit none
!
integer :: i,n,fatorial
!
fatorial = 1
n = 4
i=0
!
do
	i = i + 1
	fatorial = fatorial * i
	if ( i == n ) exit
end do
!
write(*,*) 'Fatorial de',n,'=',fatorial
!
stop
end program prog6b

o programa acima calcula o fatorial da variável n, então esse valor pode ser alterado quantas vez for necessário, lembrando que para cada valor o programa tem que ser compilado novamente.

A estrutura do do infinito não impõe nenhum condição inicial e/ou final como no caso do do explícito (que impõe condição inicial e final) e o do while (que impõe somente um condição qeu pode ser atingida a qualquer momento dependendo da estrutura do programa).

program dw
implicit none
!
integer:: i, n
!
i=1; n=5
!
do
	write(*,*) i
	i=i+1
	if(i > n)exit
end do
!
stop
end program dw

O fluxograma pode ser construído de mais de uma forma para exemplificar algo mais próximo do do infinito, uma forma é a apresentada na figura 3.4

Figura 3.4: Exemplo do fluxograma para o laço do while.
Image laco-do-infinito