[PDF] Programação em Linguagem FORTRAN





Previous PDF Next PDF



Fortran 90 Handbook.pdf

For an informal and tutorial approach to learning Fortran 90 the book



Fortran 90/95 Programming Manual

Fortran 90/95 Programming Manual. It is assumed that you have access to a computer with a Fortran 90 or Fortran 95 compiler.



Acces PDF Fortran 90 Manual (PDF) - covid19.gov.gd

Right here we have countless books Fortran 90 Manual and collections to check out. We additionally have enough money variant types and with type of the 



COURS DE FORTRAN 90

http ://www.math.u-bordeaux1.fr/ mieussen/PAGE WEB/ENSEIGNEMENT/unix shell.pdf. [5] Luc Mieussens. Petit guide pour Emacs. Institut de Mathématiques - Univer-.



Introduç˜ao ao Fortran 90/95

http://www.fortranplus.co.uk/resources/john reid new 2003.pdf 2004. O manual de referência `a Linguagem Fortran 90/95 que acompanha o compilador intel ...



Fortran 90 Users Guide

Fortran 90 User's Guide. Part No.: 801-5492-10. Revision A March 1995. A Sun Microsystems



Introduction to Fortran 90

Introduction to Fortran 90. An introduction Course for. Novice Programmers. Student Notes. Rob Davies. Cardiff. Alan Rea. Belfast. Dimitris Tsaptsinos.



Programando en Fortran

en alguna situación especial de recursividad que permite Fortran 90 que será abordado más otro tipo de documentación en formato pdf o en INTERNET.



Guía de Programación en Fortran 90/95

Orden de las instrucciones de un programa. FORTRAN 90. 229. Nuevos aspectos incluidos en FORTRAN 95. - La construcción WHERE en FORTRAN 95.



Programação em Linguagem FORTRAN

Deve ficar claro que compiladores para FORTRAN 90 aceitam também os outros dois tipos e os baseados em FORTRAN N77 aceitam todos os comandos dos compiladores 

Introduc~ao ao Fortran 90/95

Apostila preparada para a disciplina de Modelos Com- putacionais da Fsica I, ministrada para o Curso de Li- cenciatura em Fsica do Departamento de Fsica, Ins- tituto de Fsica e Matematica, Fundac~ao Universidade

Federal de Pelotas, Pelotas - RS.

Incio: Janeiro de 2005.Vers~ao: 12 de abril de 2010

Sumario

Refer^encias Bibliogracasv

1 Introduc~ao1

1.1 As origens da Linguagem Fortran . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1

1.2 O padr~ao Fortran 90 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2

1.2.1 Recursos novos do Fortran 90 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3

1.2.2 Recursos em obsolesc^encia do Fortran 90 . . . . . . . . . . . . . . . . . . . . . . . . . 3

1.2.3 Recursos removidos do Fortran 90 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4

1.3 Uma revis~ao menor: Fortran 95 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4

1.3.1 Recursos novos do Fortran 95 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4

1.3.2 Recursos em obsolesc^encia do Fortran 95 . . . . . . . . . . . . . . . . . . . . . . . . . 5

1.3.3 Recursos removidos do Fortran 95 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5

1.4 O Fortran no Seculo XXI: Fortran 2003 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5

1.4.1 Recursos novos do Fortran 2003 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6

1.4.2 Recursos em obsolesc^encia do Fortran 2003 . . . . . . . . . . . . . . . . . . . . . . . . 6

1.4.3 Recursos removidos do Fortran 2003 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6

1.5 O novo padr~ao: Fortran 2008 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7

1.5.1 Recursos novos do Fortran 2008 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7

1.6 Comentarios sobre a bibliograa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7

1.7 Observac~oes sobre a apostila e agradecimentos . . . . . . . . . . . . . . . . . . . . . . . . . . 8

2 Formato do Codigo-Fonte9

2.1 Formato do programa-fonte . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9

2.2 Nomes em Fortran 90/95 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11

2.3 Entrada e sada padr~oes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11

2.4 Conjunto de caracteres aceitos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12

3 Tipos de Variaveis13

3.1 Declarac~ao de tipo de variavel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13

3.2 Variaveis do tipoINTEGER. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14

3.3 Variaveis do tipoREAL. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14

3.4 Variaveis do tipoCOMPLEX. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15

