PDF de programación - Elementos de programación Fortran

Elementos de programación Fortrangráfica de visualizaciones

Publicado el 12 de Julio del 2017
803 visualizaciones desde el 12 de Julio del 2017
1,3 MB
80 paginas
Creado hace 10a (21/10/2013)
Facultad de Ciencias Astronómicas y Geofísicas - UNLP -

Elementos de
programación Fortran

Pablo J. Santamaría

Elementos de programación Fortran.
Pablo J. Santamaría.
Octubre 2013 - Versión 0.1.7
e-mail: [email protected]
web: http://gcp.fcaglp.unlp.edu.ar/
integrantes:psantamaria:fortran:
start

Las imágenes que ilustran los capítulos son de
dominio público y fueron obtenidas en los sitios
http://www.public-domain-image.com y
http://www.publicdomainpictures.net.

Esta obra se distribuye bajo una
licencia de Creative Commons Atribución-
CompartirDerivadasIgual 3.0 Unported. Es decir,
se permite compartir, copiar, distribuir, ejecutar y
comunicar públicamente, hacer obras derivadas e
incluso usos comerciales de esta obra, siempre que se
reconozca expresamente la autoría original y el trabajo
derivado se distribuya bajo una licencia idéntica a ésta.

Prefacio

Fortran es, desde sus inicios, el lenguaje de programación ampliamente escogido en el ámbito de la
computación científica. El primer compilador Fortran data de 1957. Pero al igual que los lenguajes humanos,
con el paso del tiempo un lenguaje de programación evoluciona, adaptándose a las necesidades (y filosofía)
de la programación de la época. En el caso de Fortran, cada cierto período de tiempo un comité internacional
fija la sintaxis y gramática del lenguaje originando un estándar. Con un estándar del lenguaje a seguir, todos
los usuarios nos podemos asegurar que los programas funcionarán en cualquier computadora que tenga un
compilador Fortran que lo implemente. Tradicionalmente, los estándares de Fortran se denominan con la fecha
de su constitución. El primer estándar fue Fortran 66, al cual le siguió el Fortran 77, el cual introdujo mejoras
significativas al lenguaje (y aún hoy continúa siendo utilizado en la comunidad científica). Una mayor revisión
del lenguaje fue el Fortran 90. El Fortran 90 contiene como caso particular al Fortran 77 pero va más allá
incorporando muchas nuevas características. Una revisión menor del Fortran 90 condujo al estándar Fortran 95.
Los estándares más recientes, Fortran 2003 y 2008, introducen aún más nuevas características en el lenguaje.
En esta guía trabajaremos con el estándar Fortran 95 y algunas extensiones del Fortran 2003 implementadas
en el compilador gfortran, el compilador Fortran de la suite de compiladores GCC. Más aún asumiremos
que el usuario accederá al mismo en una computadora personal ejecutando el sistema operativo y utilidades de
usuario GNU/Linux. Puesto que el objetivo de esta guía es proporcionar una rápida introducción al lenguaje
haciendo énfasis en la escritura de código bien estructurado y modular, muchas características obsoletas o no
recomendadas proveniente de estándares previos no son siquiera nombradas. Asi mismo, el carácter introductorio
de la guía, no nos permite tampoco extendernos a conceptos y características más avanzadas introducidas en los
últimos estándares. Sin embargo, espero que esta guía, con los conceptos presentados y sus ejercicios, sea de
utilidad a aquellos que comienzan implementar algoritmos en Fortran.

Pablo J. Santamaría.
Marzo 2012.

iii

Índice general

1. Primeros pasos

.

.

1.1.1. Ejercicios .

.
1.2. Cuando las cosas fallan. .
.

1.1. Primeros pasos en programación. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.3. Estructura general de un programa Fortran . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

1.2.1. Ejercicios .

1.3.1. Ejercicios .

.
.
.

.
.
.

.
.
.

.

.

.

.

.

.

.

.

2. Tipos de datos simples

2.1.1. Ejercicios .

2.1. Tipos de datos simples.
.

.
.
2.2. Sentencias de asignación. .
.

2.2.1. Ejercicios .

.
.

.

.

.

.

.
.
.
.

.
.
.
.

.

.

2.3.1. Ejercicios .

.
2.4. Entrada y salida por lista.
.

.
.
2.4.1. Ejercicios .
.
Implementando lo aprendido. .

2.5.

.
.
.

.
.
.

.

.

2.3. Orden de precedencia de las operaciones aritméticas y conversión implícita de tipo.

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

3. Estructuras de control

.
3.1. Estructuras de control .
3.2. Estructura secuencial. .
.
3.3. Estructura de selección. .
.
.
.

.
.
.
.
.
3.4.1. Ejercicios .
.
Implementando lo aprendido. .

.
3.4. Estructura de iteración.
.

