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

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

FORTRAN 90 Danilo Ueno Takahagi.

Apresentações semelhantes


Apresentação em tema: "FORTRAN 90 Danilo Ueno Takahagi."— Transcrição da apresentação:

1 FORTRAN 90 Danilo Ueno Takahagi

2 Breve Histórico da Linguagem
- A linguagem FORTAN foi a primeira linguagem de alto nível usada para programação de computadores, proposta por J. Backus, em 1953; - primeiro compilador para IBM 704 em 1957; - criação de FORTRAN 90 devido a pouca capacidade do FORTRAN 77 em relação a C, C++,ADA;

3 Objetivos: FORmula TRANslation;
Facilidade de transcrição de fórmulas matemáticas para serem usadas nos computadores; Direcionada para aplicações em matemática, engenharia e análises científicas;

4 Itens Fundamentais: Tipos de Dado Variáveis Comando de Atribuição
Expressões Aritméticas Expressões Lógicas Entrada e Saída Estrutura Condicional Estrutura de Repetição

5 Tipos de Dado INTEGER; REAL; COMPLEX; LOGICAL; CHARACTER.

6 Variáveis: 1 a 31 caracteres; 1º caractere deve ser uma letra;
Apenas letras, undescores, e dígitos são permitidos; Não são sensíveis a maiúsculo ou minúsculo; Podem ser utilizadas palavras chaves; Podem ser utilizadas nomes de procedimentos intrínsecos.

7 Declaração de Variáveis:
nome-do-tipo :: lista-de-identificadores Exemplos: character*3 :: p real :: r complex :: c logical :: l

8 Comando de Atribuição - Exemplos: -Variáveis inicializadas:
Identificador = expressão - Exemplos: Variáveis inicializadas: i = integer :: count = 0 r = real :: sum = 0.0 c = “ABC” character*4 :: c = “(cr)” l = .TRUE Logical :: l = .FALSE.

9 Expressões Aritméticas:
OPERADOR OPERAÇÃO + Adição - Subtração * Multiplicação / Divisão ** Potenciação prioridade operação Potenciação Multiplicação,divisão Adição,subtração

10 Algumas Funções Intrínsecas:
Nome Definição Tipo da função ALOG 10(X) logaritmo na base 10 de X Tipo do argumento de X EXP (X) o Nº e elevado a X ABS (X) valor absoluto de X BIT_SIZE(I) Retorna o número de bits do inteiro i Inteiro INT (A,Kind) conversão de nº. não real para inteiro, truncando MAX (A1,A2,A3,...) Valor máximo da seqüência Tipo do argumento

11 Greater than or equal to
Expressões Lógicas: Operador (Fortran 90) (Fortran 77) Significado < .LT. Less than <= .LE. Less than or equal to = = .EQ. Equal to /= .NE. Not Equal to > .GT. Greater than >= .GE. Greater than or equal to Operadores lógicos: AND Para conjunção .OR. Para disjunção .NOT Para a negação

12 Entrada e Saída: Externo Memória do Computador INPUT
teclado converte forma interna integer array arq disco  real fita magnética character OUTPUT monitor converte forma externa integer array impressora  real fita magnética character

13 Comandos de Entrada e Saída:
READ (cilist) input_list WRITE(cilist) output_list cilist – control information list Composto pelos especificadores do comando, como a unit (dispositivo de entrada) e a formatação dos dados. Default – unit 5, para entrada de dados unit 6, para saída de dados

14 Exemplos: READ (unit = 5,fmt = ´(3F6.2)´) x,y,z
READ (unit = *,fmt = ´(5F6.3)´) p,q,r,s,t WRITE (unit = 6,fmt = 200) x 200 FORMAT (F5.2) WRITE (unit = *,fmt = 201) x/y 201 FORMAT (F5.2)

15 Descritores de edição:
I – edita tipo inteiro F ou E – edita tipo real A – edita tipo caractere L – edita tipo lógico X,T,TL,TR – usado para controlar onde o dado deve ser lido numa seqüência de entrada e onde deve ser colocado na seqüência de saída.

16 Exemplos de formatações:
Linha de entrada de dado: READ ´(4X,I5)´, num 56789 será armazenado em num READ ´(T4,I2,T8,I2,T2,I4)´, x,y,z x = y = z = 2345 READ´(F3.1,F2.2,F3.0,TL6,F4.2)´,r1,r2,r3,r4 r1 = 12.3 r2 = 0.45 r3 = 678.0 r4 = 34.56

17 Estruturas Condicionais:
Estrutura condicional simples Comando IF lógico Estrutura condicional composta Estrutura CASE

18 Estrutura condicional simples:
IF (condição B) THEN seqüência de A comandos END IF IF,THEN e END IF – palavras chaves Condição B – expressão lógica

19 Comando IF lógico: IF (condição B) comando A IF – palavra chave
Condição B – é uma expressão lógica Comando A – qualquer comando, exceto um comando DO ou outro comando IF

20 Estrutura Condicional Composta:
IF (condição B) THEN seqüência de comandos ELSE seqüência B de comandos END IF IF,THEN,ELSE e END IF – palavras chaves Condição B – uma expressão lógica

