24.07.2013 Views

Capítulo 8. Funções e Subrotinas - UFMG

Capítulo 8. Funções e Subrotinas - UFMG

Capítulo 8. Funções e Subrotinas - UFMG

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

FUNCTION INTEGRA(F, LIMITES)<br />

! Integra F(x) de LIMITES(1) a LIMITES(2).<br />

implicit none<br />

REAL, DIMENSION(2), INTENT(IN) :: LIMITES<br />

INTERFACE<br />

FUNCTION F(X)<br />

REAL :: F<br />

REAL, INTENT(IN) :: X<br />

END FUNCTION F<br />

END INTERFACE<br />

...<br />

INTEGRA= <br />

RETURN<br />

END FUNCTION INTEGRA<br />

--------------------------------------------<br />

MODULE FUNC<br />

IMPLICIT NONE<br />

REAL :: YVAL<br />

REAL, DIMENSION(2) :: LIMX, LIMY<br />

CONTAINS<br />

FUNCTION F(XVAL)<br />

REAL :: F<br />

REAL, INTENT(IN) :: XVAL<br />

F= <br />

RETURN<br />

END FUNCTION F<br />

END MODULE FUNC<br />

------------------------------------------<br />

FUNCTION FY(Y)<br />

! Integra em X, para um valor fixo de Y.<br />

USE FUNC<br />

REAL :: FY<br />

REAL, INTENT(IN) :: Y<br />

YVAL= Y<br />

FY= INTEGRA(F, LIMX)<br />

RETURN<br />

END FUNCTION FY<br />

<strong>Capítulo</strong> <strong>8.</strong> Sub-Programas e Módulos 105<br />

Com base nestas três unidades de programa, um programa pode calcular a integral sobre o retângulo no plano<br />

(x, y) através da chamada:<br />

AREA= INTEGRA(FY, LIMY)<br />

<strong>8.</strong>2.15 Atributo e declaração SAVE<br />

A declaração ou o atributo SAVE são utilizados quando se deseja manter o valor de uma variável local em um<br />

sub-programa após a saída. Desta forma, o valor anterior desta variável está acessível quando o sub-programa<br />

é invocado novamente.<br />

Como exemplo, a subrotina abaixo contém as variáveis locais CONTA, a qual conta o número de chamadas da<br />

subrotina e é inicializada a zero e a variável A, que é somada ao valor do argumento.<br />

SUBROUTINE CONTA_SOMA(X)<br />

IMPICIT NONE<br />

REAL, INTENT(IN) :: X<br />

REAL, SAVE :: A<br />

INTEGER :: CONTA= 0 !Inicializa o contador. Mantém o valor da variável.<br />

...<br />

CONTA= CONTA + 1<br />

IF(CONTA == 1)THEN<br />

Autor: Rudi Gaelzer – IFM/UFPel Impresso: 23 de abril de 2008

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!