3.3.1. Ejercicios .

.
.
.
.
.
.

.
.
.
.
.
.

3.5.

.

.

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

4. Modularización

.

.

.
.
.

.
.
.

.
.
.

4.2.1. Ejercicios .

4.1. Programación modular
.
4.2. Funciones y subrutinas. .
.

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . .
4.3. Compilación por separado de las unidades del programa.
4.4.
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
4.5. Subprogramas como argumentos. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

4.5.1. Ejercicios .
.
4.6.1. Ejercicios .

Implementando lo aprendido. .

4.6. Módulos.

.
.
.

.
.
.

.
.
.

.
.
.

.
.
.

.
.
.

.

.

.

.

.
.
.
.
.
.

.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.

1
1
4
4
5
5
6

7
7
10
10
11
12
13
14
15
15

17
17
18
18
22
24
28
29

33
33
34
39
40
40
41
43
43
46

v

47
47
51
51
52

55
55
59
59
61
62

65
65
68
68
68
70
70
72

Índice general

5. Archivos

5.1. Entrada/salida por archivos. .
.
.
.

5.1.1. Ejercicios .
.
5.2.1. Ejercicios .

5.2. Formatos.

.
.
.

.
.
.

.
.
.

.
.
.

.

.

.

.

.
.
.
.

.
.
.
.

.
.
.
.

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

6. Arreglos

6.1.1. Ejercicios .

6.1. Datos compuestos indexados: arreglos. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
6.2. Asignacion estática y dinámica de memoria. . . . . . . . . . . . . . . . . . . . . . . . . . . .
.
6.3. Arreglos en subprogramas.
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
.
.
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

6.3.1. Ejercicios .

.
.

.
.

.
.

.
.

.

.

.

.

.

.

.

.

.

.

7. Precisión

.

.

.

.

.

.

7.1.1. Ejercicios .

7.1. Representación de punto flotante. .
.

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
7.2. Números de punto flotante de simple y doble precisión . . . . . . . . . . . . . . . . . . . . .
. . .
7.3.
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

Implementación en Fortran de los números de punto flotante de simple y doble precisión.
7.3.1. Ejercicios .
7.4. Números especiales.
7.4.1. Ejercicios .

.
.
.

.
.
.

.
.
.

.
.
.

.
.
.

.
.
.

.
.
.

.

.

.

vi

Capítulo 1

Primeros pasos

Hay dos formas de escribir programas sin errores.
Sólo la tercera funciona.

1.1. Primeros pasos en programación.

La resolución de un problema científico con una computadora, tarde o temprano, conduce a la escritura de un
programa que implemente la solución del problema. Un programa es un conjunto de instrucciones, ejecutables
sobre una computadora, que permite cumplir una función específica. Ahora bien, ¡la creación del programa no
comienza directamente en la computadora! El proceso comienza en papel diseñando un algoritmo para resolver
el problema. Un algoritmo es un conjunto de pasos (o instrucciones) precisos, definidos y finitos que a partir de
ciertos datos conducen al resultado del problema.

 Características de un algoritmo.

preciso: el orden de realización de cada paso está especificado,
definido: cada paso está especificado sin ambigüedad,
finito: el resultado se obtiene en un número finito de pasos.
entrada/salida: dispone de cero o más datos de entrada y devuelve uno o más resultados.

1

Capítulo 1. Primeros pasos

Figura 1.1. Diagrama de flujo para el algoritmo que calcula el área de un círculo.

Para describir un algoritmo utilizaremos un pseudocódigo. Un pseudocódigo es un lenguaje de especificación
de algoritmos donde las instrucciones a seguir se especifican de forma similar a como las describiríamos con
nuestras palabras.

Consideremos, como ejemplo, el diseño de un algoritmo para calcular el área de un círculo. Nuestro primer

intento, bruto pero honesto, es:

Calcular el área de un círculo.

Sin embargo, este procedimiento n
  • Links de descarga
http://lwp-l.com/pdf5321

Comentarios de: Elementos de programación Fortran (0)


No hay comentarios
 

Comentar...

Nombre
Correo (no se visualiza en la web)
Valoración
Comentarios...
CerrarCerrar
CerrarCerrar
Cerrar

Tienes que ser un usuario registrado para poder insertar imágenes, archivos y/o videos.

Puedes registrarte o validarte desde aquí.

Codigo
Negrita
Subrayado
Tachado
Cursiva
Insertar enlace
Imagen externa
Emoticon
Tabular
Centrar
Titulo
Linea
Disminuir
Aumentar
Vista preliminar
sonreir
dientes
lengua
guiño
enfadado
confundido
llorar
avergonzado
sorprendido
triste
sol
estrella
jarra
camara
taza de cafe
email
beso
bombilla
amor
mal
bien
Es necesario revisar y aceptar las políticas de privacidad