mini curso de programação fortran mini curso de programação fortran universidade federal de...

54
Mini Curso de Mini Curso de Programação Fortran Programação Fortran Universidade Federal de Pelotas XVII Semana Acadêmica da Meteorologia 29 de novembro a 03 de dezembro Prof. Marcello Macarthy [email protected]

Upload: internet

Post on 17-Apr-2015

110 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Mini Curso de Programação Fortran Mini Curso de Programação Fortran Universidade Federal de Pelotas XVII Semana Acadêmica da Meteorologia 29 de novembro

Mini Curso deMini Curso deProgramação Fortran Programação Fortran

Universidade Federal de Pelotas

XVII Semana Acadêmica da Meteorologia 29 de novembro a 03 de dezembro

Prof. Marcello Macarthy [email protected]

Page 2: Mini Curso de Programação Fortran Mini Curso de Programação Fortran Universidade Federal de Pelotas XVII Semana Acadêmica da Meteorologia 29 de novembro

Prof. Marcello MacarthyUFPel - CDTEC - Informática

Sumário

1 Introdução 2 Formato do Código-Fonte3 Tipos de Variáveis4 Expressões e Atribuições Escalares5 Comandos 6 Matrizes7 Subprogramas e Módulos

2

Page 3: Mini Curso de Programação Fortran Mini Curso de Programação Fortran Universidade Federal de Pelotas XVII Semana Acadêmica da Meteorologia 29 de novembro

Prof. Marcello MacarthyUFPel - CDTEC - Informática

Introdução

• LógicaLógica Não há consenso quanto à definição da lógica. Alguns autores definem-na como o estudo do processos válidos e gerais pelos quais atingimos a verdade, outros como a ciência das leis do pensamento, ou somente como o estudo dos princípios da inferência válida. Esta pluralidade de definições dá-nos conta da diversidade de estudos que são abrangidos pela Lógica.

• AlgoritmosAlgoritmos Define por uma seqüência lógica de passos que o computador executara fielmente para que se obtenha um resultado satisfatório. Estas seqüências podem ou não ser executadas dependendo do andamento do algoritmo, porém estes passos sempre serão alcançados em algum momento do algoritmo.

3

Page 4: Mini Curso de Programação Fortran Mini Curso de Programação Fortran Universidade Federal de Pelotas XVII Semana Acadêmica da Meteorologia 29 de novembro

Prof. Marcello MacarthyUFPel - CDTEC - Informática

Introdução

• ProgramaçãoProgramação É o processo de definir, utilizando uma linguagem de programação , os comandos, as instruções que o computador deve executar para realizar determinada tarefa em síntese solução de problemas em diversas áreas.

• Linguagem de Programação Linguagem de Programação FORTAN (FORmula TRANslation)

– Primeira linguagem de alto nível usada para programação de computadores, proposta por J. Backus, em 1953.

– Facilidade de transcrição de fórmulas matemáticas.– Direcionada para aplicações em física, matemática, engenharia,

meteorologia e análises científicas entre outras...

4

Page 5: Mini Curso de Programação Fortran Mini Curso de Programação Fortran Universidade Federal de Pelotas XVII Semana Acadêmica da Meteorologia 29 de novembro

Prof. Marcello MacarthyUFPel - CDTEC - Informática

Formato do Programa Fonte

Três formatos básicos de arquivos

• Programa-Fonte Trata-se do programa e/ou dos subprogramas escritos pelo programador, usando algum tipo de editor de texto, de acordo com as regras definidas pela linguagem de programação de alto nível.

• Programa-Objeto Trata-se do programa-fonte compilado pelo compilador. Esta é a transcrição realizada pelo compilador do programa-fonte fornecido pelo programador para uma linguagem de baixo nível, como Assembler ou outro código diretamente interpretável pela CPU.

• Programa executável Após a fase de compilação, onde os programas objetos são criados, o agente de compilação aciona o linker, o qual consiste em um programa especial que agrupa os programas objetos de forma a criar um arquivo final, o programa executável.

Linguagem Fortran

5

Page 6: Mini Curso de Programação Fortran Mini Curso de Programação Fortran Universidade Federal de Pelotas XVII Semana Acadêmica da Meteorologia 29 de novembro

Prof. Marcello MacarthyUFPel - CDTEC - Informática

