A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

FORTRAN 90 Denise Yumi Takamura.

Apresentações semelhantes


Apresentação em tema: "FORTRAN 90 Denise Yumi Takamura."— Transcrição da apresentação:

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ÇÕES E SUB-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_call IMPLICIT NONE REAL :: x=1 CALL bad_argument(x) END PROGRAM SUBROUTINE bad_argument (i) IMPLICIT NONE INTEGER ::i = 0 WRITE(*,*),' I= ', i END 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 array IMPLICIT NONE INTEGER :: i REAL, DIMENSION (5) :: a =0 CALL sub (a, 5, 6) DO i = 1,6 WRITE(*,100) i, a(i) 100 FORMAT(1X,'A(',I1,') = ', F6.2) END DO END PROGRAM SUBROUTINE sub (a, ndim, n) IMPLICIT NONE INTEGER, INTENT(IN) :: ndim REAL, INTENT(OUT), DIMENSION(ndim) :: a INTEGER, INTENT(IN) :: n INTEGER :: i, j = 0 DO i = 1, n j = j + (2 * i) a(i) = j j = j +3 END DO END 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 SumAverage CONTAINS 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)/ END FUNCTION Average END 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 fatorial IMPLICIT NONE INTEGER :: i WRITE(. ,
PROGRAM fatorial IMPLICIT NONE INTEGER :: i WRITE(*,*) " Este programa calcula fatorial" WRITE(*,*) "Entre com um numero positivo: " READ(*,*) i WRITE(*,*) " O fatorial e: ", fat(i) contains RECURSIVE INTEGER FUNCTION fat(n) result(F) INTEGER n IF(n==0) THEN F = 1 ELSE F = n*fat(n-1) END IF END function fat end 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


Carregar ppt "FORTRAN 90 Denise Yumi Takamura."

Apresentações semelhantes


Anúncios Google