Capítulo 8. Funções e Subrotinas - UFMG
Capítulo 8. Funções e Subrotinas - UFMG
Capítulo 8. Funções e Subrotinas - UFMG
Create successful ePaper yourself
Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.
<strong>Capítulo</strong> <strong>8.</strong> Sub-Programas e Módulos 83<br />
Caso haja vários comandos STOP em uma mesma unidade, estes podem ser distingüidos por um código de<br />
acesso, que se trata de uma constante de caractere ou uma string de até 5 dígitos. Isto originará uma mensagem<br />
na saída padrão indicando o ponto onde a execução foi terminada. A seguir, dois exemplos deste caso:<br />
STOP ’Dados incompletos. Programa interrompido.’<br />
STOP 12345<br />
<strong>8.</strong>1.2 Rotinas externas<br />
Rotinas externas são chamadas de dentro de um programa principal ou de outra unidade, usualmente com o<br />
intuito de executar uma tarefa bem definida dentro dos objetivos cumpridos pelo programa completo. Rotinas<br />
externas são escritas em arquivos distintos, separados do arquivo do programa principal.<br />
Durante o processo de criação do programa executável, estas rotinas podem ser compiladas conjuntamente<br />
com o programa principal ou em separado. Nesta última situação, os programas objetos criados durante compilações<br />
prévias das rotinas externas são linkados junto com o programa objeto do programa principal. Embora<br />
seja possível colocar-se mais de uma rotina externa no mesmo arquivo, esta prática não é recomendada.<br />
<strong>8.</strong>1.3 Módulos<br />
O terceiro tipo de unidade de programa, exclusivo no Fortran 90/95, é o módulo. Trata-se de uma maneira<br />
de se agrupar dados globais, tipos derivados e suas operações associadas, blocos de interface, grupos NAMELIST<br />
(seção 9.2) e rotinas internas. Tudo associado com uma determinada tarefa pode ser coletado dentro de um<br />
módulo e acessado quando necessário. Aquelas partes que são restritas ao funcionamento interno da tarefa e não<br />
são do interesse direto do programador podem ser feitas “invisíveis” a este, o que permite que o funcionamento<br />
interno do módulo possa ser alterado sem a necessidade de alterar o programa que o usa, prevenindo-se assim<br />
alteração acidental dos dados.<br />
Um módulo tem a seguinte forma:<br />
MODULE <br />
<br />
[CONTAINS<br />
<br />
END [MODULE []]<br />
Assim como para END PROGRAM, é recomendado o uso da forma completa do comando END.<br />
Uma discussão mais extensa acerca dos módulos em Fortran 90/95 será feita na seção <strong>8.</strong>3.<br />
<strong>8.</strong>2 sub-programas<br />
sub-programas podem ser subrotinas ou funções. Como já foi mencionado, tarefas que podem ser delimitadas<br />
por um número finito de operações e que devem ser realizadas repetidas vezes durante a execução de um programa<br />
devem ser escritas como sub-programas.<br />
Uma função retorna um único valor, o qual pode ser um escalar ou uma matriz, e esta usualmente não<br />
altera os valores de seus argumentos 2 . Neste sentido, uma função em Fortran age como uma função em análise<br />
matemática. Já uma subrotina pode executar uma tarefa mais complexa e retornar diversos valores através de<br />
seus argumentos, os quais podem ser modificados ao longo da computação da subrotina.<br />
<strong>8.</strong>2.1 <strong>Funções</strong> e subrotinas<br />
Exceto pela declaração inicial, os sub-programas apresentam uma forma semelhante a de um programa<br />
principal. Um sub-programa pode ser uma subrotina:<br />
[PURE] [ELEMENTAL] [RECURSIVE] SUBROUTINE [()]<br />
[]<br />
[]<br />
2 Situações onde este requisito pode ser relaxado e como estabelecer salvaguardas são discutidas na seção <strong>8.</strong>2.16.<br />
Autor: Rudi Gaelzer – IFM/UFPel Impresso: 23 de abril de 2008