Programação estruturada no Fortran 90-3

Documentos relacionados
Programação estruturada no Fortran 90-2

Introdução ao Fortran 90-1

Introdução ao Fortran 90-1

1. Movimento Harmônico Simples

Uma oscilação é um movimento repetitivo realizado por um corpo em torno de determinado ponto.

Correção do 1º Exame de INTRODUÇÃO À PROGRAMAÇÃO Licenciatura em Engenharia Mecânica 30 de Junho de 2006, 2º Semestre

Física 2 - Movimentos Oscilatórios. Em um ciclo da função seno ou cosseno, temos que são percorridos 2π rad em um período, ou seja, em T.

Programação com Funções. Subprogramas do tipo Função

PROGRAMAÇÃO de COMPUTADORES: LINGUAGEM FORTRAN 90/95

Departamento de Matemática Universidade de Coimbra

Programação de Computadores III

Algoritmos e Programação

Programação de Computadores III

Introdução ao fortran 90 - Aula 1

Lista de Exercícios - OSCILAÇÕES

Apostila de Fortran. É uma pseudo-linguagem a qual oferece recursos para que o programador possa codificar e testar os seus algoritmos.

Programação de Computadores:

GEO764 - Programação avançada em Geofísica. Entrada e saída no Fortran 90. Comando OPEN. Comando OPEN: exemplo

Introdução ao Fortran 90. Aula 3

Introdução ao Fortran 90-7

QUESTÕES DE MÚLTIPLA-ESCOLHA (1-4)

Curso de Complementos de Física

CENTRO DE CIÊNCIAS E TECNOLOGIA AGROALIMENTAR UNIDADE ACADÊMICA DE TECNOLOGIA DE ALIMENTOS DISCIPLINA: FÍSICA I INFORMAÇÕES GERAIS. Prof.

FEP Física para Engenharia II

Sintaxe do Pascal Simplificado Estendido de 12 novas construções em Notação EBNF (BNF estendida)

Teoria da Computação e Algoritmos. Introdução à Linguagem Pascal. ALGORITMO <Nome do algoritmo>; <definições>; INÍCIO <Comandos>; FIM.

1º Exame de INTRODUÇÃO À PROGRAMAÇÃO Licenciatura em Engenharia Mecânica 30 de Junho de º Semestre

Introdução à Programação. Uma Abordagem Funcional

Uma oscilação é um movimento repetitivo realizado por um corpo em torno de determinado ponto.

Existem dois tipos básicos de subrotinas: a) Procedimentos; b) Funções.

Oscilações. Movimento Harmônico Simples. Guia de Estudo (Formato para Impressão):

Linguagem de programação: Pascal

CENTRO DE CIÊNCIAS E TECNOLOGIA AGROALIMENTAR UNIDADE ACADÊMICA DE TECNOLOGIA DE ALIMENTOS DISCIPLINA: FÍSICA I INFORMAÇÕES GERAIS. Prof.

Prova P3 Física para Engenharia II, turma nov. 2014

OSCILAÇÕES, ONDAS E FLUIDOS Lista de exercícios - Oscilações Profª.Drª. Queila da Silva Ferreira

Comandos em C (cont.)

Linguagens de Programação Aula 11

As Oscilações estão presentes no nosso dia a dia como o vento que balança uma linha de transmissão elétrica, as vibrações da membrana de um

Programação em Linguagem C

Programação de Computadores:

Física Geral e Experimental III

Programação de Computadores IV. Introdução a Linguagens de Programação Simone Martins SLIDES CEDIDOS POR BRUNO MARQUES 1

Física I Prova 3 19/03/2016

#include <stdio.h> main() { int i; // Cabeçalho for (i = 1; i <=20; i++) putchar( * ); putchar( \n ); puts( Numeros entre 1 e 5 );

Programação em C. Variáveis e Expressões. Universidade Federal do Rio Grande do Norte Departamento de Engenharia de Computação e Automação

Introdução à Computação

Física para Engenharia II - Prova P a (cm/s 2 ) -10

Capítulo 8. Estruturas de Controle no Nível de Sentença

Elementos básicos das linguagens de programação

Física II Ondas, Fluidos e Termodinâmica USP Prof. Antônio Roque Aula

Universidade Federal de São Paulo Instituto de Ciência e Tecnologia Bacharelado em Ciência e Tecnologia

2.2.5 EXPRESSÕES - Regras para o cálculo de valores

ALGORITMOS I. Procedimentos e Funções