Algoritmo – Pseudo CódigoAlgoritmo – Pseudo Código

Inicio Algoritmo

Declarar variaveis

Entrada - Ler

Processamento - Executar

Saída – Imprimir (Escrever)

Fim Algoritmo

Linguagem Fortran

FortranFortran

Program <nome do programa>

Declaração de variáveis>

Read

Processamento

(sequencial / decisão/repetição)

Print

Pause (pausa)

Stop (fim da execução

End (programa)

6

Page 7: Mini Curso de Programação Fortran Mini Curso de Programação Fortran Universidade Federal de Pelotas XVII Semana Acadêmica da Meteorologia 29 de novembro

Prof. Marcello MacarthyUFPel - CDTEC - Informática

• Todo programa em fortran deve começar pela palavra program e em seguida deve ser dado um nome para esse programa. Evitar deixar espaço entre palavras, quando for necessário utilizar o underline (_). Não usar acentuação;

• Ponto de exclamação “!” significa que pode inserir comentários em qualquer ponto do código-fonte.

• Impicit none se não for usado o fortran entende que todas as variaveis são reais, ou seja, impede a possibilidade de haver nomes de variáveis não definidos, os quais possuem o seu tipo implícito

• Declaração de Variáveis (mesmas regras das variáveis em pseudocódigo) Não utilizar acentuação; Variáveis com nomes compostos: deve ser usado o símbolo underline para separá-las;

Linguagem Fortran

7

Page 8: Mini Curso de Programação Fortran Mini Curso de Programação Fortran Universidade Federal de Pelotas XVII Semana Acadêmica da Meteorologia 29 de novembro

Prof. Marcello MacarthyUFPel - CDTEC - Informática

Exemplo 1Exemplo 1

program apresentação implicit none  print *, “Semana Acadêmica da Meteorologia”

end program

Exemplo 1.1Exemplo 1.1

program format1

print 1

1 format (100x," Semana Acadêmica da Meteorologia ")

pause

stop

end

Linguagem Fortran

8

Page 9: Mini Curso de Programação Fortran Mini Curso de Programação Fortran Universidade Federal de Pelotas XVII Semana Acadêmica da Meteorologia 29 de novembro

Prof. Marcello MacarthyUFPel - CDTEC - Informática

• FormatFormat Descreve o formato em que os dados devem ser transferidos. Especifica conversão interna e externa sofrida pelos mesmos. . Sintaxe n format(ef,[ef,...,ef]])Sintaxe n format(ef,[ef,...,ef]])

Onde: n Rótulo associado aos comandos de entrada e saída. e Ef - Especificação do formato.

• Formato para mensagens

Print 1

1 format (///3x,”escrever o seu nome”///)

Onde: / : indica quebra de linha.

3x: indica espaçamento horizontal.

Linguagem Fortran

9

Page 10: Mini Curso de Programação Fortran Mini Curso de Programação Fortran Universidade Federal de Pelotas XVII Semana Acadêmica da Meteorologia 29 de novembro

Prof. Marcello MacarthyUFPel - CDTEC - Informática

Formato para variáveis:Formato para variáveis:

• Inteiras Iw- Inteiro w- Tamanho Maximo de bytes

(posições) ocupados.

• Caracteres aw- Inteiro w- Tamanho Maximo de bytes (posições) ocupados.

• Reais Fw.d – Constante inteira indicando largura do campo externo, em caracteres. w- Tamanho Maximo de bytes (posições) ocupadas d- número de casas decimais

Linguagem Fortran

10

Page 11: Mini Curso de Programação Fortran Mini Curso de Programação Fortran Universidade Federal de Pelotas XVII Semana Acadêmica da Meteorologia 29 de novembro

Prof. Marcello MacarthyUFPel - CDTEC - Informática

Comandos para entrada e saída de dadosComandos para entrada e saída de dados

• READ -READ - Entrada de Dados – Ler dados a partir do teclado;

Sintaxe read (unit, fmt) lista de variáveis

Unit – dispositivo de entrada(arquivo, teclado) padrão teclado *

Fmt – formato pode ser um rotulo ou *

• PRINTPRINT -- Saída de dados - Transferir dados para o monitor

Sintaxe print * , lista de variáveis ou print *,”mensagem”

• WriteWrite - - Saída de dados

Sintaxe write * , lista de variáveis ou write *,”mensagem”

Linguagem Fortran

11

Page 12: Mini Curso de Programação Fortran Mini Curso de Programação Fortran Universidade Federal de Pelotas XVII Semana Acadêmica da Meteorologia 29 de novembro

Prof. Marcello MacarthyUFPel - CDTEC - Informática

• Conjunto de caracteres aceitosConjunto de caracteres aceitos

Linguagem Fortran

Caractere Nome/Função Caractere Nome/Função

= Igual ) Parênteses D

