1 / 18

FORTRAN 90

FORTRAN 90. Denise Yumi Takamura. SUBPROGRAMAS. Um subprograma é uma unidade de programa independente. Sua execução é subordinada ao programa principal ou a uma outra unidade de programa. A linguagem FORTRAN 90 permite dois tipos de subprogramas: FUNÇÕES E SUB-ROTINAS . FUNÇÕES.

chill
Télécharger la présentation

FORTRAN 90

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. FORTRAN 90 Denise Yumi Takamura

  2. SUBPROGRAMAS Um subprograma é uma unidade de programa independente. Sua execução é subordinada ao programa principal ou a uma outra unidade de programa. A linguagem FORTRAN 90 permite dois tipos de subprogramas: FUNÇÕESESUB-ROTINAS.

  3. FUNÇÕES Uma função é um procedimento que resulta em um número, valor lógico, string ou array. A função é chamada pelo nome de uma expressão. Sua execução começa no topo da função e termina quando há a declaração RETURN ou um END FUNCTION. .

  4. SUB-ROTINAS Sub-rotina não retorna necessariamente apenas um valor, como no caso das funções; nenhum valor é associado a sub-rotina. SUBROUTINE nome (lista de parâmetros)

  5. Para chamar a sub-rotina, usa-se o comando CALL. CALL nome (lista de parâmetros) Para retornar a sub-rotina usa-se a declaração END SUBROUTINE. Ex: Subroutine hipotenusa

  6. DUMMY ARGUMENTS A lista de argumentos pode conter variáveis, arrays ou ambos que são passados pela chamada do programa para a sub- rotina. Estas variáveis são chamadas “dummy arguments” desde que a sub-rotina não aloque nenhuma memória para elas.

  7. PASSAGEM POR REFERÊNCIA Nessa implementação, em vez de transmitir valores de dados, ela transmite um caminho de acesso, usualmente apenas um endereço, para o subprograma chamado. Ex: Program bad_call

  8. PROGRAM bad_callIMPLICIT NONEREAL :: x=1CALL bad_argument(x)END PROGRAMSUBROUTINE bad_argument (i)IMPLICIT NONEINTEGER ::i = 0WRITE(*,*),' I= ', iEND SUBROUTINE

  9. PASSAGEM POR ARRAYS Se o parâmetro for um arranjo, então o ponteiro aponta para o 1º valor no array. Porém a sub-rotina precisa saber o local e o tamanho do array para garantir que ele fique dentro do limite do array e da execução das operações. Ex: Program array

  10. PROGRAM arrayIMPLICIT NONEINTEGER :: iREAL, DIMENSION (5) :: a =0CALL sub (a, 5, 6)DO i = 1,6 WRITE(*,100) i, a(i) 100 FORMAT(1X,'A(',I1,') = ', F6.2)END DOEND PROGRAMSUBROUTINE sub (a, ndim, n)IMPLICIT NONEINTEGER, INTENT(IN) :: ndimREAL, INTENT(OUT), DIMENSION(ndim) :: aINTEGER, INTENT(IN) :: nINTEGER :: i, j = 0DO i = 1, n j = j + (2 * i) a(i) = j j = j +3END DOEND SUBROUTINE sub

  11. PASSAGEM DE VARIÁVEIS Quando uma variável caracter é usada como “dummy argument” o seu tamanho é declarado com um asterisco. Ex: exemplo (string) CHARACTER (len=*), INTENT (IN):: string .

  12. MÓDULOS A estrutura de um módulo é quase idêntica a estrutura de um programa. São utilizados no caso de existirem parâmetros, variáveis e subprogramas que devem ser divididos por muitas unidades de programas.

  13. MÓDULOS - continuação O módulo não contém declarações para serem executadas no programa. Nele só pode conter declarações e funções para serem usados em outros módulos e programas. Portanto, um módulo não pode existir sozinho, ele deve ser usado com outros módulos e um programa principal.

  14. Ex:MODULE SumAverageCONTAINS REAL FUNCTION Sum(a, b, c) IMPLICIT NONE REAL, INTENT(IN) :: a, b, c Sum = a + b + c END FUNCTION Sum REAL FUNCTION Average(a, b, c) IMPLICIT NONE REAL, INTENT(IN) :: a, b, c Average = Sum(a,b,c)/2.0 END FUNCTION AverageEND MODULE SumAverage

  15. RECURSIVIDADE FORTRAN permite que funções e sub-rotinas sejam declaradas recursivamente. A sub-rotina é declarada recursivamente adicionando a palavra RECURSIVE na declaração da SUBROUTINE.

  16. RECURSIVIDADE- continuação Pode-se definir funções recursivas também. FORTRAN permite especificar dois diferentes nomes, um para chamar uma função recursiva e outro para retornar um resultado. Ex: program fatorial

  17. PROGRAM fatorialIMPLICIT NONEINTEGER :: iWRITE(*,*) " Este programa calcula fatorial"WRITE(*,*) "Entre com um numero positivo: "READ(*,*) iWRITE(*,*) " O fatorial e: ", fat(i)containsRECURSIVE INTEGER FUNCTION fat(n) result(F) INTEGER n IF(n==0) THEN F = 1 ELSE F = n*fat(n-1) END IF END function fatend program fatorial

  18. BIBLIOGRAFIA • FORTRAN 90/95 for Scientists and Engineers- Stephen J. Chapman • FORTRAN 90 – Loren P.Meissner • Introdução ao FORTRAN 77 para microcomputadores - Ronaldo L.D. Cereda e José Carlos Maldonado

More Related