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

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

92 <strong>8.</strong>2. sub-programas<br />

! Calcula as r a í z e s r e a i s de um polinômio de grau 2 .<br />

program bascara3<br />

implicit none<br />

l o g i c a l : : c o n t r o l e<br />

real : : a , b , c<br />

real : : x1 , x2 ! Raízes r e a i s .<br />

INTERFACE<br />

subroutine bascara ( a2 , a1 , a0 , r a i z e s r e a i s , r1 , r2 )<br />

real , intent ( in ) : : a0 , a1 , a2<br />

logical , intent ( out ) : : r a i z e s r e a i s<br />

real , intent ( out ) : : r1 , r2<br />

end subroutine bascara<br />

END INTERFACE<br />

!<br />

do<br />

print , ”Entre com os v a l o r e s dos c o e f i c i e n t e s ( a , b , c ) , ”<br />

print , ”onde ax2 + bx + c . ”<br />

read , a , b , c<br />

c a l l bascara ( a , b , c , c o n t r o l e , x1 , x2 )<br />

i f ( c o n t r o l e ) then<br />

print , ”As r a í z e s ( r e a i s ) são : ”<br />

print , ”x1=” , x1<br />

print , ”x2=” , x2<br />

exit<br />

else<br />

print , ”As r a í z e s são complexas . Tente novamente . ”<br />

end i f<br />

end do<br />

end program bascara3<br />

para evitar confusão entre os mesmos. A grande vantagem no uso de palavras-chave está em que não é necessário<br />

lembrar a ordem dos argumentos. Contudo, é necessário conhecer os nomes dos argumentos mudos definidos no<br />

campo de declarações da rotina.<br />

Por exemplo, dada a seguinte função interna:<br />

...<br />

CONTAINS<br />

FUNCTION AREA(INICIO, FINAL, TOL)<br />

REAL :: AREA<br />

REAL, INTENT(IN) :: INICIO, FINAL, TOL<br />

...<br />

END FUNCTION AREA<br />

esta pode ser chamada por quaisquer uma das três seguintes atribuições:<br />

A= AREA(0.0, 100.0, 1.0E-5)<br />

B= AREA(INICIO= 0.0, TOL= 1.0E-5, FINAL= 100.0)<br />

C= AREA(0.0, TOL= 1.0E-5, FINAL= 100.0)<br />

VALOR= 100.0<br />

ERRO= 1.0E-5<br />

D= AREA(0.0, TOL= ERRO, FINAL= VALOR)<br />

onde A, B, C e D são variáveis declaradas previamente como reais. Todos os argumentos antes da primeira palavrachave<br />

devem estar ordenados na ordem definida pela função. Contudo, se uma palavra-chave é utilizada, esta<br />

não necessita estar na ordem da definição. Além disso, o valor atribuído ao argumento mudo pode ser uma<br />

constante, uma variável ou uma expressão, desde que a interface seja obedecida. Depois que uma palavrachave<br />

é utilizada pela primeira vez, todos os argumentos restantes também devem ser transferidos através de<br />

palavras-chave. Conseqüentemente, a seguinte chamada não é válida:<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!