F = m d 2 x d t 2. temos que as forças a única força que atua no bloco é a força elástica da mola ( F E ), dada por. F E = k x

Aula do cap. 16 MHS e Oscilações

Aula 15 - Aula sobre Funções e Procedimentos

Capítulo 12. SUB-ROTINAS

1. O número de bactérias numa cultura pode ser estimado pela expressão:

QUESTÕES DE MÚLTIPLA-ESCOLHA (1-4)

2ª Lista de exercícios de Fenômenos Ondulatórios

Teoria de Eletricidade Aplicada

Aula 11: Modularização

11 ª Lista de Exercícios

Física 2 - EMB5039. Prof. Diego Duarte Oscilações (lista 4) 19 de abril de 2017

1) O vetor posição de uma partícula que se move no plano XZ e dado por: r = (2t 3 + t 2 )i + 3t 2 k

Linguagem Pascal. Prof. Antonio Almeida de Barros Junior

Transcrição:

Programação estruturada no Fortran 90-3 Departamento de Física UFPel

Em Fortran 90 existem dois tipos de subprogramas: Funções e Subrotinas Uma Função, quando chamada, retorna um único valor calculado dentro da unidade de programa, associado com o nome da Função Uma Subrotina, quando chamada, pode retornar diversos valores calculados dentro da unidade de programa, associados com os argumentos usados na chamada da Subrotina

Um subprograma do tipo SUBROTINA tem a seguinte sintaxe <atributos> SUBROUTINE <nome> (arg1, arg2,..., argn) IMPLICIT NONE [campo de declaração de variáveis] [campo de execução] END SUBROUTINE <nome> A opção <atributos> é opcional, possibilitando o uso de atributos como RECURSIVE, com a mesma funcionalidade apresentada no caso de Funções. A Subrotina é nomeada pelo identificador <nome>. É ele que devemos usar para invocar o uso da Subrotina. O nome da Subrotina não pode ser usado dentro de expressões aritméticas e/ou lógicas, nem em comando do tipo PRINT. Para invocar a Subrotina, usamos o comando CALL <nome>.

Um subprograma do tipo SUBROTINA tem a seguinte sintaxe <atributos> SUBROUTINE <nome> (arg1, arg2,..., argn) IMPLICIT NONE [campo de declaração de variáveis] [campo de execução] RETURN END SUBROUTINE <nome> Se um dos comando dentro da Subrotina é uma instrução do tipo RETURN, a execução da Subrotina é encerrada e o programa segue a partir do ponto em que a Subrotina foi invocada. Podem existir mais de uma instrução RETURN dentro da Subrotina, isoladamente ou em combinação com instruções do tipo IF. A instrução RETURN é opcional. Sem ela, a execução da Subrotina é encerrada no comando END.

Um subprograma do tipo SUBROTINA tem a seguinte sintaxe <atributos> SUBROUTINE <nome> (arg1, arg2,..., argn) IMPLICIT NONE [campo de declaração de variáveis] [campo de execução] END SUBROUTINE <nome> Os argumentos da Subrotina são identificados por uma lista de identificadores mudos arg1, arg2,..., argn. Eles são usados na unidade de programa para produzir o resultado a ser extraído da Subrotina. Os argumentos podem ser de entrada, INTENT(IN). Os argumentos podem ser de saída INTENT(OUT).

Declaração de argumentos e identificadores em Subrotina Os argumentos de uma Subrotina podem ser declarados com o opção de intenção INTENT: usado para se especificar como é passado um argumento para um subprograma e como ele é retornado. Opção de intenção de entrada, INTENT(IN): neste caso o valor do argumento não pode ser alterado pela Subrotina A sintaxe a ser usada é a seguinte INTENT(IN) :: <lista de argumentos mudos da Subrotina> Sem o INTENT(IN) os valores dos argumentos mudos podem mudar pelos cálculos realizados dentro da Subrotina.

Declaração de argumentos e identificadores em Subrotina Os argumentos de uma Subrotina podem ser declarados com o opção de intenção INTENT: usado para se especificar como é passado um argumento para um subprograma e como ele é retornado. Opção de intenção de saída, INTENT(OUT): neste caso o argumento só pode ser usado em expressões e comandos depois de um valor ter sido atribuído a ele dentro da Subrotina. A sintaxe a ser usada é a seguinte INTENT(OUT) :: <lista de argumentos mudos da Subrotina> A opção INTENT(OUT) em geral é usada para extrair os resultados calculados dentro da Subrotina através dos argumentos mudos desta.

