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.

<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

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

Saved successfully!

Ooh no, something went wrong!