Publicado el 11 de Julio del 2017
1.505 visualizaciones desde el 11 de Julio del 2017
1,9 MB
73 paginas
Creado hace 17a (18/02/2008)
Introducción a
Fortran 90
Generalidades
Variables en
Fortran 90
Expresiones
Arrays
Bloques de
control
Programación
estructurada
Modules
Instrucciones de
entrada/salida
Introducción a Fortran 90
18 de febrero de 2008
Introducción a
Fortran 90
Generalidades
Variables en
Fortran 90
Expresiones
Arrays
Bloques de
control
Programación
estructurada
Modules
Instrucciones de
entrada/salida
Esquema que seguiremos
1 Generalidades
2 Variables en Fortran 90
3 Expresiones
4 Arrays
5 Bloques de control
6 Programación estructurada
7 Modules
8 Instrucciones de entrada/salida
Tipos de programas en Fortran
Introducción a
Fortran 90
Generalidades
Variables en
Fortran 90
Expresiones
Arrays
Bloques de
control
Programación
estructurada
Modules
Instrucciones de
entrada/salida
• Programa fuente (nombre.f90): Es el programa que editamos y
que contiene las instrucciones del lenguaje Fortran. Para su
edición, utilizaremos cualquier editor de texto (edit, emacs, vi,
pico,...).
⇓ COMPILACI ÓN ⇓
• Programa objeto (nombre.o): El programa fuente se hace
comprensible al ordenador.
⇓ LINKADO ⇓
• Programa ejecutable (nombre.out).
Introducción a
Fortran 90
Generalidades
Variables en
Fortran 90
Expresiones
Arrays
Bloques de
control
Programación
estructurada
Modules
Instrucciones de
entrada/salida
Órdenes de compilación y linkado
• Compilación:
> gfortran -c dicotomia.f90
! se crea dicotomia.o
Pueden compilarse al mismo tiempo varios programas fuente:
> gfortran -c dicotomia.f90 auxiliar.f90
! se crean dicotomia.o y auxiliar.o
• Linkado:
> gfortran -o dicotomia.out dicotomia.o
Se puede crear un único ejecutable con varios programas objeto:
> gfortran -o dicotomia.out dicotomia.o auxiliar.o
• Todo junto (no recomendado):
> gfortran -o dicotomia.out dicotomia.f90
> gfortran -o dicotomia.out dicotomia.f90 auxiliar.f90
• Ejecución:
> ./dicotomia.out
Empezando...
Introducción a
Fortran 90
Generalidades
Variables en
Fortran 90
Expresiones
Arrays
Bloques de
control
Programación
estructurada
Modules
Instrucciones de
entrada/salida
• No hay distinción entre mayúsculas y minúsculas.
• Los nombres de programas y variables deben tener un máximo
de 32 caracteres. El primer carácter tiene que ser una letra y los
siguientes pueden ser números, letras o subrayado.
• Comentarios: Se ponen después del signo “!”.
• La longitud máxima de línea es de 132 caracteres.
• Para indicar que una instrucción continua en la línea siguiente se
pone “&” al final de la línea:
print*, &
’Esto es una prueba’
Además, la línea siguiente tiene que empezar por “&” si
queremos continuar textos entrecomillados:
print*, &
’Esta linea es muy larga &
& y por eso la dividimos’
• Se pueden poner varias instrucciones en la misma línea si las
separamos por “;”
A=0 ; B=0
Introducción a
Fortran 90
Generalidades
Variables en
Fortran 90
Expresiones
Arrays
Bloques de
control
Programación
estructurada
Modules
Instrucciones de
entrada/salida
Variables en Fortran 90
Hay cinco tipos básicos de variables:
• Enteras.
• Reales.
• Complejas.
• Lógicas.
• Carácter.
De forma implícita, Fortran guarda los nombres de variables que
empiecen por {i, j, k, l, m, n} para variables enteras y el resto para
variables reales de precisión simple.
Es recomendable empezar un programa anulando este criterio
predefinido con la instrucción IMPLICIT NONE. Así tenemos que
declarar todas las variables que utilicemos y evitaremos muchos
errores.
Introducción a
Fortran 90
Generalidades
Variables en
Fortran 90
Expresiones
Arrays
Bloques de
control
Programación
estructurada
Modules
Instrucciones de
entrada/salida
Variables enteras
Almacenamos en ellas números enteros: ...,-3,-2,-1,0,1,2,3,...
> integer :: i, j1, j2
!Declara i,j1,j2 como variables enteras
Dentro de las variables enteras se distinguen distintos tipos
dependiendo de la cantidad de memoria que se use para
almacenarlas. Estos tipos pueden depender de la máquina en que
estemos trabajando. En general:
• integer (kind=1) :: i
• integer (kind=2) :: j
• integer (kind=4) :: k
! Números enteros entre -127 y 127
! Números enteros entre -32767 y 32767
! Números enteros entre -2147483647 y
2147483647
En nuestro sistema, el tipo por defecto para variables enteras es
kind=4. De todas formas, conviene ponerlo explícitamente.
Variables reales
Almacenamos en ellas números reales.
Al igual que para las variables enteras, hay distintos tipos de variables
reales que dependen de la máquina utilizada. Habitualmente son:
• real (kind=4) :: x1
• real (kind=8) :: x2
• real (kind=16) :: x3
! 7 cifras significativas (precisión simple ).
! 14 cifras significativas (precisión doble).
! 28 cifras significativas (prec. cuádruple).
¡¡Atención!! El tipo real por defecto es kind=4. Nosotros usaremos,
salvo que se diga lo contrario, kind=8.
Introducción a
Fortran 90
Generalidades
Variables en
Fortran 90
Expresiones
Arrays
Bloques de
control
Programación
estructurada
Modules
Instrucciones de
entrada/salida
Sobre las constantes reales
Introducción a
Fortran 90
Generalidades
Variables en
Fortran 90
Expresiones
Arrays
Bloques de
control
Programación
estructurada
Modules
Instrucciones de
entrada/salida
real (kind=8) :: x1
x1=0.3
print*, x1
!En pantalla: 0.300000011920929
real (kind=8) :: x1
x1=0.3 8
print*, x1
!En pantalla: 0.300000000000000
Variables complejas
Los números complejos se almacenan como pares de números reales.
Los tipos son los mismos que para las variables reales:
> complex (kind=4) :: c1
> complex (kind=8) :: c2
> c1=(1. 4 , 2.05 4) ; c2=(0.1 8,0)
Introducción a
Fortran 90
Generalidades
Variables en
Fortran 90
Expresiones
Arrays
Bloques de
control
Programación
estructurada
Modules
Instrucciones de
entrada/salida
Variables lógicas
Admiten dos valores posibles : .FALSE. y .TRUE.
> logical :: log1, log2
> log1= .true.
> log2= .false.
Introducción a
Fortran 90
Generalidades
Variables en
Fortran 90
Expresiones
Arrays
Bloques de
control
Programación
estructurada
Modules
Instrucciones de
entrada/salida
Variables carácter
Nos permiten guardar cadenas alfanuméricas. Debemos especificar el
número máximo de caracteres.
> character (len=10) :: fichero
> fichero= ’datos’
Introducción a
Fortran 90
Generalidades
Variables en
Fortran 90
Expresiones
Arrays
Bloques de
control
Programación
estructurada
Modules
Instrucciones de
entrada/salida
Parameter
Sirve para almacenar un valor constante en una variable de forma que
no cambie a lo largo de todo el programa:
> integer, parameter :: dim=100
> real, parameter :: pi simple=3.14159265
> real(kind=8), parameter :: pi= 3.14159265358979
Introducción a
Fortran 90
Generalidades
Variables en
Fortran 90
Expresiones
Arrays
Bloques de
control
Programación
estructurada
Modules
Instrucciones de
entrada/salida
Expresiones
Expresiones aritméticas:
• operandos aritméticos
• operadores (ordenados por prioridad):
/
-
**
* ,
+ ,
El orden de prioridad puede alterarse usando paréntesis.
(por ej., real(kind=8)*entero(kind=4) ⇒ real(kind=8))
• resultado: será del tipo del operando más potente
Introducción a
Fortran 90
Generalidades
Variables en
Fortran 90
Expresiones
Arrays
Bloques de
control
Programación
estructurada
Modules
Instrucciones de
entrada/salida
Expresiones relacionales:
• operandos lógicos o aritméticos
• operadores:
> o .GT.
< o .LT.
== o .EQ.
; >= o .GE.
; <= o .LE.
• resultado: .TRUE. o .FALSE.
;
/= o .NE.
Expresiones
Introducción a
Fortran 90
Generalidades
Variables en
Fortran 90
Expresiones
Arrays
Bloques de
control
Programación
estructurada
Modules
Instrucciones de
entrada/salida
Expresiones lógicas:
• operandos: expresiones relacionales
• operadores: .NOT. , .AND. , .OR.
• resultado: .TRUE. o .FALSE.
Ejemplo:
> if ( (i<10).AND.(i/=5) ) . . .
Expresiones de caracteres:
• operandos: cadenas de caracteres
• operador: concatenación (//)
• resultado: otra cadena de caracteres
Ejemplo:
> ch1=’fich ’
> ch2=’out’
> ch3=char1//char2
! ch3=’fich out’
Expresiones
Orden de prioridad:
1 aritméticas
2 concatenación
3 relacionales
4 lógicas
Introducción a
Fortran 90
Generalidades
Variables en
Fortran 90
Expresiones
Arrays
Bloques de
control
Programación
estructurada
Modules
Instrucciones de
entrada/salida
Arrays
Introducción a
Fortran 90
Generalidades
Variables en
Fortran 90
Expresiones
Arrays
Bloques de
control
Programación
estructurada
Modules
Instrucciones de
entrada/salida
Los arrays son variables dimensionadas.
Identifican un conjunto de posiciones de memoria, todas ellas de un
mismo tipo (real, entero, etc.).
La forma de definirlas es:
real, dimension(3) :: a ! tres variables reales: a(1), a(2) y a(3)
real (kind=8), dimension(0:2) :: b
! b(0), b(1) y b(2)
real, dimension(3,0:2) :: c
! c(1,0), c(2,0),c(3,0),c(1,1), ...
integer (kind=4), dimension(-1:2,2) :: d ! d(-1,1), d(0,1),...
Introducción a
Fortran 90
Generalidades
Variables en
Fortran 90
Expresiones
Arrays
Bloques de
control
Programación
estructurada
Modules
Instrucciones de
entrada/salida
Asignación de valores en un array
• Asignación directa de un vector:
real (kind=8), dimension(0:3) :: a
a=(/1.0 8, 2.1 8, 3.9 8, 4.24 8/)
• Asignación mediante un bucle implícito:
integer, dimension(5) :: i1,i2,i3
i1=0
i2(1:4)=1; i2(5)=0
i3(1:5)=(/(2.0*j, j=1,5)/)
• Para la definición de una matriz hay dos opciones:
integer, dimension(3,2) :: i
(1) i(1,:)= (/1,2/) ; i(2,:)=(/3,4/) ; i(3,:)=(/5,6/)
(2) i=reshape( (/1,3,5,2,4,6/), shape=(/3,2/)).
Nota: El comando reshape suele llevar a errores.
Operaciones con arrays
• Se puede operar de manera directa:
integer, dimension(3) :: a, b, c, d
real (kind=8), dimension(20) :: x1, x2, x3
a=(/1, 2, 3/) ; b=(/4, -5, 6/)
!c = (/5,−3, 9/)
c=a+b
!d = (/4,−10, 18/)
d=a*b
...
x1=x1/
Comentarios de: Introducción a Fortran 90 (0)
No hay comentarios