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>Capítulo</strong> <strong>8.</strong> Sub-Programas e Módulos 89<br />
! Chamada p e l a s u b r o t i n a bascara para t e s t a r se r a í z e s são r e a i s .<br />
!<br />
function t e s t a d i s c ( c2 , c1 , c0 )<br />
implicit none<br />
l o g i c a l : : t e s t a d i s c<br />
! V a r i á v e i s mudas :<br />
real , intent ( in ) : : c0 , c1 , c2<br />
i f ( c1c1 − 4 c0c2 >= 0 . 0 ) then<br />
t e s t a d i s c= . true .<br />
else<br />
t e s t a d i s c= . f a l s e .<br />
end i f<br />
return<br />
end function t e s t a d i s c<br />
! Calcula as r a í z e s r e a i s , caso existam , de um p o l i n ô n i o de grau 2 .<br />
! Usa função t e s t a d i s c .<br />
!<br />
subroutine bascara ( a2 , a1 , a0 , r a i z e s r e a i s , r1 , r2 )<br />
implicit none<br />
! V a r i á v e i s mudas :<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 />
! Função externa :<br />
logical , external : : t e s t a d i s c<br />
! V a r i á v e i s l o c a i s :<br />
real : : d i s c<br />
!<br />
r a i z e s r e a i s= t e s t a d i s c ( a2 , a1 , a0 )<br />
i f ( . not . r a i z e s r e a i s ) return<br />
d i s c= a1a1 − 4 a0a2<br />
r1= 0.5( − a1 − s q r t ( d i s c ) ) / a2<br />
r2= 0.5( − a1 + s q r t ( d i s c ) ) / a2<br />
return<br />
end subroutine bascara<br />
! Calcula as r a í z e s r e a i s de um polinômio de grau 2 .<br />
program bascara2<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 />
!<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 bascara2<br />
Autor: Rudi Gaelzer – IFM/UFPel Impresso: 23 de abril de 2008