21 PROGRAM quadratic REAL, PARAMETER :: delta=0.0 REAL :: a,b,c,d,sqrt_d,x1,x2 PRINT *,"Digite os tres coeficientes a,b,and c" PRINT * !para pular uma linha READ *,a,b,c d=b**2-4*a*c IF (d>delta) THEN sqrt_d = SQRT(d) x1 = (-b+sqrt_d)/(a+a) x2 = (-b-sqrt_d)/(a+a) PRINT *,"A equacao tem duas raizes reais: ",x1," e ",x2 ELSE IF (d==delta) THEN x1 = -b/(a+a) PRINT *,"A equacao tem uma raiz real: ",x1 ELSE PRINT *,"A equacao nao tem raizes reais" END IF END PROGRAM quadratic

22 Estrutura CASE: SELECT CASE (expressão case) CASE (case selecionado)
bloco de comandos . END SELECT

23 Exemplo da estrutura CASE:
! Programa que calcula qual estação do ano pertence o mês SELECT CASE (mes) CASE (“08”:”10”) PRINT *,date, “esta na primavera” CASE ( “11”,”12”,”01”) PRINT *,date, “esta no verão” CASE (“02”,”03”,”04”) PRINT *,date, “esta no outono” CASE (“05”,”06”,”07”) PRINT *,date, “esta no inverno” END SELECT

24 Estrutura de Repetição:
DO loops controlados DO loops flexíveis DO WHILE

25 Estrutura DO: DO count = initial, final, inc ... bloco de comandos
END DO DO e END DO – palavras chaves count – variável contadora initial – valor inicial final – valor final inc - incremento

26 Exemplo da Estrutura DO:
contador de iteração valores da variável DO i = 1,10 10 1,2,3,4,5,6,7,8,9,10 DO j = 20,50,5 7 20,25,30,35,40,45,50 DO x = -20,20,6 -20,-14,-8,-2,4,10,16 DO m = 20,-20,-6 20,14,8,2,-4,-10,-16

27 Estrutura DO mais flexível:
DO count = 1,max_iterations ... IF (term < epsilon) EXIT END DO OBS: depois de obedecer o comando EXIT ou após obedecer a quantidade máxima de iterações, a execução do programa continua a partir do próximo comando.

28 Estrutura DO WHILE: DO WHILE (condição A) ... bloco de comandos END DO
DO, WHILE, END DO - palavras chaves Condição A – expressão lógica

29 Ponteiros em FORTRAN 90: nome-do-tipo, POINTER :: lista-de-identificadores Exemplos: REAL, POINTER :: p,q,r,s INTEGER, POINTER :: i,j,k O objeto apontado pelo ponteiro deve ter a seguinte declaração: nome-do-tipo, TARGET :: lista-de-identificadores

30 Exemplo1: REAL :: a REAL, TARGET :: b REAL, POINTER :: p
INTEGER, POINTER :: q p pode apontar para a variável b (real, target); p não pode apontar para a (não tem target); q não pode apontar para b (tipos diferentes);

31 Exemplo2: REAL, POINTER :: u,v,w REAL, TARGET :: x u => x v => u
u => w u aponta para x; v aponta o que x aponta (ou seja, x); u tem associação indefinida.

32 Dissociação de ponteiros:
NULLIFY(lista-de-ponteiros) EXEMPLOS: NULLIFY(p) NULLIFY(a,b,c,q,r)

33 Funções para ponteiros:
ASSOCIATED(ponteiro) verifica se o ponteiro entre parênteses possui alguma associação (retorna TRUE ou FALSE) ALLOCATE(ponteiro) aloca espaço na memória que fica associado ao ponteiro DEALLOCATE(ponteiro) desaloca o espaço na memória

34 PROGRAM pointer TYPE :: cadastro CHARACTER(10) :: descricao INTEGER :: numero END TYPE cadastro TYPE (cadastro), POINTER :: ptr_1, ptr_2 ALLOCATE (ptr_1) !Cria um local para armazenar o tipo derivado !cadastro e associa ptr_1 com esse local ptr_1%descricao = 'carlos' !Armazena valores na estrutura criada ptr_1%numero = 1234 PRINT "(2A,I6)","ptr_1 = ",ptr_1 ptr_2 => ptr_1 !Associa ptr_2 com o que o ptr_1 apontava NULLIFY(ptr_1) !faz a dissociação IF (.NOT. ASSOCIATED (ptr_1)) THEN PRINT "(A)","ptr_1 esta dissociado" END IF PRINT "(2A,I6)","ptr_2 = ",ptr_2 DEALLOCATE(ptr_2) !Desaloca o espaço da memória e dissocia o ptr_2 End Program pointer

35 Bibliografia: Professores da UFMG - “Fortran Estruturado”;
REDWINE,C. - “Upgrading to Fortran 90”; ELLIS,T.M.R.; PHILIPS.I.R.; LAHEY,T.M. - “Fortran 90 Programing”

36 FIM


Carregar ppt "FORTRAN 90 Danilo Ueno Takahagi."

Apresentações semelhantes


Anúncios Google