Apostila FORTRAN

Download Apostila FORTRAN

Post on 30-Jul-2015

39 views

Category:

Documents

2 download

Embed Size (px)

TRANSCRIPT

IntroducaoaoFortran90/95Apostila preparada para a disciplina de Modelos Com-putacionais da Fsica I, ministrada para o Curso de Li-cenciaturaemFsicadoDepartamentodeFsica,Ins-tituto de Fsica e Matematica, Fundacao UniversidadeFederaldePelotas,Pelotas-RS.Incio: Janeirode2005. Versao: 7demaiode2012Apostilaescritacom:ProcessadordeDocumentosLYXhttp://www.lyx.org/http://wiki.lyx.org/LyX/LyXSumarioReferenciasBibliogracas v1 Introducao 11.1 AsorigensdaLinguagemFortran. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11.2 OpadraoFortran90 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21.2.1 RecursosnovosdoFortran90. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31.2.2 RecursosemobsolescenciadoFortran90 . . . . . . . . . . . . . . . . . . . . . . . . . 31.2.3 RecursosremovidosdoFortran90 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41.3 Umarevisaomenor: Fortran95. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41.3.1 RecursosnovosdoFortran95. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41.3.2 RecursosemobsolescenciadoFortran95 . . . . . . . . . . . . . . . . . . . . . . . . . 51.3.3 RecursosremovidosdoFortran95 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51.4 OFortrannoSeculoXXI:Fortran2003 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51.4.1 RecursosnovosdoFortran2003 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61.4.2 RecursosemobsolescenciadoFortran2003 . . . . . . . . . . . . . . . . . . . . . . . . 61.4.3 RecursosremovidosdoFortran2003 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61.5 Onovopadrao: Fortran2008 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71.5.1 RecursosnovosdoFortran2008 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71.6 Comentariossobreabibliograa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71.7 Observacoessobreaapostilaeagradecimentos . . . . . . . . . . . . . . . . . . . . . . . . . . 82 FormatodoCodigo-Fonte 92.1 Formatodoprograma-fonte . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92.2 NomesemFortran90/95 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112.3 Entradaesadapadroes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112.4 Conjuntodecaracteresaceitos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 123 TiposdeVariaveis 133.1 Declara caodetipodevariavel. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 133.2 VariaveisdotipoINTEGER . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 143.3 VariaveisdotipoREAL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 143.4 VariaveisdotipoCOMPLEX . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 153.5 VariaveisdotipoCHARACTER . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 153.6 VariaveisdotipoLOGICAL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 163.7 Oconceitodeespecie(kind) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 173.7.1 Fortran77 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 173.7.2 Fortran90/95. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 173.7.2.1 CompiladorIntelR Fortran . . . . . . . . . . . . . . . . . . . . . . . . . . 173.7.2.2 Compiladorgfortran. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 193.7.2.3 CompiladorF . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 193.7.2.4 Literaisdediferentesespecies. . . . . . . . . . . . . . . . . . . . . . . . . . . 213.7.3 Fun coesintrnsecasassociadas`aespecie . . . . . . . . . . . . . . . . . . . . . . . . . . 223.7.3.1 KIND(X) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 223.7.3.2 SELECTED_REAL_KIND(P,R). . . . . . . . . . . . . . . . . . . . . . . . . . . . 223.7.3.3 SELECTED_INT_KIND(R). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 233.8 Tiposderivados. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23iii SUMARIO4 ExpressoeseAtribuicoesEscalares 274.1 Regrasbasicasparaexpressoesescalares . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 274.2 Expressoesnumericasescalares . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 284.3 Atribui coesnumericasescalares . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 294.4 Operadoresrelacionais . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 294.5 Expressoeseatribui coeslogicasescalares . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 314.6 Expressoeseatribui coesdecaracteresescalares . . . . . . . . . . . . . . . . . . . . . . . . . . 325 ComandoseConstrutosdeControledeFluxo 375.1 ComandosobsoletosdoFortran77 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 375.1.1 Rotulos(statementlabels) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 375.1.2 ComandoGO TOincondicional . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 385.1.3 ComandoGO TOcomputado. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 385.1.4 ComandoIFaritmetico . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 385.1.5 ComandosASSIGNeGO TOatribudo. . . . . . . . . . . . . . . . . . . . . . . . . . . . 385.1.6 LacosDOrotulados . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 395.2 ComandoeconstrutoIF. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 395.2.1 ComandoIF . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 405.2.2 ConstrutoIF . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 405.3 ConstrutoDO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 415.3.1 ConstrutoDOilimitado. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 435.3.2 InstrucaoEXIT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 435.3.3 InstrucaoCYCLE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 445.4 ConstrutoCASE. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 446 ProcessamentodeMatrizes 476.1 Terminologiaeespecica coesdematrizes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 476.2 Expressoeseatribui coesenvolvendomatrizes . . . . . . . . . . . . . . . . . . . . . . . . . . . 516.3 Secoesdematrizes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 536.3.1 Subscritossimples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 546.3.2 Tripletodesubscritos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 546.3.3 Vetoresdesubscritos. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 546.4 Atribui coesdematrizesesub-matrizes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 556.5 Matrizesdetamanhozero . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 556.6 Construtoresdematrizes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 576.6.1 AfuncaointrnsecaRESHAPE.. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 586.6.2 Aordemdoselementosdematrizes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 586.7 Rotinasintrnsecaselementaisaplicaveisamatrizes. . . . . . . . . . . . . . . . . . . . . . . . 596.8 ComandoeconstrutoWHERE. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 596.8.1 ComandoWHERE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 596.8.2 ConstrutoWHERE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 606.9 Matrizesalocaveis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 616.10 ComandoeconstrutoFORALL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 646.10.1 ComandoFORALL. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 646.10.2 ConstrutoFORALL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 647 RotinasIntrnsecas 677.1 Categoriasderotinasintrnsecas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 677.2 Declara caoeatributoINTRINSIC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 677.3 Funcoesinquisidorasdequalquertipo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 687.4 Funcoeselementaisnumericas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 687.4.1 Fun coeselementaisquepodemconverter . . . . . . . . . . . . . . . . . . . . . . . . . . 687.4.2 Fun coeselementaisquenaoconvertem. . . . . . . . . . . . . . . . . . . . . . . . . . . 697.5 Funcoeselementaismatematicas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 697.6 Funcoeselementaislogicasedecaracteres . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 707.6.1 Conversoescaractere-inteiro. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 707.6.2 Fun coesdecomparacaolexica. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 717.6.3 Fun coeselementaisparamanipulacoesdestrings . . . . . . . . . . . . . . . . . . . . . 717.6.4 Conversaologica . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 717.7 Funcoesnao-elementaisparamanipulacaodestrings . . . . . . . . . . . . . . . . . . . . . . . 71Autor:RudiGaelzerIFM/UFPel Impresso:7demaiode2012SUMARIO iii7.7.1 Fun caoinquisidoraparamanipulacaodestrings . . . . . . . . . . . . . . . . . . . . . . 717.7.2 F