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.

116 <strong>8.</strong>3. Módulos<br />

Outra maneira de se estabelecer o controle de acesso é através de declarações, as quais listam os nomes dos<br />

objetos que são públicos ou privados:<br />

PUBLIC :: X, Y, Z<br />

PRIVATE :: U, V, W<br />

A forma geral da declaração é:<br />

PUBLIC [[::] ]<br />

PRIVATE [[::] ]<br />

Caso nenhum controle é estabelecido em um módulo, seja através de um atributo ou de uma declaração, todas<br />

as entidades têm o atributo PUBLIC.<br />

Se uma declaração PUBLIC ou PRIVATE não possui uma lista de entidades, esta confirma ou altera o acesso<br />

padrão. Assim, a declaração<br />

PUBLIC<br />

confirma o acesso padrão, ao passo que a declaração<br />

PRIVATE<br />

altera o acesso padrão. Desta forma, uma seqüência de declarações como as abaixo:<br />

...<br />

PRIVATE<br />

PUBLIC <br />

...<br />

confere aos nomes na o atributo PUBLIC enquanto que todas as entidades restantes no módulo<br />

são privadas, podendo ser acessadas somente dentro do âmbito do módulo.<br />

<strong>8.</strong>3.4 Interfaces e rotinas genéricas<br />

Outro recurso poderoso introduzido pelo Fortran 90 é a habilidade do programador definir suas próprias<br />

rotinas genéricas, de tal forma que um único nome é suficiente para invocar uma determinada rotina, enquanto<br />

que a ação que realmente é executada quando este nome é usado depende do tipo de seus argumentos. Embora<br />

possam ser declaradas em quaisquer unidades de programa, rotinas genéricas são usualmente definidas em<br />

módulos.<br />

Uma rotina genérica é definido usando-se um bloco interfaces e um nome genérico é usado para todas as<br />

rotinas definidas dentro deste bloco de interfaces. Assim, a forma geral é:<br />

INTERFACE <br />

<br />

<br />

...<br />

END INTERFACE <br />

onde , etc, são os blocos das interfaces das rotinas específicas, isto<br />

é, que se referem a um dado conjunto de tipos de variáveis, e que são acessadas através do .<br />

As rotinas per se podem se encontrar em outras unidades; por exemplo, elas podem ser rotinas externas. O uso<br />

do no final do bloco somente é permitido a partir do Fortran 95.<br />

Como um módulo é a unidade de programa ideal para armazenar todas estas rotinas específicas relacionadas<br />

entre si e como as interfaces das rotinas de módulo são sempre explícitas, estas rotinas genéricas são, em geral,<br />

definidas dentro de módulos. Neste caso, a declaração<br />

MODULE PROCEDURE <br />

é incluída no bloco de interface para nomear as rotinas de módulo que são referidas através do nome genérico.<br />

Assim, a declaração geral é:<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!