E. Laorga 1 5 de noviembre de 2020

E. Laorga1

5 de noviembre de 2020

1This modied text is an extract of the original Stack Overow Documentation created by following contributors and released under CC BY-SA 3.0 This website is not aliated with Stack Overow Email: tutorialpedia@

?ndice general

1 Empezando con Fortran

4

1.1 Observaciones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4

1.2 Versiones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4

1.3 Instalaci?n o conguraci?n . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4

1.4 Hola Mundo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5

1.5 Ecuaci?n cuadr?tica . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6

1.6 Insensibilidad al caso . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7

2 Alternativas modernas

8

2.1 Tipos de variables impl?citas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8

2.2 Declaraci?n IF aritm?tica . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9

2.3 Construcci?n de DO no en bloque . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10

2.4 Retorno alternativo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10

2.5 Forma de fuente ja . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12

2.6 Bloques comunes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14

2.7 GOTO asignado . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15

2.8 GOTO computado . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16

2.9 Especicaciones de formato asignado . . . . . . . . . . . . . . . . . . . . . . . . . . . 16

2.10 Sentencias de Funciones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17

3 Matrices

19

3.1 Notaci?n b?sica . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19

3.2 Arreglos asignables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20

3.3 Constructores de matrices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21

3.4 Especicaci?n de la naturaleza de la matriz: rango y forma . . . . . . . . . . . . . . . 22

3.5 Forma expl?cita . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23

3.6 Forma asumida . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24

3.7 Tama?o asumido . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24

3.8 Forma diferida . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24

3.9 Forma impl?cita . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24

3.10 Arreglos enteros, elementos de arreglo y secciones de arreglo . . . . . . . . . . . . . . 25

3.11 Arreglos enteros . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25

3.12 Elementos de matriz . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26

3.13 Secciones de matriz . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26

3.14 Componentes de matrices de matrices . . . . . . . . . . . . . . . . . . . . . . . . . . 27

3.15 Operaciones de matriz . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27

3.16 Adici?n y sustracci?n . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27

3.17 Funci?n . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28

3.18 Multiplicaci?n y divisi?n . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28

2

3.19 Operaciones matriciales . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28 3.20 Secciones de matrices avanzadas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29 3.21 Tripletes de sub?ndices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29 3.22 Sub?ndices vectoriales . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29 3.23 Secciones de matriz de rango m?s alto . . . . . . . . . . . . . . . . . . . . . . . . . . 30

4 Control de ejecuci?n

31

4.1 Construcci?n IF . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31

4.2 Construcci?n SELECT CASE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32

4.3 Construcci?n de bloques DO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33

4.4 Construcci?n WHERE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35

5 Extensiones de archivo fuente (-f, .f90, .f95.. . . ) y como se relacionan con el

compilador.

37

5.1 Introducci?n . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37

5.2 Extensiones y signicado . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37

6 I/O

39

6.1 Sintaxis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39

6.2 E/S simple . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39

6.3 Leer con un poco de comprobaci?n de errores . . . . . . . . . . . . . . . . . . . . . . 40

6.4 Pasando argumentos de l?nea de comando . . . . . . . . . . . . . . . . . . . . . . . . 41

7 Interfaces expl?citas e impl?citas

43

7.1 Subprogramas internos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43

7.2 Subprogramas externos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44

8 Interoperabilidad C

46

8.1 Llamando C desde Fortran . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46

8.2 Estructuras de C en Fortran . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47

9 Procedimientos - Funciones y subrutinas.

48

9.1 Observaciones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48

9.2 Sintaxis funcional . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48

9.3 Declaraci?n de devoluci?n . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49

9.4 Procedimientos recursivos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50

9.5 La intenci?n de los argumentos cticios . . . . . . . . . . . . . . . . . . . . . . . . . . 50

9.6 Haciendo referencia a un procedimiento . . . . . . . . . . . . . . . . . . . . . . . . . 51

10 Procedimientos intr?nsecos

54

10.1 observaciones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54

10.2 Uso de PACK para seleccionar elementos que cumplan una condici?n . . . . . . . . . 55

11 Programaci?n orientada a objetos

56

11.1 Denici?n de tipo derivado . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56

11.2 Tipo de Procedimientos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57

11.3 Tipos derivados abstractos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57

