F90: O uso do COMMON

From AdonaiMedrado.Pro.Br
Jump to: navigation, search
PROGRAM aula
        !Este é um programa didático, com o objetivo de mostrar o uso de COMMON.
        !Acredito que a forma mais recomendada de ser resolvido este problema é através de
        !um parâmetro passado para as funções RetornarArea e RetornarVolume e não
        !através do uso do COMMON
	IMPLICIT NONE
	REAL, PARAMETER :: pi = 3.14159265
	CALL ObterRaio()
	WRITE (*,"(A,F10.2)") "A área da superfície da esfera é ",RetornarArea()
	WRITE (*,"(A,F10.2)") "O volume da esfera é ",RetornarVolume()
CONTAINS
	SUBROUTINE ObterRaio()
		IMPLICIT NONE
		INTEGER :: E
		REAL :: raio
		COMMON raio
		WRITE (*,*) "Digite o valor do raio da esfera:"
		DO
			READ (*,*,IOstat=E) raio
			IF (E>0) THEN
				WRITE (*,*) "Valor inválido. O raio deve ser um valor real."
			ELSE
				EXIT
			END IF
		END DO
	END SUBROUTINE
	REAL FUNCTION RetornarArea()
		IMPLICIT NONE
		REAL :: raio
		COMMON raio
		RetornarArea = 4*pi*(raio**2)
	END FUNCTION
	REAL FUNCTION RetornarVolume()
		IMPLICIT NONE
		REAL :: raio
		COMMON raio
		RetornarVolume = (4/REAL(3))*pi*(raio**3)
	END FUNCTION
END PROGRAM