Como usar ponteiros em Fortran

Escrito por selma leathem | Traduzido por josé fabián
  • Compartilhar
  • Tweetar
  • Compartilhar
  • Pin
  • E-mail
Como usar ponteiros em Fortran
Ponteiros em Fortran (arrow image by Edsweb from Fotolia.com)

Os ponteiros são um tipo de variável que aponta a outra variável onde há dados guardados, em vez de conter os dados em si. Os ponteiros são úteis quando os dados que serão usados ou manipulados não se conhecem antes da execução. Isto acontece quando as entidades de dados são criadas ou destruídas dinamicamente e não se sabe com antecipação quantos destes eventos acontecerão. Os ponteiros também são úteis para trabalhar com listas. Por exemplo, se você tem uma lista de elementos para ordenar, pode ordenar uma lista de ponteiros aos dados, em vez de trabalhar com dados em si. Isto tem a vantagem de fazer muito menos processamento, pois os ponteiros usam muito menos memória.

Nível de dificuldade:
Moderado

Outras pessoas estão lendo

Instruções

  1. 1

    Declare o ponteiro. A forma geral da sentença é

    especificador de tipo, lista de atributos, POINTER :: lista de variáveis

    O especificador de tipo inclui objetos, tanto de tipo intrínseco, quanto de tipo derivado. A seguinte sentença é um exemplo de uma declaração de tipo intrínseco

    REAL, POINTER :: p

    No entanto,

    TYPE(pessoa) , POINTER :: q

    é um exemplo de uma declaração de tipo derivado. Para declarar um ponteiro a uma lista, você deve especificar a quantidade de dimensões. Por exemplo,

    REAL, DIMENSION(:,:) , POINTER :: lista_1

    aponta a uma lista de números reais de duas dimensões.

  2. 2

    Declare as variáveis que têm ponteiros a elas. Em Fortran, você não pode apontar a uma variável a qual não tem permissão para apontar. Para fazer isto, você deve adicionar o atributo TARGET à declaração da variável. Por exemplo,

    REAL , TARGET :: c

    permite que os ponteiros apontem a esta variável real. Pode existir mais de um ponteiro apontando à mesma variável.

  3. 3

    Aponte às variáveis desejadas usando a declaração de designação, que tem a forma

    variável de ponteiro => variável alvo

    Por exemplo, as sentenças

    REAL , TARGET :: a REAL, POINTER :: p p => a

    fazem com que o ponteiro p aponte à variável real a.

  4. 4

    Use o ponteiro em uma expressão no lugar da variável à qual aponta. Isto é chamado de "dereferencing" ("desreferência"). O dereferencing se produz quando un ponteiro é tratado como o objeto ao qual aponta. Por exemplo, em

    REAL, POINTER :: p,q REAL, TARGET :: x=2.0, y=3.0 p => x q => y p = q + 1 p = q p => q

    a equação p=q+1 é equivalente à sentença x=y+1, então x toma o valor 4.0 enquanto p não sofre alterações. A sentença p=q dá a x o valor de y, mas novamente p fica sem alterações. A sentença final p=q faz com que o ponteiro p aponte para y.

  5. 5

    Quebre a associação do ponteiro com a variável-alvo depois de usá-lo. Pode-se fazer isto com a sentença NULLIFY para que o ponteiro não aponte para outra variável. A sintaxe é a seguinte:

    p=>x NULLIFY(p)

Dicas & Advertências

  • Os ponteiros também podem ser criados e destruídos dinamicamente usando as sentenças ALLOCATE e DEALLOCATE. Por exemplo, em
  • REAL, POINTER :: p, q
  • ALLOCATE(p)
  • q=>p
  • NULLIFY(q)
  • DEALLOCATE(p)
  • a sentença NULLIFY quebra a associação entre q e p antes de que p seja destruída. Se esta associação não for quebrada antes, q fica apontando para um espaço que não é mais acessível ao programa.

Não perca

Filtro:
  • Geral
  • Artigos
  • Slides
  • Vídeos
Mostrar:
  • Mais relevantes
  • Mais lidos
  • Mais recentes

Nenhum artigo disponível

Nenhum slide disponível

Nenhum vídeo disponível