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.

<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

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

Saved successfully!

Ooh no, something went wrong!