+ Soma , Virgula

- Subtração . Ponto Decimal

* Multiplicação $ Cifrão

/ Divisão : Dois Pontos

( Parênteses E

12

Page 13: Mini Curso de Programação Fortran Mini Curso de Programação Fortran Universidade Federal de Pelotas XVII Semana Acadêmica da Meteorologia 29 de novembro

Prof. Marcello MacarthyUFPel - CDTEC - Informática

Declaração de tipo de variávelDeclaração de tipo de variável

A forma geral de uma declaração de tipo de variáveis é:

<tipo>[([KIND=]<parâmetro de espécie>)][,<lista de atributos>] :: <lista de entidades>

• onde <tipo> especifica o tipo de variável, <parâmetro de espécie> especifica a espécie da variável, <lista de atributos> é um dos seguintes:

Linguagem Fortran

13

Page 14: Mini Curso de Programação Fortran Mini Curso de Programação Fortran Universidade Federal de Pelotas XVII Semana Acadêmica da Meteorologia 29 de novembro

Prof. Marcello MacarthyUFPel - CDTEC - Informática

• PARAMETER DIMENSION(<lista de extensões>)• PUBLIC INTENT(<inout>) • PRIVATE OPTIONAL • POINTER SAVE • TARGET EXTERNAL • ALLOCATABLE INTRINSIC

e cada entidade é

<nome do objeto> [(lista de extensões)] [*char-len] [= expressão de inicialização]

ou <nome da função> [*char-len]

Linguagem Fortran

14

Page 15: Mini Curso de Programação Fortran Mini Curso de Programação Fortran Universidade Federal de Pelotas XVII Semana Acadêmica da Meteorologia 29 de novembro

Prof. Marcello MacarthyUFPel - CDTEC - Informática

• AritméticasAritméticas +, -, *, /,** - Resultado sempre um número real, inteiro ou complexo.

• CaracteresCaracteres Produz um valor que é sempre uma cadeia de caracteres. // Concatenar. ‘AB’//’CDE’ ‘ABCDE’

• RelacionaisRelacionais Um valor que é sempre uma constante lógica.

Linguagem Fortran

Igual a a.EQ.b

Diferente de a.NE.b

Menor que a.LT.b

Menor ou igual a.LE.b

Maior a.GT.b

Maior ou igual a.GE;b

15

Page 16: Mini Curso de Programação Fortran Mini Curso de Programação Fortran Universidade Federal de Pelotas XVII Semana Acadêmica da Meteorologia 29 de novembro

Prof. Marcello MacarthyUFPel - CDTEC - Informática

• Inteiros

A=10

Print 1,a

1 format(3x,i2)

Linguagem Fortran

• Caracter

A=‘abc’

Print 1,a

1 format(3x,a3)

• Reais

A=32.5894

Print 1,a

1 format(3x,f7.2)

Exemplo

16

Page 17: Mini Curso de Programação Fortran Mini Curso de Programação Fortran Universidade Federal de Pelotas XVII Semana Acadêmica da Meteorologia 29 de novembro

Prof. Marcello MacarthyUFPel - CDTEC - Informática

• Logicas Logicas Um valor que é sempre uma constante lógica.

• FunçõesFunções

MOD (EAx, EAy) Onde : EAx – Dividendo e EAy – Divisor

SQRT (EA)

IFIX (EA) conversão de real para inteiro – parâmetro = real, retorno = inteiro

FLOAT (EA) conversão de inteiro para real – parâmetro = inteiro, retorno = real

Linguagem Fortran- Expressões

.NOT. .NOT.a

.AND. a.AND.b

.OR. a.OR.b

17

Page 18: Mini Curso de Programação Fortran Mini Curso de Programação Fortran Universidade Federal de Pelotas XVII Semana Acadêmica da Meteorologia 29 de novembro

Prof. Marcello MacarthyUFPel - CDTEC - Informática

• Variáveis do tipo INTEGER

program inteiro implicit none integer :: x read *, x print*, "Valor lido:",x end program inteiro

Linguagem Fortran

18

Page 19: Mini Curso de Programação Fortran Mini Curso de Programação Fortran Universidade Federal de Pelotas XVII Semana Acadêmica da Meteorologia 29 de novembro

Prof. Marcello MacarthyUFPel - CDTEC - Informática

Variáveis do tipo REAL

program var_real implicit none real :: a, b= 10.5e-2  print *, ’Valor de a:’ read *, a print *, ’Valor de a:’, a print *, ’Valor de b:’, b end program var_real

Linguagem Fortran

19

Page 20: Mini Curso de Programação Fortran Mini Curso de Programação Fortran Universidade Federal de Pelotas XVII Semana Acadêmica da Meteorologia 29 de novembro

Prof. Marcello MacarthyUFPel - CDTEC - Informática

Variáveis do tipo COMPLEX

program var_complexa implicit none complex :: a= (5,-5),b,c  print *, "Valor de b:" ! O valor de b deve ser entrado como um literal complexo. ! Exemplo: (-1.5,2.5) read *, b c= a*b print *, "O valor de c:", c end program var_complexa

Linguagem Fortran

20

Page 21: Mini Curso de Programação Fortran Mini Curso de Programação Fortran Universidade Federal de Pelotas XVII Semana Acadêmica da Meteorologia 29 de novembro

Prof. Marcello MacarthyUFPel - CDTEC - Informática

Variáveis do tipo CHARACTER

program le_caractere implicit none character(len=10) :: str_read print *, "Entre com texto": read ’(a)’, str_read print *, "Texto lido:", str_read end program le_caractere

Linguagem Fortran

21

Page 22: Mini Curso de Programação Fortran Mini Curso de Programação Fortran Universidade Federal de Pelotas XVII Semana Acadêmica da Meteorologia 29 de novembro

Prof. Marcello MacarthyUFPel - CDTEC - Informática

• Variáveis do tipo LOGICAL

• O conceito de espécie (kind)

– Em Fortran 90/95, cada um dos cinco tipos intrínsecos, INTEGER, REAL, COMPLEX, CHARACTER e LOGICAL possui associado um valor inteiro não negativo denominado parâmetro de espécie do tipo (kind type parameter).

– Por exigência do padrão, um processador deve suportar, no mínimo, duas espécies para os tipos REAL e COMPLEX e uma espécie para os tipos INTEGER, CHARACTER e LOGICAL.

Linguagem Fortran

22

Page 23: Mini Curso de Programação Fortran Mini Curso de Programação Fortran Universidade Federal de Pelotas XVII Semana Acadêmica da Meteorologia 29 de novembro

Prof. Marcello MacarthyUFPel - CDTEC - Informática

– Os valores da espécie são dependentes do processador e/ou do compilador empregado.

– Contudo, há funções intrínsecas fornecidas pelo compilador que

verificam as precisões suportadas pelo processador e que podem ser usadas para definir o valor do parâmetro KIND, possibilitando assim a portabilidade do código, isto é, a possibilidade deste rodar em diferentes arquiteturas usando uma precisão mínima especificada pelo programador.

Linguagem Fortran

23

Page 24: Mini Curso de Programação Fortran Mini Curso de Programação Fortran Universidade Federal de Pelotas XVII Semana Acadêmica da Meteorologia 29 de novembro

Prof. Marcello MacarthyUFPel - CDTEC - Informática

Expressões e Atribuições EscalaresExpressões e Atribuições Escalares

• Em uma expressão, o programa descreve as operações que devem ser executadas pelo computador.

• O resultado desta expressão pode então ser atribuído a uma variável.

• Há diferentes conjuntos de regras para expressões e atribuições, dependendo se as variáveis em questão são numéricas, lógicas, caracteres ou de tipo derivado; e também se as expressões são escalares ou matriciais

24

Linguagem Fortran

Page 25: Mini Curso de Programação Fortran Mini Curso de Programação Fortran Universidade Federal de Pelotas XVII Semana Acadêmica da Meteorologia 29 de novembro

Prof. Marcello MacarthyUFPel - CDTEC - Informática

• Ressaltadas Anteriormente, observa-se que as regras básicas são:

• operador operando

Ex: -X

• operando operador operando

Ex: X+Y

– Expressões numéricas escalares – Atribuições numéricas escalares– Operadores relacionais– Etc...

Linguagem Fortran

25

Page 26: Mini Curso de Programação Fortran Mini Curso de Programação Fortran Universidade Federal de Pelotas XVII Semana Acadêmica da Meteorologia 29 de novembro

Prof. Marcello MacarthyUFPel - CDTEC - Informática

Se .... Então

If (condição) then

<instruções>

endif

Linguagem Fortran

Se .... Então .... Senão

If (condição) then

<instruções>

else

<instruções>

endif

Comandos de DecisãoComandos de Decisão

26

Page 27: Mini Curso de Programação Fortran Mini Curso de Programação Fortran Universidade Federal de Pelotas XVII Semana Acadêmica da Meteorologia 29 de novembro

Prof. Marcello MacarthyUFPel - CDTEC - Informática

27

Se .... Então... Senão Encadeados

If (condição) then

<instruções>

else

If (condição) then

<instruções>

else

<instruções>

endif

endif

Linguagem Fortran

Page 28: Mini Curso de Programação Fortran Mini Curso de Programação Fortran Universidade Federal de Pelotas XVII Semana Acadêmica da Meteorologia 29 de novembro

Prof. Marcello MacarthyUFPel - CDTEC - Informática

• program if_fat !Calcula o fatorial de um número natural. implicit none integer :: i, fat, j ! print *, "Entre com valor:" read *, i if (i < 0) then    print *, "Não é possível calcular o fatorial." else if (i == 0) then    print *, "fat(",i,")=",1 else    fat= 1    do j= 1, i       fat= fat*j    end do    print *, "fat(",i,")=",fat end if end program if_fat

Linguagem Fortran

28

Page 29: Mini Curso de Programação Fortran Mini Curso de Programação Fortran Universidade Federal de Pelotas XVII Semana Acadêmica da Meteorologia 29 de novembro

Prof. Marcello MacarthyUFPel - CDTEC - Informática

Do While (condição)

<instruções>

end do

program exer17

integer contador

do 1 contador=100,200

resto=mod(contador,2)

if (resto.eq.0) then

print *,contador," ‚ um numero par"

endif

1 Enddo

end

Linguagem Fortran

Comandos RepetiçãoComandos Repetição

29

Page 30: Mini Curso de Programação Fortran Mini Curso de Programação Fortran Universidade Federal de Pelotas XVII Semana Acadêmica da Meteorologia 29 de novembro

Prof. Marcello MacarthyUFPel - CDTEC - Informática

Case

SELECT CASE (NUMERO)     ! NUMERO é do tipo inteiro.

CASE (:-1)               ! Todos os valores de NUMERO menores que 0.

   N_SINAL= -1

CASE (0)                 ! Somente NUMERO= 0.

   N_SINAL= 0

CASE (1:)                ! Todos os valores de NUMERO > 0.

   N_SINAL= 1

END SELECT

Linguagem Fortran

30

Page 31: Mini Curso de Programação Fortran Mini Curso de Programação Fortran Universidade Federal de Pelotas XVII Semana Acadêmica da Meteorologia 29 de novembro

Prof. Marcello MacarthyUFPel - CDTEC - Informática

• program testa_case implicit none integer :: a print *, "Entre com a (inteiro):" read *, a select case (a) case (:-1)    print *, "Menor que zero." case (0)    print *, "Igual a zero." case (1:)    print *, "Maior que zero." end select end program testa_case

Linguagem Fortran

31

Page 32: Mini Curso de Programação Fortran Mini Curso de Programação Fortran Universidade Federal de Pelotas XVII Semana Acadêmica da Meteorologia 29 de novembro

Prof. Marcello MacarthyUFPel - CDTEC - Informática

• Uma matriz ou vetor matriz ou vetor é um outro tipo de objeto composto suportado pelo Fortran.

• Por definição Uma matriz consiste de um conjunto retangular de elementos, todos do mesmo tipo e espécie do tipo.

• Uma outra definição uma matriz é um grupo de posições na memória do computador as quais são acessadas por intermédio de um único nome, fazendo-se uso dos subscritos da matriz.

• Este tipo de objeto é útil quando for necessário se fazer referência a um número grande, porém a princípio desconhecido, de variáveis do tipo intrínseco ou outras estruturas, sem que seja necessário definir um nome para cada variável.

Linguagem Fortran

32

Page 33: Mini Curso de Programação Fortran Mini Curso de Programação Fortran Universidade Federal de Pelotas XVII Semana Acadêmica da Meteorologia 29 de novembro

Prof. Marcello MacarthyUFPel - CDTEC - Informática

• É recomendável as declarações de matrizes sejam declaradas na forma de atributos de tipos de variáveis. Por exemplo:

• REAL, DIMENSION(50) :: W • REAL, DIMENSION(5:54) :: X • CHARACTER(LEN= 25), DIMENSION(5) :: COLUMN • CHARACTER(LEN= 30), DIMENSION(10) :: ROW

Linguagem Fortran

33

Page 34: Mini Curso de Programação Fortran Mini Curso de Programação Fortran Universidade Federal de Pelotas XVII Semana Acadêmica da Meteorologia 29 de novembro

Prof. Marcello MacarthyUFPel - CDTEC - Informática

• Posto Posto O posto (rank) de uma matriz é o número de dimensões da mesma. Assim, um escalar tem posto 0, um vetor tem posto 1 e uma matriz tem posto maior ou igual a 2.

• ExtensãoExtensão A extensão (extent) de uma matriz se refere a uma dimensão em particular e é o número de componentes naquela dimensão.

• FormaForma A forma (shape) de uma matriz é um vetor cujos componentes são a extensão de cada dimensão da matriz.

• TamanhoTamanho O tamanho (size) de um matriz é o número total de elementos que compõe a mesma. Este número pode ser zero, em cujo caso esta se denomina matriz nula.

Linguagem Fortran

34

Page 35: Mini Curso de Programação Fortran Mini Curso de Programação Fortran Universidade Federal de Pelotas XVII Semana Acadêmica da Meteorologia 29 de novembro

Prof. Marcello MacarthyUFPel - CDTEC - Informática

A forma geral da declaração de uma ou mais matrizes:

<tipo>[[, DIMENSION(<lista de extensões>)] [, < outros atributos>] ::] <lista de nomes>

A forma recomendável da declaração é a seguinte:

<tipo>, DIMENSION(<lista de extensões>) [, <outros atributos>] :: <lista de nomes>

Linguagem Fortran

35

Page 36: Mini Curso de Programação Fortran Mini Curso de Programação Fortran Universidade Federal de Pelotas XVII Semana Acadêmica da Meteorologia 29 de novembro

Prof. Marcello MacarthyUFPel - CDTEC - Informática

Os <outros atributos> podem ser quaisquer da seguinte lista:

– PARAMETER – ALLOCATABLE – INTENT(INOUT) – OPTIONAL – SAVE – EXTERNAL – INTRINSIC – PUBLIC – PRIVATE – POINTER – TARGET

Linguagem Fortran

36

Page 37: Mini Curso de Programação Fortran Mini Curso de Programação Fortran Universidade Federal de Pelotas XVII Semana Acadêmica da Meteorologia 29 de novembro

Prof. Marcello MacarthyUFPel - CDTEC - Informática

Segue a <lista de nomes> válidos no Fortran, onde os mesmos são atribuídos às matrizes

• Inicialização de vetores contendo 3 elementos:

INTEGER :: I INTEGER, DIMENSION(3) :: IA= (/1,2,3/), IB= (/(I, I=1,3)/)

• Declaração da matriz automática LOGB. Aqui, LOGA é uma matriz qualquer (“muda” ou “dummy”) e SIZE é uma função intrínseca que retorna um escalar inteiro correspondente ao tamanho do seu argumento:

LOGICAL, DIMENSION(SIZE(LOGA)) :: LOGB

Linguagem Fortran

Page 38: Mini Curso de Programação Fortran Mini Curso de Programação Fortran Universidade Federal de Pelotas XVII Semana Acadêmica da Meteorologia 29 de novembro

Prof. Marcello MacarthyUFPel - CDTEC - Informática

• Declaração das matrizes dinâmicas, ou alocáveis, de duas dimensões A e B. A forma das matrizes será definida a posteriori por um comando ALLOCATE:

REAL, DIMENSION(:,:), ALLOCATABLE :: A,B

• Declaração das matrizes de forma assumida de três dimensões A e B. A forma das matrizes será assumida a partir das informações transferidas pela rotina que aciona o sub-programa onde esta declaração é feita.

REAL, DIMENSION(:,:,:) :: A,B

Linguagem Fortran

Page 39: Mini Curso de Programação Fortran Mini Curso de Programação Fortran Universidade Federal de Pelotas XVII Semana Acadêmica da Meteorologia 29 de novembro

Prof. Marcello MacarthyUFPel - CDTEC - Informática

Observações

• Expressões e atribuições envolvendo matrizes

• Soma,Multiplicação, divisão e outras operações matriciais

• A Linguagem possibilita realizar operações envolvendo a matriz na sua totalidade, possibilitando o tratamento de uma matriz como um objeto único, o que, no mínimo, facilita enormemente a construção, leitura e interpretação do código.

Linguagem Fortran

39

Page 40: Mini Curso de Programação Fortran Mini Curso de Programação Fortran Universidade Federal de Pelotas XVII Semana Acadêmica da Meteorologia 29 de novembro

Prof. Marcello MacarthyUFPel - CDTEC - Informática

• Programa principal e subrotina para produto 2 matrizes de 2x2, com saída não formatada:

Linguagem Fortran

40

Fonte: João Tavares/JOF CFAC

Page 41: Mini Curso de Programação Fortran Mini Curso de Programação Fortran Universidade Federal de Pelotas XVII Semana Acadêmica da Meteorologia 29 de novembro

Prof. Marcello MacarthyUFPel - CDTEC - Informática

Linguagem Fortran

41

Fonte: João Tavares/JOF CFAC

Page 42: Mini Curso de Programação Fortran Mini Curso de Programação Fortran Universidade Federal de Pelotas XVII Semana Acadêmica da Meteorologia 29 de novembro

Prof. Marcello MacarthyUFPel - CDTEC - Informática

Linguagem Fortran

42

Fonte: João Tavares/JOF CFAC

Page 43: Mini Curso de Programação Fortran Mini Curso de Programação Fortran Universidade Federal de Pelotas XVII Semana Acadêmica da Meteorologia 29 de novembro

Prof. Marcello MacarthyUFPel - CDTEC - Informática

Linguagem Fortran

43

Fonte: João Tavares/JOF CFAC

Page 44: Mini Curso de Programação Fortran Mini Curso de Programação Fortran Universidade Federal de Pelotas XVII Semana Acadêmica da Meteorologia 29 de novembro

Prof. Marcello MacarthyUFPel - CDTEC - Informática

Linguagem Fortran

44

Fonte: João Tavares/JOF CFAC

Page 45: Mini Curso de Programação Fortran Mini Curso de Programação Fortran Universidade Federal de Pelotas XVII Semana Acadêmica da Meteorologia 29 de novembro

Prof. Marcello MacarthyUFPel - CDTEC - Informática

Funções e SubrotinasFunções e Subrotinas

• A ideia é construir programas que sejam reutilizáveis. Por exemplo uma média calcula-se sempre da mesma maneira. Portanto deve fazer-se o programa uma vez e depois utilizar sempre esse programa.

• Outro exemplo:– Se quiser calcular um seno usa a função intriseca do

FORTRAN, sin e não vai programar o seu cálculo.

Linguagem Fortran

45

Page 46: Mini Curso de Programação Fortran Mini Curso de Programação Fortran Universidade Federal de Pelotas XVII Semana Acadêmica da Meteorologia 29 de novembro

Prof. Marcello MacarthyUFPel - CDTEC - Informática

• Para isso o FORTRAN dispõe de 2 ferramentas diferentes, que correspondem aos subprogramas:– As funções– As subrotinas

• As funções podem dividir-se em:– Funções intrinsecas.– Funções não intrinsecas.

Linguagem Fortran

46

Page 47: Mini Curso de Programação Fortran Mini Curso de Programação Fortran Universidade Federal de Pelotas XVII Semana Acadêmica da Meteorologia 29 de novembro

Prof. Marcello MacarthyUFPel - CDTEC - Informática

SubprogramasSubprogramas

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

Linguagem Fortran

47

Page 48: Mini Curso de Programação Fortran Mini Curso de Programação Fortran Universidade Federal de Pelotas XVII Semana Acadêmica da Meteorologia 29 de novembro

Prof. Marcello MacarthyUFPel - CDTEC - Informática

Funções – SintaxeFunções – Sintaxe

• Em adição às funções intrinsecas, o Fortran permite o desenho de novas funções. Uma função de Fortran function, tem a seguinte sintaxe:

type FUNCTION function-name (arg1, arg2, ..., argn)

IMPLICIT NONE

[specification part]

[execution part]

[subprogram part]

END FUNCTION function-name

Linguagem Fortran

48

Page 49: Mini Curso de Programação Fortran Mini Curso de Programação Fortran Universidade Federal de Pelotas XVII Semana Acadêmica da Meteorologia 29 de novembro

Prof. Marcello MacarthyUFPel - CDTEC - Informática

• Como invocar uma função no programa principal

• Uma função só produz um resultado.

• O resultado é passado para o programa principal no final da função com a instrução em que o nome da função é igualado ao resultado a transmitir.

• A função é invocada no programa principal com uma instrução em que o nome da função e a sua lista de argumentos são invocados.

Linguagem Fortran

49

Page 50: Mini Curso de Programação Fortran Mini Curso de Programação Fortran Universidade Federal de Pelotas XVII Semana Acadêmica da Meteorologia 29 de novembro

Prof. Marcello MacarthyUFPel - CDTEC - Informática

SubrotinasSubrotinas

• Uma Function, recebe input por via dos seus argumentos formais e devolve um valor, o valor da função, que fica armazenado na variável que tem o nome da função.

• Nalguns casos, não queremos devolver nenhum valor, ou queremos devolver mais do que um.

• Nesse caso, o Fortran tem as subrotinas que podem resolver este problema.

Linguagem Fortran

50

Page 51: Mini Curso de Programação Fortran Mini Curso de Programação Fortran Universidade Federal de Pelotas XVII Semana Acadêmica da Meteorologia 29 de novembro

Prof. Marcello MacarthyUFPel - CDTEC - Informática

SUBROUTINE subroutine-name (arg1, arg2, ..., argn)

IMPLICIT NONE

[specification part]

[execution part]

[subprogram part]

END SUBROUTINE subroutine-name

Linguagem Fortran

51

Page 52: Mini Curso de Programação Fortran Mini Curso de Programação Fortran Universidade Federal de Pelotas XVII Semana Acadêmica da Meteorologia 29 de novembro

Prof. Marcello MacarthyUFPel - CDTEC - Informática

Aspectos importantes a se investir Aspectos importantes a se investir

• Idiomas (Inglês) – 1,2,3,...• Áreas de Base Matemática, Física e Informática• METEOROLOGIA

Programação em Meteorologia

52

Considerações Finais

Page 53: Mini Curso de Programação Fortran Mini Curso de Programação Fortran Universidade Federal de Pelotas XVII Semana Acadêmica da Meteorologia 29 de novembro

Prof. Marcello MacarthyUFPel - CDTEC - Informática

• !Dados acerca de alunos usando tipo derivado. program alunos_met implicit none integer :: i,ndisc= 5 !Mude este valor, caso seja maior. type:: aluno    character(len= 20)::  nome    integer:: codigo    real:: n1,n2,n3,mf end type aluno type(aluno), dimension(5):: disc ! do i= 1,ndisc    print*, "Nome:"    read "(a)", disc(i)%nome    print*, "código:"    read*,disc(i)%codigo    print*, "Notas: N1,N2,N3:"    read*,disc(i)%n1,disc(i)%n2,disc(i)%n3    disc(i)%mf= (disc(i)%n1 + disc(i)%n2 + disc(i)%n3)/3.0 end do do i= 1,ndisc    print*, " "    print*, "-----------> ",disc(i)%nome," (",disc(i)%codigo,") <-----------"    print*, "         Média final: ",disc(i)%mf end do end program alunos_met

Exercício

53

Page 54: Mini Curso de Programação Fortran Mini Curso de Programação Fortran Universidade Federal de Pelotas XVII Semana Acadêmica da Meteorologia 29 de novembro

Obrigado!

54