fortran apostila

Download Fortran Apostila

Post on 21-Oct-2015

7 views

Category:

Documents

0 download

Embed Size (px)

TRANSCRIPT

  • Introduo ao Fortran 90

    CENAPAD-SP

  • 2

    NDICE INTRODUO 1-HISTRIA _______ 04 2-FORTRAN 77 05 3-FORTRAN 90 06 ELEMENTOS DO FORTRAN 90 4-EXEMPLO DE PROGRAMA 07 5-RECOMENDAES DE CODIFICAO 08 6-CARACTERSTICAS DE CODIFICAO 09 7-REGRAS DE CODIFICAO 10 8-COMPILAO NO AMBIENTE CENAPAD-SP 11 9-EXERCCIO 1-Compilao e Execuo _____ ______________________12 10-EXERCCIO 2- Reestruturao de programa 13 11-ESTRUTURA DE PROGRAMAS _____________ ___ _______14 12-TIPOS DE DADOS _______14 13-CONSTANTES _______15 14-TIPO IMPLCITO _______15 15-DECLARAO NUMRICA E LGICA _______16 16 - DECLARAO CARACTERE _______16 17-DECLARAO DE CONSTANTES _______17 18-INICIALIZAO DE VARIVEIS _______17 19-EXERCCIO 3 - Declarao de Variveis _______18 20-EXPRESSES _______19 21-Operador de ATRIBUIO _______19 22-Operadores NUMRICOS _______20 23-Precedncia de Operadores _______20 24-Operadores RELACIONAIS _______21 25-Operadores LGICOS _______21 26-Operador CARACTERE _______22 27-EXERCCIO 4 B Expresses _______23 CONSTRUES DE CONTROLE DE EXECUO 28-COMANDOS DE CONTROLE DE FLUXO _______24 29-Comando IF _______25 30-Comando IF...THEN...END IF _______26 31-Comando IF...THEN...ELSE...END IF _______27 32-Comando IF...THEN...ELSEIF...END IF _______28 33-Comando IF...THEN...ELSEIF...END IF Identificado _______29 34-EXERCCIO 5 - Comando IF 30 35-Comando DOBEXIT-END DO ALOOP@ Condicional _______31 36-Comando DOBCYCLE-EXIT-END DO ALOOP@ Cclico Condicional _______31 37-ALOOPs@ Identificados _______32 38-Comando DO-WHILE _______32 39-Comando DO iterativo _______32 40-Comando SELECT-CASE _______33 41-DIVISO POR INTEIROS _______33 42-EXERCCIO 6 B SELECT CAS E _______34 43-PROCEDIMENTOS INTRNSICOS _______35

  • 3

    NDICE

    44-Funes de CONVERSO 35 45-Funes MATEMTICAS 36 46-Funes NUMRICAS 36 47-Funes CARACTERES 36 48-EXERCCIO 7 B Funes Matemticas 37 49-Comando PRINT 38 50-Comando READ 38

    MATRIZES 51-DEFINIO DE MATRIZES 39 52-DECLARAO DE MATRIZES 40 53-SNTAXE DE MATRIZES 41 54-SECES DE MATRIZES 41 55-IMPRESSO E LEITURA DE MATRIZES 42 56-FUNES DE MATRIZES 43 57-ALOCAO DE MATRIZES 44 58-EXERCCIO 8 B DEFINIO DE MATRIZES 45 59-EXERCCIO 9 B FUNES DE MATRIZES 46 60-EXERCCIO 10 B USO DE MATRIZES 46

    SECES PRINCIPAIS DE PROGRAMAS 61-SECES DE UM PROGRAMA FORTRAN 47 62-PROGRAMA PRINCIPAL 48 63-PROCEDIMENTOS 49 64-Procedimentos: SUBROUTINE 49 65-Procedimentos: FUNCTION 50 66-EXERCCIO 11 B SUBROTINA 51 67-EXERCCIO 12 B FUNO 51 68-EXERCCIO 13 B PROCEDIMENTOS 52 69-SECO DE PROGRAMA: MODULE 53 70-EXERCCIO 14 B DEFINIO DE UM MDULO 54 71-EXERCCIO 15 B USO DE UM MDULO 54

    ENTRADA E SADA 72-ENTRADA / SADA 55 73-Comando OPEN 56 74-Comando READ 57 75-Comando WRITE 58 76-Comando FORMAT/FMT= 59 77-Descritores de Formatos 59 78-Outros comandos de I/O 59 79-Comando DATA 60 80-EXERCICIOS 15 B I/O 61 81-EXERCICIOS 16 B FORMATAO 61 82-REFERNCIAS 62

  • 4

    1-HISTRIA IBM Mathematical FORmula TRANslation System; Elaborado especificamente para aplicaes cientficas; Primeiro compilador considerado High-Level Idealizado por John Backus 1957; Primeiro Padro Comercivel em 1972: Fortran 66;

    Houve diversas verses de compiladores, similares ao Fortran, durante a dcada de 60, o que forou a necessidade de se padronizar o software.

    Atualizado em 1980 Fortran 77;

    Verso amplamente divulgada e ut ilizada no mundo inteiro pelas reas cientficas. Atualizado em 1991 ~ 12 anos Fortran 90;

    O planejamento para a atualizao do Fortran iniciou-se no incio da dcada de 80, mas seu desenvolvimento levou muito tempo devido ao compromisso de manter o Fortran como uma das linguagens cientficas mais eficientes, superior ao PASCAL, ADA e ALGOL. Os recursos existentes no Fortran 90 se equiparam aos existentes no C (Alocao dinmica de memria, apontadores e orientao ao objeto).

    High Performance Fortran HPF Fortran 90 para ambientes com memria distribuda; Atualmente Fortran 95; Padronizado por ANSI X3 e ISO/IEC JTC1/SC22/WG5

  • 5

    2-FORTRAN 77 O Fortran77 est muito obsoleto em relao s linguagens atuais e aos recursos existentes Formato fixo:

    Linhas da posio 7 a 72; Somente letras maisculas; Nomes at 6 caracteres.

    Impossibilidade de representar operaes paralelas intrnsecas;

    uma situao crtica, pois o Fortran considerado como uma linguagem de alta performance, no entanto, at o padro 77 no existia nenhuma instruo que permitisse o paralelismo, como compartilhamento de endereos de memria.

    No possvel a alocao de memria dinmica;

    No Fortran77, o programador obrigado a declarar vetores com o maior tamanho possvel para reservar memria durante a compilao.

    No possui representao numrica portvel;

    A preciso de campos numricos variava de uma mquina para outra, tornando o cdigo no portvel.

    No possui definio de tipo de dado pelo programador;

    No possvel criar novos formatos a partir dos existentes. No possui recurso explcita;

    No possvel chamar uma funo dentro de outra funo.

  • 6

    3-FORTRAN 90 Formato livre:

    132 caracteres por linha; Maisculas e minsculas; Nomes at 31 caracteres.

    Definio de ARRAYS paralelos;

    Novos recursos na definio de um ARRAY permitem a distribuio de vetores por entre vrios processos que compartilham um ambiente de memria compartilhada.

    Alocao de memria dinmica e apontadores; Definio de tipo de dados (Comando KIND); Recursividade Alm dos recursos descritos acima, vrios outros, melhoraram o Fortran tornando-o mais atual aos recursos existente em outras linguagens de programao :

    - Controle de estruturas :

    o DO...ENDDO o DO...WHILE o SELECT CASE

    - Substituio de comandos:

    o COMMON blocks MODULE o EQUIVALENCE TRANSFER

    - Novos comandos:

    o IMPLICIT NONE

  • 7

    4-EXEMPLO DE PROGRAMA MODULE Triangle_Operations IMPLICIT NONE CONTAINS FUNCTION Area(x,y,z) REAL :: Area ! function type REAL, INTENT( IN ) :: x, y, z REAL :: theta, height theta = ACOS((x**2+y**2-z**2)/(2.0*x*y)) height = x*SIN(theta); Area = 0.5*y*height END FUNCTION Area END MODULE Triangle_Operations PROGRAM Triangle USE Triangle_Operations IMPLICIT NONE REAL :: a, b, c, Area PRINT *, 'Welcome, please enter the& lengths of the 3 sides.' READ *, a, b, c PRINT *, 'Triangle''s area: ', Area(a,b,c) END PROGRAM Triangle

  • 8

    5-RECOMENDAES DE CODIFICAO Sempre utilize o comando IMPLICT NONE; Comandos, funes intrnsecas e as definidas pelo programador, em maisculas;

    OBS: No obrigatrio! Apenas uma recomendao. Variveis e constantes em minsculas;

    OBS: No obrigatrio! Apenas uma recomendao. Cada comando deve ser colocado por linha; Codifique com recuos; Acrescente comentrios s linhas.

  • 9

    6-CARACTERSTICAS DE CODIFICAO 132 caracteres por linha; Alfanumrico: a-z, A-Z, 0-9, _ ! Caractere de incio de comentrio; & Caractere de continuao de linha; ; Caractere de separao de comandos; Smbolos aritmticos:

    + Adio

    - Subtrao

    * Multiplicao

    / Diviso

    ** Expoente

  • 10

    7-REGRAS DE CODIFICAO Brancos no so permitidos:

    Palavras-chave INTEGER :: nome1 Certo INT EGER :: nome1 Errado

    Nomes

    REAL :: valor_total Certo REAL :: valor total Errado

    Brancos so permitidos:

    Entre palavras-chave Entre nomes e palavras-chave

    INTEGER FUNCTION val(x) Certo INTEGERFUNCTION val(x) Errado INTEGER FUNCTIONval(x) Errado

    Nomes de variveis e rotinas:

    Podem ter at 31 caracteres

    Devem comear com letra

    REAL :: a1 Certo REAL :: 1a Errado

    Podem continuar com letras, dgitos ou _

    CHARACTER :: atoz Certo CHARACTER :: a-z Errado CHARACTER :: a_zCerto

  • 11

    8-COMPILAO NO AMBIENTE CENAPAD-SP Ambiente IBM/AIX

    Fortran77: xlf, f77, fort77, g77 extenso: .f , .F

    Fortran90: xlf90, f90 extenso: .f , .f90

    Fortran95: xlf95 extenso: .f , .f95

    Na verdade o compilador um s (xlf) , mas com vrios scripts de execuo que possuem as opes de como o compilador deve ser executado, como:

    qlanglvl= Padro de Fortran qsuffix= Sufixo dos programas qfree=yes/no Tipo de formatao

    Ambiente INTEL/Linux

    Fortran77 e 90: ifort extenso: .f , .F , .f90 Opes bsicas de compilao: -o Nome do executvel (Default: a.out); -O, -O1, -O2, -O3 Otimizao do cdigo; -c No gera executvel; -g Gera informaes para depurao; -L Localizao da biblioteca para linkedio; -l Nome da biblioteca; -q32 Cdigo para 32bits (somente p

Recommended

View more >