Capítulo 8. Funções e Subrotinas - UFMG
Capítulo 8. Funções e Subrotinas - UFMG
Capítulo 8. Funções e Subrotinas - UFMG
You also want an ePaper? Increase the reach of your titles
YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.
<strong>8.</strong>2.2 Rotinas internas<br />
<strong>Capítulo</strong> <strong>8.</strong> Sub-Programas e Módulos 85<br />
Já foi observado nas seções anteriores que rotinas internas podem ser definidas dentro de quaisquer unidades<br />
de programa. Uma rotina interna possui a seguinte estrutura:<br />
ou<br />
[RECURSIVE] SUBROUTINE [()]<br />
[]<br />
[]<br />
END SUBROUTINE []]<br />
[] [RECURSIVE] FUNCTION () &<br />
[RESULT ()]<br />
[]<br />
[]<br />
END FUNCTION []]<br />
Nota-se agora que as declarações FUNCTION e SUBROUTINE agora são obrigatórias no comando END. Uma determinada<br />
unidade de programa pode conter qualquer número de rotinas internas, porém estas, por sua vez, não<br />
podem conter outras rotinas internas.<br />
Cabe aqui uma menção a respeito da diferença entre uma rotina interna e uma rotina de módulo. Esta<br />
última também é incluída depois da palavra-chave CONTAINS, em um módulo, mas pode conter rotinas internas<br />
a ela.<br />
Uma rotina interna automaticamente tem acesso a todas as entidades do hospedeiro, tais como variáveis, e<br />
possuem também a habilidade de chamar as outras rotinas deste. Contudo, uma determinada rotina interna<br />
não possui acesso às entidades de outra rotina interna.<br />
Um exemplo simples do uso de uma função interna é apresentado a seguir. Note que a variável a é declarada<br />
no programa principal, tornando-se assim uma variável declarada também dentro do âmbito da função<br />
calc_a_raiz:<br />
program r o t i n t<br />
implicit none<br />
real : : x , a<br />
!<br />
print , ”Entre com o v a l o r de x : ”<br />
read , x<br />
print , ”Entre com o v a l o r de a : ”<br />
read , a<br />
print , ”O r e s u l t a d o de a + s q r t ( x ) é : ”<br />
print , c a l c a r a i z ( x )<br />
print , ”O r e s u l t a d o de a + s q r t (1+ x2) é : ”<br />
print , c a l c a r a i z ( 1 . 0 + x2)<br />
CONTAINS<br />
function c a l c a r a i z ( y )<br />
real : : c a l c a r a i z<br />
real , intent ( in ) : : y<br />
c a l c a r a i z= a + s q r t ( y )<br />
return<br />
end function c a l c a r a i z<br />
end program r o t i n t<br />
No restante deste capítulo, serão descritas várias propriedades que se aplicam a sub-programas internos,<br />
externos e a rotinas de módulos.<br />
<strong>8.</strong>2.3 Argumentos de sub-programas<br />
Argumentos de sub-programas fornecem um meio alternativo para que duas unidades de programa compartilhem<br />
os mesmos dados. Estes consistem em uma lista de variáveis escalares ou matriciais, constantes, expressões<br />
escalares ou matriciais e até mesmo os nomes de outras rotinas. Os argumentos de um sub-programa são muitas<br />
Autor: Rudi Gaelzer – IFM/UFPel Impresso: 23 de abril de 2008