FORTRAN 90 Denise Yumi Takamura.

Slides:



Advertisements
Apresentações semelhantes
Passagem de parâmetros por valor txtInOut1.Text = num1 txtInOut2.Text = num2 txtOut.Text = num3 End Sub Private Sub cmdVal_Click() Dim num1 As Integer,
Advertisements

VHDL Very High Speed Integrated Circuit Hardware Description Language Prof. Eduardo Todt 2008.
VHDL - uma visão geral 5 tipos de unidades
Subprogramas Procedimentos e Funções MO801/MC912.
While While Condição // comandos End While. Exemplos While Var contador As Integer contador = 0 While (contador < 10) contador += 1 console.ConsoleWrite(contador)
Prof. José Fernando Rodrigues Júnior Pacotes Material original: Profa. Elaine Parros Machado de Sousa SCC Bancos de Dados e Suas Aplicações.
Procedimentos e Funções
Sistemas Operacionais
Grupo Paralelismo – Unesp RC
FORTRAN 90 Danilo Ueno Takahagi.
SQL Procedural Junho/2006.
SQL procedural – parte 2.
Estruturas de Dados para projeto de SGBD. Estruturas de dados analisadas Estruturas de nível Esparso Denso Combinadas Arvore B+ Tabela de hash.
Funções de Linha 24/04/06. Funções de Linha Gerar ou construir novo valor não existente na tabela inicial. Valor construído a partir de dados de uma ou.
Sintaxe de Fortran 25/abril/2006. Comandos Fortran PROGRAM PRINT READ STOP END.
Modularização de Código. Modularizar código Construção do algoritmo em um módulo único (Início...Fim/ Program... End) Único arquivo.
Introdução ao Fortran 4/abril/2006. Pseudocódigo Compreensão do problema Elaboração da lógica de resolução Tradução da lógica para pseudocódigo.
Arquiteturas de 4, 3, 2, 1 e 0 endereços.
Utilização do montador Daedalus
Prototipação de um Interpretador para IMP com ML Juliana Vizzotto Júlio Machado Fevereiro 2002.
Teste Estrutural de Software
(Como implementar multiplicação e divisão uma vez só :-)
Profa. Graziela Santos de Araújo Algoritmos e Programação II, 2010
Introdução A fim de preparar a geração de código, deve-se relacionar o fonte estático do programa às ações em tempo de execução. Durante a execução, o.
Agregado Homogêneo e Heterogêneo
2ª Aula Teórica Prof. Cesar Costa
CES-41 COMPILADORES Capítulo IV Complementos de Análise Léxica.
Capítulo VII – Tipos Enumerativos e Estruturas 7.1 – Tipos enumerativos 7.2 – A necessidade de estruturas 7.3 – Manipulação dos campos de uma estrutura.
CES-10 INTRODUÇÃO À COMPUTAÇÃO Aulas Práticas – 2013 Capítulo III Comandos de Controle.
1.3 – Interpretadores – Compiladores versus Interpretadores
CES-10 INTRODUÇÃO À COMPUTAÇÃO Aulas Práticas – 2013
CES-10 INTRODUÇÃO À COMPUTAÇÃO Capítulo III Declarações e Comandos de Atribuição.
CES-41 COMPILADORES Capítulo VII Código Intermediário.
CES-10 INTRODUÇÃO À COMPUTAÇÃO Aulas Práticas – 2013 Capítulo VII Variáveis Indexadas Numéricas.
CES-10 INTRODUÇÃO À COMPUTAÇÃO Aulas Práticas – 2013 Capítulo XI Encadeamento de Estruturas por Ponteiros.
Capítulo IX – Ponteiros 9.1 – Introdução 9.2 – Relação entre ponteiros e variáveis indexadas 9.3 – Alocação dinâmica de memória 9.4 – Variáveis indexadas,
Capítulo III Diagramas de Transições
Capítulo I – Conceitos Primários 1.1 – Estrutura de um computador 1.2 – Informações manipuladas por um computador 1.3 – Evolução das linguagens de programação.
TA 733 A – Operações Unitárias II
Curso Técnico em Informática La Salle - Canoas
EEL170 COMPUTAÇÃO I Antonio Cláudio Gómez de Sousa 5a série de slides Versão 26/04/2012.
ALOCAÇÃO DINÂMICA DE MEMÓRIA
OTIMIZAÇÃO DE DESEMPENHO
ARQUITETURA DE COMPUTADORES SOFTWARE PROGRAMA SEQUENCIA DE INSTRUÇÕES
Aritmética de ponto flutuante Erros
Organização de Sistemas de Computadores
Desempenho A rápida taxa de melhoria na tecnologia de computadores veio em decorrência de dois fatores: avanços na tecnologia utilizada na construção.
C/C++.
Laboratório de Programação Prof. Oscar Luiz Monteiro de Farias
Laboratório de Programação Prof. Oscar Luiz Monteiro de Farias
Laboratório de Programação Prof. Oscar Luiz Monteiro de Farias
Laboratório de Programação
Listas Encadeadas.
Linguagens Formais e Tradutores Linguagens Regulares (Revisão)
Tecnologia para Web JavaScript Enrique Pimentel Leite de Oliveira
Recursividade Estrutura de Dados.
Marco Antonio Montebello Júnior
Entendendo as definições de classe
Curso de Programação em C++ Universidade Federal do Ceará Departamento de Engenharia Estrutural e Construção Civil Prof: Evandro Parente Junior Monitor:
Baseado no documento do Prof. Ronaldo Martins da Costa
LINGUAGENS DE PROGRAMAÇÃO
04:27 Introdução Tipos de Fluxo de Dados e de Arquivos Manipulação de Arquivos em Java Classes FileReader e FileWriter Classes FileInputStream e FileOutputStream.
Introdução Ciência da Computação estudo de algoritmos –ÊNFASE ao estudo de DADOS armazenamento manipulação refinamento (a partir de dados cru) estrutura.
INPE / CAP-334 Celso L. Mendes Aula 4-D(1) Reestruturação de Programas em Sistemas Vetoriais (II) Tópicos: Suporte à Paralelização Vetorização.
8. Uma Função de duas Variáveis Aleatórias
Exercícios de revisão.
INPE / CAP-315 Airam J. Preto, Celso L. Mendes Aula 30 (1) Empacotamento de Dados em MPI Tópicos: Buffer de Mensagem Empacotamento/Desempacotamento.
1 Semântica de Ações Ações Básicas, Ações Funcionais e Notação de Dados.
Funções ou procedures Professor Esp. Diego André Sant’Ana
RT-EXPERT Artis Corp. C calling program RTSUB [rule set subroutine] RTSUB [rule set subroutine] RTSUB [rule set subroutine]... DSL Decision Support Language.
Transcrição da apresentação:

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 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_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

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 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

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 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)/2.0 END FUNCTION Average END 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 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

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