3.5 Variaveis do tipoCHARACTER. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15

3.6 Variaveis do tipoLOGICAL. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16

3.7 O conceito de especie(kind). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17

3.7.1 Fortran 77 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17

3.7.2 Fortran 90/95 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17

3.7.2.1 CompiladorIntel?Fortran. . . . . . . . . . . . . . . . . . . . . . . . . . 17

3.7.2.2 Compiladorgfortran. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19

3.7.2.3 CompiladorF. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19

3.7.2.4 Literais de diferentes especies . . . . . . . . . . . . . . . . . . . . . . . . . . . 21

3.7.3 Func~oes intrnsecas associadas a especie . . . . . . . . . . . . . . . . . . . . . . . . . . 22

3.7.3.1KIND(X). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22

3.7.3.2SELECTED_REAL_KIND(P,R). . . . . . . . . . . . . . . . . . . . . . . . . . . . 22

3.7.3.3SELECTED_INT_KIND(R). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23

3.8 Tipos derivados . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23

i iiSUM ARIO

4 Express~oes e Atribuic~oes Escalares27

4.1 Regras basicas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27

4.2 Express~oes numericas escalares . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28

4.3 Atribuic~oes numericas escalares . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29

4.4 Operadores relacionais . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30

4.5 Express~oes e atribuic~oes logicas escalares . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30

4.6 Express~oes e atribuic~oes de caracteres escalares . . . . . . . . . . . . . . . . . . . . . . . . . . 32

5 Comandos e Construtos de Controle de Fluxo35

5.1 Comandos obsoletos do Fortran 77 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35

5.1.1 Rotulos (statement labels). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35

5.1.2 ComandoGO TOincondicional . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36

5.1.3 ComandoGO TOcomputado . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36

5.1.4 ComandoIFaritmetico . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36

5.1.5 ComandosASSIGNeGO TOatribudo . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36

5.1.6 LacosDOrotulados . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37

5.2 Comando e construtoIF. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37

5.2.1 ComandoIF. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38

5.2.2 ConstrutoIF. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38

5.3 ConstrutoDO. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39

5.3.1 ConstrutoDOilimitado . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41

5.3.2 Instruc~aoEXIT. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41

5.3.3 Instruc~aoCYCLE. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42

5.4 ConstrutoCASE. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42

6 Processamento de Matrizes45

6.1 Terminologia e especicac~oes de matrizes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45

6.2 Express~oes e atribuic~oes envolvendo matrizes . . . . . . . . . . . . . . . . . . . . . . . . . . . 49

6.3 Sec~oes de matrizes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51

6.3.1 Subscritos simples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52

6.3.2 Tripleto de subscritos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52

6.3.3 Vetores de subscritos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52

6.4 Atribuic~oes de matrizes e sub-matrizes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53

6.5 Matrizes de tamanho zero . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53

6.6 Construtores de matrizes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55

6.6.1 A func~ao intrnsecaRESHAPE.. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56

6.6.2 A ordem dos elementos de matrizes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56

6.7 Rotinas intrnsecas elementais aplicaveis a matrizes . . . . . . . . . . . . . . . . . . . . . . . . 57

6.8 Comando e construtoWHERE. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57

6.8.1 ComandoWHERE. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57

6.8.2 ConstrutoWHERE. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58

6.9 Matrizes alocaveis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59

6.10 Comando e construtoFORALL. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62

6.10.1 ComandoFORALL. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62

6.10.2 ConstrutoFORALL. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62

7Rotinas Intrnsecas65

7.1 Categorias de rotinas intrnsecas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65

7.2 Declarac~ao e atributoINTRINSIC. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65

7.3 Func~oes inquisidoras de qualquer tipo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66

7.4 Func~oes elementais numericas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66

7.4.1 Func~oes elementais que podem converter . . . . . . . . . . . . . . . . . . . . . . . . . . 66

7.4.2 Func~oes elementais que n~ao convertem . . . . . . . . . . . . . . . . . . . . . . . . . . . 67

7.5 Func~oes elementais matematicas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67

7.6 Func~oes elementais logicas e de caracteres . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68

7.6.1 Convers~oes caractere-inteiro . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68

7.6.2 Func~oes de comparac~ao lexica . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69