As Subrotinas podem ser internas ou externas Subrotinas internas (com CONTAINS): São definidas dentro de uma unidade de programa, a partir da instrução CONTAINS. program t e s t e [ campo de declaracao de i d e n t i f i c a d o r e s ] [ campo de execucao ] CONTAINS [ Subroutine 1] [ Subroutine 2] end program t e s t e Todas as Subrotinas são listadas a partir do CONTAINS. O Programa Principal é finalizado após a declaração de todas as Subrotinas.

Subrotina interna com CONTAINS program t e s t a _ s u b r o t i n a r e a l : : number CALL GetNumber ( number ) p r i n t, numero digitado :, number CONTAINS SUBROUTINE GetNumber ( Input_Value ) real, INTENT(OUT) : : Input_Value do write (, ) d i g i t e um numero p o s i t i v o : read (, ) Input_Value i f ( Input_Value > 0. 0 ) e x i t write (, ) Erro : t e n t e novamente end do end SUBROUTINE GetNumber end program t e s t a _ s u b r o t i n a

As Subrotinas podem ser internas ou externas Subrotinas internas (sem CONTAINS): Todas as Subrotinas devem ser iniciadas e finalizadas separadamente, após a finalização do Programa Principal. program t e s t e [ campo de declaracao de i d e n t i f i c a d o r e s ] [ campo de execucao ] end program t e s t e [ subroutine 1] [ subroutine 2]

Subrotina interna sem CONTAINS program t e s t a _ s u b r o t i n a r e a l : : number CALL GetNumber ( number ) p r i n t, numero digitado :, number end program t e s t a _ s u b r o t i n a SUBROUTINE GetNumber ( Input_Value ) real, INTENT(OUT) : : Input_Value do write (, ) d i g i t e um numero p o s i t i v o : read (, ) Input_Value i f ( Input_Value > 0. 0 ) e x i t write (, ) Erro : t e n t e novamente end do end SUBROUTINE GetNumber

Fatorial de n: program f a t o r i a l _ s u b i n t e g e r : : f, n p r i n t, n? read, n i f ( n >= 0) then CALL f a t o r i a l ( n, f ) write (, ( " f a t o r i a l ( ", I12, " ) = ", I12 ) ) n, f e l s e p r i n t, valor i n valido para n end i f CONTAINS subroutine f a t o r i a l ( n, f ) [... ] end subroutine f a t o r i a l end program f a t o r i a l _ s u b

Fatorial de n: program [... ] CONTAINS f a t o r i a l _ s u b subroutine f a t o r i a l ( n, f ) integer, i n t e n t ( in ) : : n integer, i n t e n t ( out ) : : f i n t e g e r : : i i f ( n >= 0) then f = 1 do i = 2,n f = f i end do e l s e i f ( n == 0) then f = 1 end i f end subroutine f a t o r i a l end program f a t o r i a l _ s u b Execução do código: Tente usar na Subrotina integer, intent(out) :: f = 1 O que acontece na compilação?

Exemplo: Considere uma partícula de massa m submetida a um movimento harmônico simples (MHS), produzido por uma mola de constante elástica κ. As equações para a posição, velocidade e aceleração da partícula se escrevem, respectivamente, como x(t) = A sin(ωt + φ) v(t) = ωa cos(ωt + φ) a(t) = ω 2 A sin(ωt + φ), onde ω = κ/m = 10 rad/s são a frequêcia de oscilação e φ = π/2 a fase inicial. Sabendo que a amplitude inicial do movimento é A = 10 cm, escreva um programa em Fortran 90 que avalia x(t), v(t) e a(t) da partícula de zero até 2 segundos, usando um intervalo de tempo de 0.01 segundos entre cada ponto avaliado. A saída dos resultados deve ser apresentada num arquivo de saída, em formato exponencial (E) e com 4 casas decimais. Faça versões sem e com Subprogramas.

program mhs r e a l : : t, x, v, a r e a l : : w, amp, pi pi = 4. 0 atan ( 1. 0 ) w = 1 0. 0 amp = 0. 1 0 t = 0. 0 write (, (A) ) # MHS de uma p a r t i c u l a write (, (A) ) # t x v a write (, ) do i f ( t > 2. 0 ) e x i t x = amp s i n (w t+pi / 2. 0 ) v = w amp cos (w t+pi / 2. 0 ) a = w 2 amp s i n (w t+pi / 2. 0 ) write (, ( 4 ( E11. 4 E2, 1 x ) ) ) t, x, v, a t = t + 0. 0 1 end do end program mhs