11.4 Extensi?n de tipo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58

11.5 Constructor Type . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59

3

Cap?tulo 1

Empezando con Fortran

1.1. Observaciones

Fortran es un lenguaje utilizado ampliamente en la comunidad cient?ca debido a su idoneidad para el c?lculo num?rico. Particularmente atractiva es su intuitiva notaci?n matricial, que facilita la escritura de c?mputos vectorizados r?pidos.

A pesar de su edad, Fortran todav?a est? activamente desarrollado, con numerosas implementaciones, incluyendo GNU, Intel, PGI y Cray.

1.2. Versiones

Versi?n

FORTRAN66 FORTRAN77 Fortran 90 Fortran 95 Fortran 2003 Fortran 2008

Nota

Primera estandarizaci?n por ASA (ahora ANSI) Forma ja, hist?rica Forma libre, norma ISO, operaciones matriciales. Procedimientos puros y elementales Programaci?n orientada a objetos Co-matrices

Lanzamiento

7-03-1996 15-04-1978 15-04-1991

15-6-1997 4-04-2004 10-09-2010

1.3. Instalaci?n o conguraci?n

Fortran es un lenguaje que puede compilarse utilizando compiladores suministrados por muchos proveedores. Diferentes compiladores est?n disponibles para diferentes plataformas de hardware y sistemas operativos. Algunos compiladores son software libre, algunos se pueden utilizar de forma gratuita y otros requieren la compra de una licencia.

El compilador gratuito m?s com?n de Fortran es GNU Fortran o gfortran. El c?digo fuente est? disponible en GNU como parte de GCC, la colecci?n del compilador GNU. Los binarios para muchos sistemas operativos est?n disponibles en . Las distribuciones de Linux a menudo contienen gfortran en su gestor de paquetes.

Otros compiladores est?n disponibles por ejemplo:

4

EKOPath por PathScale LLVM (backend v?a DragonEgg) Oracle Developer Studio

Absoft Fortran Compiler Compilador Intel Fortran Compilador NAG Fortran Compiladores de IGP En los sistemas HPC, a menudo hay compiladores especializados disponibles por el proveedor del sistema como, por ejemplo, los compiladores IBM o Cray . Todos estos compiladores soportan el est?ndar Fortran 95. ACM Fortran Forum ofrece una descripci?n general sobre el estado de Fortran 2003 y el estado de Fortran 2008 de varios compiladores y est? disponible en la Wiki de Fortran.

1.4. Hola Mundo

Cualquier programa de Fortran tiene que incluir el end como ?ltima declaraci?n. Por lo tanto, el programa Fortran m?s simple se ve as?:

end

Aqu? hay algunos ejemplos de programas hola mundo:

print *, "Hello, world" end

Con declaraci?n de write

write(*,*) "Hello, word" end

Para mayor claridad, ahora es com?n usar la declaraci?n de program para iniciar un programa

end y darle un nombre. La declaraci?n

puede referirse a este nombre para que sea obvio a que

se reere, y permitir que el compilador verique que el c?digo sea correcto. Adem?s, todos los

programas de Fortran deben incluir una declaraci?n implicit none. Por lo tanto, un programa

m?nimo de Fortran deber?a tener el siguiente aspecto:

program hello implicit none write(*,*) 'Hello world!' end program hello

El siguiente paso l?gico a partir de este punto es c?mo ver el resultado del programa hello world. Esta secci?n muestra c?mo lograr eso en un entorno similar a Linux. Suponemos que tiene

algunas nociones b?sicas de los comandos de shell, principalmente sabe c?mo llegar al terminal de shell. Tambi?n asumimos que ya ha congurado su entorno fortran. Utilizando su editor de texto

preferido (notepad, notepad++, vi, vim, emacs, gedit, kate, etc.), guarde el programa de saludo de

arriba (copie y pegue) en un archivo llamado hello.f90 en su directorio de inicio. hello.f90 es

su archivo fuente. Luego vaya a la l?nea de comandos y navegue hasta el directorio (?directorio de inicio?) Donde guard? su archivo fuente, luego escriba el siguiente comando:

>gfortran -o hello hello.f90

5

................
................

In order to avoid copyright disputes, this page is only a partial summary.

Google Online Preview   Download