7.6.3 Func~oes elementais para manipulac~oes de strings . . . . . . . . . . . . . . . . . . . . . 69

7.6.4 Convers~ao logica . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69

7.7 Func~oes n~ao-elementais para manipulac~ao de strings . . . . . . . . . . . . . . . . . . . . . . . 69Autor:Rudi Gaelzer { IFM/UFPelImpresso:12 de abril de 2010

SUM

ARIOiii

7.7.1 Func~ao inquisidora para manipulac~ao de strings . . . . . . . . . . . . . . . . . . . . . . 69

7.7.2 Func~oes transformacionais para manipulac~ao de strings . . . . . . . . . . . . . . . . . 70

7.8 Func~oes inquisidoras e de manipulac~oes numericas . . . . . . . . . . . . . . . . . . . . . . . . 70

7.8.1 Modelos para dados inteiros e reais . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70

7.8.2 Func~oes numericas inquisidoras . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70

7.8.3 Func~oes elementais que manipulam quantidades reais . . . . . . . . . . . . . . . . . . . 71

7.8.4 Func~oes transformacionais para valores de especie(kind). . . . . . . . . . . . . . . . . 71

7.9 Rotinas de manipulac~ao de bits . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72

7.9.1 Func~ao inquisidora . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72

7.9.2 Func~oes elementais . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72

7.9.3 Subrotina elemental . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73

7.10 Func~ao de transfer^encia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73

7.11 Func~oes de multiplicac~ao vetorial ou matricial . . . . . . . . . . . . . . . . . . . . . . . . . . . 73

7.12 Func~oes transformacionais que reduzem matrizes . . . . . . . . . . . . . . . . . . . . . . . . . 74

7.12.1 Caso de argumento unico . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74

7.12.2 Argumento opcionalDIM. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74

7.12.3 Argumento opcionalMASK. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74

7.13 Func~oes inquisidoras de matrizes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75

7.13.1 Status de alocac~ao . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75

7.13.2 Limites, forma e tamanho . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75

7.14 Func~oes de construc~ao e manipulac~ao de matrizes . . . . . . . . . . . . . . . . . . . . . . . . . 75

7.14.1 Func~ao elementalMERGE. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75

7.14.2 Agrupando e desagrupando matrizes . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75

7.14.3 Alterando a forma de uma matriz . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76

7.14.4 Func~ao transformacional para duplicac~ao . . . . . . . . . . . . . . . . . . . . . . . . . 76

7.14.5 Func~oes de deslocamento matricial . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76

7.14.6 Transposta de uma matriz . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76

7.15 Func~oes transformacionais para localizac~ao geometrica . . . . . . . . . . . . . . . . . . . . . . 76

7.16Func~ao transformacional para dissociac~ao de ponteiro. . . . . . . . . . . . . . . . . . . . . . 77

7.17 Subrotinas intrnsecas n~ao-elementais . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77

7.17.1 Relogio de tempo real . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77

7.17.2 Tempo da CPU . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78

7.17.3 Numeros aleatorios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78

8 Sub-Programas e Modulos79

8.1 Unidades de programa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79

8.1.1 Programa principal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79

8.1.2 Rotinas externas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81

8.1.3 Modulos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81

8.2 Sub-programas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81

8.2.1 Func~oes e subrotinas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81

8.2.2 Rotinas internas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83

8.2.3 Argumentos de sub-programas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83

8.2.4 ComandoRETURN. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84

8.2.5 Atributo e declarac~aoINTENT. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84

8.2.6 Rotinas externas e bibliotecas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86

8.2.7 Interfaces implcitas e explcitas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86

8.2.8 Argumentos com palavras-chave . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 88

8.2.9 Argumentos opcionais . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91

8.2.10 Tipos derivados como argumentos de rotinas . . . . . . . . . . . . . . . . . . . . . . . 92

8.2.11 Matrizes como argumentos de rotinas . . . . . . . . . . . . . . . . . . . . . . . . . . . 92

8.2.11.1 Matrizes como argumentos em Fortran 77 . . . . . . . . . . . . . . . . . . . . 92

8.2.11.2 Matrizes como argumentos em Fortran 90/95 . . . . . . . . . . . . . . . . . . 94

8.2.12 sub-programas como argumentos de rotinas . . . . . . . . . . . . . . . . . . . . . . . . 97

8.2.13 Func~oes de valor matricial . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 98

8.2.14 Recursividade e rotinas recursivas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101

8.2.15 Atributo e declarac~aoSAVE. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 103

8.2.16 Func~oes de efeito lateral e rotinas puras . . . . . . . . . . . . . . . . . . . . . . . . . . 104

8.2.17 Rotinas elementais . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 106Autor:Rudi Gaelzer { IFM/UFPelImpresso:12 de abril de 2010

ivSUM ARIO

8.3 Modulos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 107

8.3.1 Dados globais . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 108

8.3.2 Rotinas de modulos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111

8.3.3 Atributos e declarac~oesPUBLICePRIVATE. . . . . . . . . . . . . . . . . . . . . . . . . 113

8.3.4 Interfaces e rotinas genericas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 114

8.3.5 Estendendo rotinas intrnsecasviablocos de interface genericos . . . . . . . . . . . . . 117

8.4^Ambito(Scope). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 118

8.4.1 ^Ambito dos rotulos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 118

8.4.2^Ambito dos nomes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 118

9 Comandos de Entrada/Sada de Dados121

9.1 Comandos de Entrada/Sada: introduc~ao rapida . . . . . . . . . . . . . . . . . . . . . . . . . 121

9.2 Declarac~aoNAMELIST. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 125

9.3 Unidades logicas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 129

9.4 ComandoOPEN. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 129

9.5 ComandoREAD. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 132

9.6 ComandosPRINTeWRITE. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 133

9.7 ComandoFORMATe especicadorFMT=. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 134

9.8 Descritores de edic~ao . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 135

9.8.1 Contadores de repetic~ao . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 135

9.8.2 Descritores de edic~ao de dados . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 136

9.8.3 Descritores de controle de edic~ao . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 139

9.8.4 Descritores de edic~ao de strings . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 144

9.9 ComandoCLOSE. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 146

9.10 ComandoINQUIRE. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 146

9.11 Outros comandos de posicionamento . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 148

9.11.1 ComandoBACKSPACE. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 149

9.11.2 ComandoREWIND. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 149

9.11.3 ComandoENDFILE. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 149Autor:Rudi Gaelzer { IFM/UFPelImpresso:12 de abril de 2010

Refer^encias Bibliogracas

[1] Intel?Fortran Compiler for Linux. http://www.intel.com/software/products/compilers/ in/docs/manuals.htm.

Acesso em: 01 jun. 2005.

[2] CHAPMAN, STEPHEN J.Fortran 95/2003 for Scientists and Engineers. McGraw-Hill, 2007, xxvi +

976 pp., 3rd. Edic~ao.

[3] MARSHALL, A. C. Fortran 90 Course Notes. http://www.liv.ac.uk/HPC/HTMLFrontPageF90.html,

1996. Acesso em: 01 jun. 2005.

[4] METCALF, MICHAEL, REID, JOHN.Fortran 90/95 Explained. New York : Oxford University Press,

1996, 345 + xv pp.

[5] PAGE, CLIVE G. Professional Programer's Guide to Fortran77. http://www.star.le.ac.uk/ cgp/- prof77.pdf, Leicester, 2001. Acesso em: 01 jun. 2005. [6] RAMSDEN, S., LIN, F., PETTIPHER, M. A., NOLAND, G. S., BRO- OKE, J. M. Fortran 90. A Conversion Course for Fortran 77 Programmers. http://www.hpctec.mcc.ac.uk/hpctec/courses/Fortran90/F90course.html, 1995. Acesso em: 01 jun. 2005. [7] REID, JOHN. The New Features of Fortran 2003. Publicado em: http://www.fortranplus.co.uk/resources/johnreidnew2003.pdf, 2004. Acesso em: 03 Jun. 2006. v viREFER ^ENCIAS BIBLIOGRAFICASAutor:Rudi Gaelzer { IFM/UFPelImpresso:12 de abril de 2010

Captulo 1

Introduc~ao

"I don't know what the technical characteristics of the standard language for scientic and engineering computation in the year 2000 will be... but I know it will be called Fortran."

John Backus

Esta apostila destina-se ao aprendizado daLinguagem de Programac~ao Fortran 95.

1.1 As origens da Linguagem Fortran

Programac~ao no perodo inicial do uso de computadores para a soluc~ao de problemas em fsica, qu-

mica, engenharia, matematica e outras areas da ci^encia era um processo complexo e tedioso ao extremo.

Programadores necessitavam de um conhecimento detalhado das instruc~oes, registradores, enderecos de me-

moria e outros constituintes daUnidade Central de Processamento(CPU1) do computador para o qual eles escreviam o codigo. OCodigo-Fonteera escrito em um notac~ao numerica denominadacodigo octal. Com o tempo, codigos mnem^onicos foram introduzidos, uma forma de programac~ao conhecida comocodigo numericooucodigo Assembler. Estes codigos eram traduzidos em instruc~oes para a CPU por programas conhecidos comoAssemblers.Durante os anos 50 cou claro que esta forma de programac~ao era de todo

inconveniente, no mnimo, devido ao tempo necessario para se escrever e testar um programa, embora esta

forma de programac~ao possibilitasse um uso otimizado dos recursos da CPU. Estas diculdades motivaram que um time de programadores da IBM, liderados por John Backus, de- senvolvessem uma das primeiras chamadaslinguagem de alto-nvel, denominada FORTRAN (signicando FORmula TRANslation). Seu objetivo era produzir uma linguagem que fosse simples de ser entendida e usada, mas que gerasse um codigo numerico quase t~ao eciente quanto a linguagem Assembler. Desde o

incio, o Fortran era t~ao simples de ser usado que era possvel programar formulas matematicas quase como

se estas fossem escritas de forma simbolica. Isto permitiu que programas fossem escritos mais rapidamente

que antes, com somente uma pequena perda de eci^encia no processamento, uma vez que todo cuidado era

dedicado na construc~ao docompilador, isto e, no programa que se encarrega de traduzir o codigo-fonte em

Fortran para codigo Assembler ou octal.

Mas o Fortran foi um passo revolucionario tambem porque o programadores foram aliviados da tarefa

tediosa de usar Assembler, assim concentrando-se mais na soluc~ao do problema em quest~ao. Mais impor-

tante ainda, computadores se tornaram acessveis a qualquer cientista ou engenheiro disposto a devotar um

pequeno esforco na aquisic~ao de um conhecimento basico em Fortran; a tarefa da programac~ao n~ao estava

mais restrita a umcorpuspequeno de programadores especialistas. O Fortran disseminou-se rapidamente, principalmente nas areas da fsica, engenharia e matematica,

uma vez que satisfazia uma necessidade premente dos cientistas. Inevitavelmente, dialetos da linguagem

foram desenvolvidos, os quais levaram a problemas quando havia necessidade de se trocar programas entre

diferentes computadores. O dialeto de Fortran otimizado para processadores fabricados pela IBM, por

exemplo, geralmente gerava erro quando se tentava rodar o mesmo programa em um processador Burroughs,

ou em outro qualquer. Assim, em 1966, apos quatro anos de trabalho, a Associac~ao Americana de Padr~oes

(American Standards Association), posteriormente Instituto Americano Nacional de Padr~oes (American

National Standards Institute, ou ANSI) originou o primeiro padr~ao para uma linguagem de programac~ao,

agora conhecido como Fortran 66. Essencialmente, era uma subconjunto comum de varios dialetos, de

tal forma que cada dialeto poderia ser reconhecido como uma extens~ao do padr~ao. Aqueles usuarios que

desejavam escrever programasportaveisdeveriam evitar as extens~oes e restringir-se ao padr~ao.1

Do ingl^es:Central Processing Unit.

1

21.2.O padr~ao Fortran 90

O Fortran trouxe consigo varios outros avancos, alem de sua facilidade de aprendizagem combinada com um enfoque em execuc~ao eciente de codigo. Era, por exemplo, uma linguagem que permanecia proxima (e explorava) o hardware disponvel, ao inves de ser um conjunto de conceitos abstratos. Ela tambem

introduziu, atraves das declarac~oesCOMMONeEQUIVALENCE, a possibilidade dos programadores controlarem

a alocac~ao da armazenagem de dados de uma forma simples, um recurso que era necessario nos primordios da

computac~ao, quando havia pouco espaco de memoria, mesmo que estas declarac~oes sejam agora consideradas

potencialmente perigosas e o seu uso desencorajado. Finalmente, o codigo fonte permitia espacos em branco

na sua sintaxe, liberando o programador da tarefa de escrever codigo em colunas rigidamente denidas e

permitindo que o corpo do programa fosse escrito da forma desejada e visualmente mais atrativa. A proliferac~ao de dialetos permaneceu um problema mesmo apos a publicac~ao do padr~ao Fortran 66. A

primeira diculdade foi que muitos compiladores n~ao aderiram ao padr~ao. A segunda foi a implementac~ao,

em diversos compiladores, de recursos que eram essenciais para programas de grande escala, mas que eram

ignorados pelo padr~ao. Diferentes compiladores implementavam estes recursos de formas distintas.

Esta situac~ao, combinada com a exist^encia de falhas evidentes na linguagem, tais como a falta de cons-

truc~oes estruturadas de programac~ao, resultaram na introduc~ao de um grande numero depre-processadores.

Estes eram programas que eram capazes de ler o codigo fonte de algum dialeto bem denido de Fortran e

gerar um segundo arquivo com o texto no padr~ao, o qual ent~ao era apresentado ao compilador nesta forma.

Este recurso provia uma maneira de estender o Fortran, ao mesmo tempo retendo a sua portabilidade. O

problema era que embora os programas gerados com o uso de um pre-processador fossem portaveis, podendo

ser compilados em diferentes computadores, o codigo gerado era muitas vezes de uma diculdade proibitiva

para a leitura direta.

Estas diculdades foram parcialmente removidas pela publicac~ao de um novo padr~ao, em 1978, conhecido

como Fortran 77. Ele inclua diversos novos recursos que eram baseados em extens~oes comerciais ou pre-

processadores e era, portanto, n~ao um subconjunto comum de dialetos existentes, mas sim um novo dialeto

por si so. O perodo de transic~ao entre o Fortran 66 e o Fortran 77 foi muito mais longo que deveria,

devido aos atrasos na elaborac~ao de novas vers~oes dos compiladores e os dois padr~oes coexistiram durante

um intervalo de tempo consideravel, que se estendeu ate meados da decada de 80. Eventualmente, os

fabricantes de compiladores passaram a libera-los somente com o novo padr~ao, o que n~ao impediu o uso de

programas escritos em Fortran 66, uma vez que o Fortran 77 permitia este codigo antigo por compatibilidade.

Contudo, diversas extens~oes n~ao foram mais permitidas, uma vez que o padr~ao n~ao as incluiu na sua sintaxe.

1.2 O padr~ao Fortran 90

Apos trinta anos de exist^encia, Fortran n~ao mais era a unica linguagem de programac~ao disponvel para

os programadores. Ao longo do tempo, novas linguagens foram desenvolvidas e, onde elas se mostraram

mais adequadas para um tipo particular de aplicac~ao, foram adotadas em seu lugar. A superioridade do

Fortran sempre esteve na area de aplicac~oes numericas, cientcas, tecnicas e de engenharia. A comunidade

de usuarios do Fortran realizou um investimento gigantesco em codigos, com muitos programas em uso freq

uente, alguns com centenas de milhares ou milh~oes de linhas de codigo. Isto n~ao signicava, contudo,

que a comunidade estivesse completamente satisfeita com a linguagem. Varios programadores passaram a

migrar seus codigos para linguagens tais como Pascal, C e C++. Para levar a cabo mais uma modernizac~ao

da linguagem, o comit^e tecnico X3J3, aprovado pela ANSI, trabalhando como o corpo de desenvolvimento

do comit^e da ISO (International Standards Organization,Organizac~ao Internacional de Padr~oes) ISO/IEC

JTC1/SC22/WG5 (doravante conhecido como WG5), preparou um novo padr~ao, inicialmente conhecido como Fortran 8x, e agora como Fortran 90.

Quais eram as justicativas para continuar com o processo de revis~ao do padr~ao da linguagem Fortran?

Alem de padronizar extens~oes comerciais, havia a necessidade de modernizac~ao, em resposta aos desenvol-

vimentos nos conceitos de linguagens de programac~ao que eram explorados em outras linguagens tais como

APL, Algol, Pascal, Ada, C e C++. Com base nestas, o X3J3 podia usar os obvios benefcios de conceitos

tais como ocultamento de dados. Na mesma linha, havia a necessidade de fornecer uma alternativa a peri-

gosa associac~ao de armazenagem de dados, de abolir a rigidez agora desnecessaria do formato xo de fonte,

bem como de aumentar a seguranca na programac~ao. Para proteger o investimento em Fortran 77, todo o padr~ao anterior foi mantido como um subconjunto do Fortran 90.

Contudo, de forma distinta dos padr~oes previos, os quais resultaram quase inteiramente de um esforco

de padronizar praticas existentes, o Fortran 90 e muito mais um desenvolvimento da linguagem, na qual s~ao

introduzidos recursos que s~ao novos em Fortran, mas baseados em experi^encias em outras linguagens. Os

recursos novos mais signicativos s~ao a habilidade de manipular matrizes usando uma notac~ao concisa mais

poderosa e a habilidade de denir e manipular tipos de dados denidos pelo programador. O primeiro destes

recursos leva a uma simplicac~ao na escrita de muitos problemas matematicos e tambem torna o FortranAutor:Rudi Gaelzer { IFM/UFPelImpresso:12 de abril de 2010

Captulo 1.Introduc~ao3

uma linguagem mais eciente em supercomputadores. O segundo possibilita aos programadores a express~ao

de seus problemas em termos de tipos de dados que reproduzem exatamente os conceitos utilizados nas sua

elaborac~oes.

1.2.1 Recursos novos do Fortran 90

Um resumo dos novos recursos e dado a seguir:

?O Fortran 90 possui uma maneira para rotular alguns recursos antigos comoem obsolesc^encia(isto e, tornando-se obsoletos). ?Operac~oes de matrizes. ?Ponteiros. ?Recursos avancados para computac~ao numerica usando um conjunto de func~oes inquisidoras numericas.

?Parametrizac~ao dos tipos intrnsecos, permitindo o suporte a inteiros curtos, conjuntos de caracteres

muito grandes, mais de duas precis~oes para variaveis reais e complexas e variaveis logicas agrupadas.

?Tipos de dados derivados, denidos pelo programador, compostos por estruturas de dados arbitrariase de operac~oes sobre estas estruturas.

?Facilidades na denic~ao de colet^aneas denominadasmodulos, uteis para denic~oes globais de dados e para bibliotecas de subprogramas.

?Exig^encia que o compilador detecte o uso de construc~oes que n~ao se conformam com a linguagem ouque estejam em obsolesc^encia.

?Um novo formato de fonte, adequado para usar em um terminal. ?Novas estruturas de controle, tais comoSELECT CASEe uma nova forma para os lacosDO. ?A habilidade de escrever subprogramas internos e subprogramas recursivos e de chamar subprogramas com argumentos opcionais. ?Alocac~ao din^amica de dados (matrizes automaticas, matrizes alocaveis e ponteiros). ?Melhoramentos nos recursos de entrada/sada de dados. ?Varios novos subprogramas intrnsecos.

Todos juntos, estes novos recursos contidos em Fortran 90 ir~ao assegurar que o padr~ao continue a ser bem

sucedido e usado por um longo tempo. O Fortran 77 continua sendo suportado como um subconjunto durante um perodo de adaptac~ao. Os procedimentos de trabalho adotados pelo comit^e X3J3 estabelecem um perodo de aviso previo antes

que qualquer recurso existente seja removido da linguagem. Isto implica, na pratica, um ciclo de revis~ao, que

para o Fortran e de cerca de cinco anos. A necessidade de remoc~ao de alguns recursos e evidente; se a unica

ac~ao adotada pelo X3J3 fosse de adicionar novos recursos, a linguagem se tornaria grotescamente ampla,

quotesdbs_dbs14.pdfusesText_20
[PDF] manuel mathématiques seconde hachette

[PDF] manuel maths terminale s declic

[PDF] manuel maths terminale s en ligne

[PDF] manufactured dwelling park

[PDF] map analog input arduino

[PDF] map analog read

[PDF] map analog read arduino

[PDF] map of disneyland paris including hotels

[PDF] map of europe

[PDF] map of protected bike lanes in san francisco

[PDF] map of sequoia lodge disneyland paris

[PDF] mapa dakar 2020

[PDF] mapping analog values arduino

[PDF] mar insider list

[PDF] margins for 5x8 book