Fortran 90 l.jpg
Sponsored Links
This presentation is the property of its rightful owner.
1 / 18

FORTRAN 90 PowerPoint PPT Presentation


  • 255 Views
  • Updated On :
  • Presentation posted in: General

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.

Download Presentation

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.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -

Presentation Transcript


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ÇÕESESUB-ROTINAS.


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.

.


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)


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


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.


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


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


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


PROGRAM arrayIMPLICIT NONEINTEGER :: iREAL, DIMENSION (5) :: a =0CALL sub (a, 5, 6)DO i = 1,6WRITE(*,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, nj = j + (2 * i)a(i) = j j = j +3END DOEND SUBROUTINE sub


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

.


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.


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.


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


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.


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


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


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


  • Login