FORTRAN 90 Danilo Ueno Takahagi.

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

Manipulação de Arquivos de Dados
Usando o botões de comando, label e textbox
Java: Comandos Básicos
VHDL - uma visão geral 5 tipos de unidades
VHDL - Tipos de dados e operações
MC542 Organização de Computadores Teoria e Prática
While While Condição // comandos End While. Exemplos While Var contador As Integer contador = 0 While (contador < 10) contador += 1 console.ConsoleWrite(contador)
Listas Encadeadas Circulares Listas Duplamente Encadeadas
Listas Encadeadas Circulares Listas Duplamente Encadeadas
1 Estruturas de Controle Márcia J. N. Rodrigues Lucena Especialização em Técnicas e Ferramentas de Apoio à Decisão Departamento.
Procedimentos e Funções
GRAFOS. Motivação Muitas aplicações em computação necessitam considerar conjunto de conexões entre pares de objetos: –Existe um caminho para ir de um.
PROGRESSÃO ARITMÉTICA P.A.
Grupo Paralelismo – Unesp RC
MATLAB 6 OTÍLIA GEROTTO R12. O que é o Matlab? - MATLAB (Matrix Laboratory) – software p/ cálculo numérico e científico de visualização de alta performance.
FORTRAN 90 Denise Yumi Takamura.
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.
SQL-3. Novo contexto e necessidade de : Manipular imagens Outros tipos de dados além de texto e números Recuperação de dados mais complexos Níveis distintos.
Vetores Variável Composta Homogênea Unidimensional
Vetores (2) Continuação.
Sintaxe de Fortran 25/abril/2006. Comandos Fortran PROGRAM PRINT READ STOP END.
Sintaxe de Fortran 25/abril/2006. Comandos Fortran PROGRAM PRINT READ STOP END.
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.
Estrutura de repetição 18/set. Uso Foi construído o problema de ler notas de um aluno e fazer média. E para 5 alunos ????
Arquiteturas de 4, 3, 2, 1 e 0 endereços.
Utilização do montador Daedalus
Teste Estrutural de Software
Teste Funcional de Software
Análise e Solução de Problemas
Profa. Graziela Santos de Araújo Algoritmos e Programação II, 2010
Geração de Código Cap. 8. Introdução Fase final para um compilador Entrada é uma representação intermediária do código fonte e a saída é um programa para.
Funções de um computador
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 Capítulo III Declarações e Comandos de Atribuição.
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,
Curso Técnico em Informática La Salle - Canoas
FUNDAÇÃO CARLOS CHAGAS
ALOCAÇÃO DINÂMICA DE MEMÓRIA
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.
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
Prof. Giovanny Lucero Introdução Prof. Giovanny Lucero
Tecnologia para Web JavaScript Enrique Pimentel Leite de Oliveira
Recursividade Estrutura de Dados.
Marco Antonio Montebello Júnior
Curso de Programação em C++
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
Baseado no documento do Prof. Ronaldo Martins da Costa
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.
Stored Procedure, Function and Trigger
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.
Exercícios de revisão.
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
ArrayList e Genéricos Profs. PROG2 - UNISINOS.
Transcrição da apresentação:

FORTRAN 90 Danilo Ueno Takahagi

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;

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;

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

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

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.

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

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

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

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

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

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

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

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)

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.

Exemplos de formatações: Linha de entrada de dado: 123456789 READ ´(4X,I5)´, num 56789 será armazenado em num READ ´(T4,I2,T8,I2,T2,I4)´, x,y,z x = 45 y = 89 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

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

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

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

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

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

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

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

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

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

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

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.

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

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

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

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.

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

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

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

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”

FIM