0% encontró este documento útil (0 votos)
2 vistas15 páginas

Elementos y Tipos en Fortran 90

El documento describe los elementos fundamentales de FORTRAN 90, incluyendo conjuntos de caracteres, nombres, etiquetas y formas de escritura del código fuente. Se detallan los tipos de datos intrínsecos, literales, parámetros de tipo y objetos de datos con nombre, así como la instrucción IMPLICIT y los operadores aritméticos. Además, se mencionan las funciones de biblioteca disponibles en FORTRAN 90.

Cargado por

igelizaldem
Derechos de autor
© All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
2 vistas15 páginas

Elementos y Tipos en Fortran 90

El documento describe los elementos fundamentales de FORTRAN 90, incluyendo conjuntos de caracteres, nombres, etiquetas y formas de escritura del código fuente. Se detallan los tipos de datos intrínsecos, literales, parámetros de tipo y objetos de datos con nombre, así como la instrucción IMPLICIT y los operadores aritméticos. Además, se mencionan las funciones de biblioteca disponibles en FORTRAN 90.

Cargado por

igelizaldem
Derechos de autor
© All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd

ELEMENTOS DE FORTRAN 90

Conjunto de caracteres

Letras:

A B C D E F G H I J K L M N O P Q R S T U V W X Y Z

a b c d e f g h i j k l m n o p q r s t u v w x y z

Dígitos:

0 1 2 3 4 5 6 7 8 9

Caracteres especiales:

= + - * / ( ) , . ' : ! " % & ; < > ? $ _ espacio

Las letras mayúsculas son equivalentes a las minúsculas,


excepto en constantes de caracteres:

ABC es equivalente a abc

'IPN' es diferente a 'ipn'

En FORTRAN 77, los caracteres especiales válidos son:

= + - * / , . ' : $ espacio

? y $ no tienen algún significado especial

Nombres

Los nombres son usados en FORTRAN para identificar entidades


tales como variables o unidades de programa. Un nombre
comienza con una letra, puede ser hasta de 31 caracteres de
longitud y consiste de una combinación de letras, dígitos y el
carácter _. Ejemplos:

ARC FS0 Presion_de_vapor I Y MIN

En FORTRAN 77, los nombres tienen una longitud máxima de 6


caracteres y no pueden incluir al carácter _.

Etiquetas

1
Las instrucciones FORTRAN pueden tener etiquetas para su
identificación. Una etiqueta consiste de 1 a 5 dígitos, al
menos uno de ellos, diferente de 0. Ejemplos:

123 5000 9 0037 37

La etiqueta 0037 es equivalente a 37

Formas de escritura del código fuente

FORTRAN 90 ofrece dos formas de escribir el código fuente:


fija y libre.

Forma fija:

Columnas de la 1 a la 5 están reservadas para etiquetas. Las


etiquetas pueden contener espacios.
La columna 6 es usada para indicar la continuación de la línea
anterior mediante un carácter de continuación (cualquiera,
diferente del espacio o del 0). Puede haber hasta 19 líneas de
continuación. Las líneas de continuación no pueden estar
etiquetadas. Una instrucción END no puede ser continuada.
Columnas de la 7 a la 72 son usadas para las instrucciones
FORTRAN.
Las columnas de la 73 en adelante son ignoradas.
Los comentarios se indican comenzando una línea con una C o un
* en la columna 1. Adicionalmente, los comentarios al final
de una instrucción pueden ser escritos en cualquier columna
(excepto la 6), antecediendo a su texto un !. Las líneas de
comentarios no pueden ser continuadas.
El ; puede ser usado para separar varias instrucciones
escritas en una misma línea.
Los espacios son ignorados, excepto en constantes de
caracteres.

Forma libre:

Una línea puede tener una longitud hasta de 132 caracteres.


Los espacios son usados para separar nombres, constantes o
etiquetas de nombres, constantes o etiquetas adyacentes. Los
espacios también son utilizados para separar nombres de las
instrucciones FORTRAN.
Un ! inicia un comentario, incluyendo a los escritos al final
de una línea.
El ; puede ser usado para separar instrucciones en una misma
línea.
El & , empleado como último carácter (no espacio, no

2
comentario) de una línea, indica que ésta va a ser continuada
en la siguiente línea distinta de un comentario. Si un nombre,
instrucción o etiqueta no son terminados en una línea, el
primer carácter diferente del espacio en la línea de
continuación deberá ser un & seguido de los caracteres
restantes. Se permiten hasta 39 líneas de continuación.
Los comentarios no pueden ser continuados en otra línea.

FORTRAN 77 sólo admite el código fuente en forma fija, pero


excluye a los comentarios con ! y no es posible escribir más
de una instrucción en una línea.

c Ejemplo de código en forma fija


*234567
read *, a,b
c= (a+
1 b)/2 ! promedio de a y b
print *, a,b,c
end

! Ejemplos de código en forma libre


!
read *,a,b;c=(a+b)&
/2 ! promedio de a y b
print *,a,b,c
end

! Cálculo de la raíz de a/b


a= 5 ; b= 7.87
c= sqr&
&t(a/b) ! continuación de la función sqrt
print *,a,b,c
end

Tipos de datos intrínsecos

Los 5 tipos de datos intrínsecos de FORTRAN son: INTEGER,


REAL, COMPLEX, LOGICAL y CHARACTER. Los tipos de datos
intrínsecos tienen una o más clases. En Lahey FORTRAN 90, para
los tipos CHARACTER, INTEGER, REAL y LOGICAL, la clase indica
el número de bytes usados para representar cada dato. Para el
tipo COMPLEX, en Lahey FORTRAN 90, la clase es el número de
bytes usados para representar tanto a la parte imaginaria como
a la parte compleja. En la siguiente tabla se muestran las
clases disponibles en Lahey FORTRAN 90, así como sus
intervalos de representación y los dígitos decimales de
precisión correspondientes (para una IBM PC):

3
Tipo Clase Notas
INTEGER 1 intervalo:-127 a 127
INTEGER 2 intervalo:-32767 a 32767
INTEGER 4* intervalo:-2147483647 a 2147483647
REAL 4* intervalo:1.18X10-38 a 3.4X1038,7-8 dígitos de
precisión
REAL 8 intervalo:2.23X10-308 a 1.79X10308,15-16 dígitos
de precisión
COMPLEX 4* intervalo:1.18X10-38 a 3.4X1038,7-8 dígitos de
precisión
COMPLEX 8 intervalo:2.23X10-308 a 3.4X10308,15-16 dígitos
de precisión
LOGICAL 1 valores: .TRUE. y .FALSE.
LOGICAL 4* valores: .TRUE. y .FALSE.
CHARACTER 1* conjunto de caracteres ASCII

* clase por "default"

Literales

Una literal es una constante sin nombre. En FORTRAN 90 es


posible indicar la clase de la literal escribiendo el valor de
la constante seguida de _clase. Ejemplos de literales:

Literales enteras: 34, -578, +27, 0, 15872, 345_4, -12_1,


14_clase_entera (clase_entera es una constante entera con
nombre cuyo valor representa la clase del tipo de dato)

Literales reales: -7.87, .0003, 4.9e7, 1.51_8, -17.831_4,


1.25d-23, 3_class. La constante 4.9e7 representa a
4.9X107,mientras que 1.25d-23 equivale a 1.25X10-23 (así se
escriben en FORTRAN 77 las constantes de precisión doble)

Literales complejas: (-3.1, .07), (-1, +7), (4.9d5,-3.42_8)

Literales lógicas: .false. , .true., .true_1.

Literales de caracteres: 'ESIQIE IPN', "FORTRAN 90","I'am",


' ',cl_'xy'. Los caracteres que forman la literal deben

4
encerrarse entre " o entre '. FORTRAN 77 solo permite utilizar
al ' como delimitador en constantes de caracteres.

Parámetros de tipo

En FORTRAN 90 los tipos de datos pueden ser parametrizados. Lo


anterior implica que en una declaración de tipo se puede
especificar la clase en función de ciertos parámetros. Las
siguientes son funciones que manejan dichos parámetros:

KIND(X) Devuelve un resultado igual a la clase del tipo que


corresponde al dato X.

SELECTED_INT_KIND(r) El resultado es un entero igual a la


clase del tipo entero que "acomoda" todos los enteros n entre
-10 r<n<10r. Si tal clase no está disponible, el resultado es
-1. Si más de una clase está disponible, el resultado
corresponde a la clase con el intervalo de representación
menos amplio.

SELECTED_REAL_KIND(p,r) El resultado es un entero igual a la


clase del tipo real con precisión al menos de p dígitos
decimales e intervalo de representación de por lo menos
10-r<n<[Link] resultado es -1 si la precisión no es alcanzable
y -2 si el intervalo no está disponible. Ejemplos:

x=kind(1.75_8)

i=selected_int_kind(5)

f=selected_real_kind(10,200)

Para el tipo CHARACTER, existe un parámetro adicional: (LEN=


número máximo de caracteres que puede representar un objeto de
datos tipo CHARACTER).

Objetos de datos con nombre

Un objeto de datos con nombre, tal como una variable, una


constante o el resultado de una función, tiene las propiedades
del tipo de dato correspondiente. La información adicional
acerca de un objeto de datos con nombre, se conoce como
atributo. Los atributos pueden ser especificados en una
declaración de tipo o en declaraciones ex-profeso.

!n es un nombre asignado a la constante 50

5
!parameter es un atributo
integer (kind=4),parameter::n=50

integer (kind=4)::n !equivalente a la instrucción anterior


parameter (n=50)

real (kind=8)::uno,dos !uno y dos son nombres de variables

!equivalente a la instrucción anterior


double precision uno,dos

real x,y,z

complex a,b,c,d

logical respuesta

!len es la longitud en caracteres de la variable


character (len=50)::nombre

real (kind=selected_real_kind(12,200))::a,precisión_final

integer (kind=selected_int_kind(10))::i,j,k,iteraciones

integer,parameter::clase=selected_real_kind(5,50)
real (kind=clase)::x,y,z
read *,x,y
z=x+y+.007_clase

En FORTRAN 77 no hay clase ni atributos: el número de bytes


empleados para representar un dato se indican precedidos por
un *. Los valores por omisión son 4 bytes para los tipos
REAL, INTEGER o LOGICAL y 1 byte para el tipo CHARACTER:

real x,y,z

integer a,b,c

double precision z

parameter (n=75)

logical respuesta

character *40 direccion

real *4 a,b

6
real *8 z

integer *2 m,n

logical *1 logic

complex angulo,omega

Tipo implícito de objetos de datos con nombre

En ausencia de una instrucción de declaración explícita, el


tipo de un objeto de datos con nombre es determinado por la
primera letra de su nombre; si es I,J,K,L,M o N el tipo es
entero de la clase por "default", si es diferente de I,J,K,L,M
o N entonces el tipo es real de la clase por "default":

a,x_10,f,presión_osmotica !son variables de tipo real

i,n_50,n_alumnos,K !son variables de tipo entero

Instrucción IMPLICIT

Permite especificar la regla implícita para determinar el tipo


de un objeto de datos con nombre.

!los objetos cuyo nombre comience con i,j,k,l,m son reales


implicit real (i-m)

implicit double precision (a-h,o-z)

implicit real(i-n),integer(o-z)

!los objetos cuyo nombre empiece con f o v son del tipo


!complex
implicit complex (f,v)

!los objetos cuyo nombre comience con a,b,c, o f son del tipo
!lógico
implicit logical (a-c,f)

implicit real (kind=8) (d-p,z)

implicit character (kind=1,len=50) (n,s)

!deshabilita las reglas para el tipo implícito de variables


implicit none

7
En FORTRAN 77 no se permite la declaración IMPLICIT NONE.

Operadores aritméticos

Los operadores aritméticos disponibles en FORTRAN son:

** €
*,/ ‚
Exponenciación

+,- ‚
Multiplicación, división prioridad
Suma, resta

En expresiones con dos o más operadores de igual jerarquía, la


expresión es evaluada de izquierda a derecha. La
exponenciación, la cual es evaluada de derecha a izquierda, es
la excepción de la regla anterior. Ejemplos:

A + B/2

1) División de B entre 2
2) Al resultado de 1), se le suma A

Y**X/5*F

1) Se eleva Y a la potencia X
2) División del resultado de 1) entre 5
3) Multiplicación del resultado de 2) por F

3**4**2

1) 4 es elevado a la segunda potencia


2) 3 es elevado a una potencia igual al resultado de 1)

6 + G/N - K

1) División de G entre N
2) Al resultado de 1) se le suma 6
3) Resta de K al resultado de 2)

El orden de ejecución puede cambiarse con el uso de


paréntesis:

(A + B)/2

1) Suma de A y B
2) el resultado de 1) es dividido entre 2

Y**X/(5*F)

8
1) Multiplicación de 5 por F
2) Y es elevado a la potencia X
3) División del resultado de 2) entre el de 1)

(3**4)**2

1) 3 es elevado a la cuarta potencia


2) el resultado de 1) es elevado al cuadrado

6 + G/(N - K)

1) Resta de K a N
2) División de G entre el resultado de 1)
3) 6 es sumado al resultado de 2)

Asignación

El valor de la expresión, constante o variable colocada a la


izquierda del operador de asignación = es asignado a la
variable especificada a la izquierda del mismo:

A=B+15.7;C='ESIQIE'

I=I+1

7=45/A;F=(15.7_4,3.1E2);L=H

J=2/3 !0 es asignado a J

F=2./3 !.6666... es asignado a F

complex Z
Z=(-15.1) !-15.1+0i es asignado a Z

X=A**3 !A*A*A es asignado a X

X=A**3.0 !e3lnA es asignado a X

real (kind=8)::F10,Z
Z=95.7
A=F10

real(kind=selected_real_kind(12,300))::f
complex::n
n=(3,1)*(15+f-A)

9
Funciones de biblioteca

Son aquellas provistas por el compilador FORTRAN 90. También


se conocen como funciones intrínsecas.

Y=SIN(4*ATAN(1))

prueba=dexp(1.27_8)

Li=4*atan(1.0)

mayor_elemento=max(a,b,c,d,)

menor_elemento=min(x,y,z)

a=abs(10/n)

prueba=dexp(1.27_8)

z=mod(5,2)

El compilador supone que los argumentos de las funciones


trigonométricas y los resultados devueltos por sus inversas,
están dados en radianes. En el apéndice aparece una lista de
las funciones de biblioteca soportadas por FORTRAN 90.

Entrada/Salida dirigidas por lista

La instrucción read * permite leer los valores que serán


asignados a una lista de variables. Los datos serán
proporcionados a través de la unidad estándar de lectura (el
teclado de la computadora), separados entre sí por comas o por
espacios. Print * o write(*,*) imprimen en la unidad estándar
de escritura (la pantalla de la computadora) los valores de
una lista de variables, constantes o expresiones.

read *,a,b,j

print *,a,b,k_minima

read * c,h,temperatura

print *,'Pi=',Pi,'ángulo=',&
asin(x13)

write(*,*)a+b,"FORTRAN 90",17.5;print *,'ESIQIE'

10
print * !impresión de una línea en blanco

Instrucción PROGRAM

Especifica un nombre lógico para un programa principal. Por


ejemplo:

program Eliminacion_de_Gauss

program principal

El nombre dado en una instrucción program no podrá ser


empleado como nombre de un subprograma externo o de un módulo
en el mismo programa ejecutable. Si se omite la instrucción
PROGRAM, en Lahey FORTRAN 90, el compilador le asignará el
nombre _LF_MAIN.

Instrucciones STOP y END

La instrucción STOP termina la ejecución de un programa:

stop

stop 325

stop 'FIN DE PROGRAMA'

En los dos últimos ejemplos se especifica; ya sea un número de


1 a 5 dígitos o una cadena de caracteres, que son impresos al
ser ejecutado el STOP. El STOP que precede a la instrucción
END es opcional.
El END termina un programa y siempre debe ser la última
instrucción de este. Solo se permite un END en un programa:

end

end program muestra

program hipotenusa
read *,a,b;c=sqrt(a**2+b**2) !cálculo de la hipotenusa c de
print *,'a=',a,'b=',b,'c=',c !de un triangulo con catetos a
end program hipotenusa !y b

program abc
real::x=3.15,y=-7.38,z !En una declaración de tipo,es posible
z=x+y !asignar valores a las variables

11
print *,x,y,z
end

En FORTRAN 77 sólo se permiten STOP y END sin especificar más


información.

Ejercicio

Escriba un programa que determine el área total y volumen de


un cilindro de radio y altura conocidos.

área total = 2*área de la base + área lateral

área de la base = ð*radio2

área lateral = 2*ð*radio*altura

volumen = area de la base*altura

Seudocódigo#

!Este programa determina el volumen y el área total de


!un cilindro,conocidos el radio r y la altura h
real Pi,r,h,area_base,area_lateral,area_total,volumen
Pi=3.145192
lee r,h !lectura del radio y la altura
area_base=Pi*r**2
area_lateral=2*Pi*r*h
area_total=2*area_base+area_lateral !cálculo del area total
volumen=area_base*h !y del volumen
!impresión de resultados
escribe "radio=",r,'altura=',h,'área total=',area_total,
'volumen=',volumen
fin
#
En la elaboración de los seudocódigos, se utilizan las
reglas propuestas por Guillermo Levine G., en su libro
"Introducción al Computación y a la Programación
Estructurada",Segunda Edición.

Codificación en FORTRAN 77
F77L-EM/32 FORTRAN 77 Version 5.11 (compiling for the
80386/80486) Wed Mar 5 01:33:37 1997 Page: 1
Copyright(c) 1988-1992, Lahey Computer Systems, Inc. ALL RIGHTS
RESERVED

PROGRAM AREA , Opciones de Compilación:


/N0/N2/N4/N7/NA2/NB/NC/NC1/ND/NF/H/NI/NK/NL/P/NQ1/NQ2/NQ3/R/S/NT/
NV/W/NX/NZ1
Listado de fichero fuente

12
1 program area
2 c
3 c Este programa determina el volumen y el area
c total de
4 c un cilindro,conocidos el radio r y la altura
c h
5 *
6 parameter (Pi=3.141592)
7 real r,h,vol,areat,areab,areal
8 c lectura del radio y la altura
9 read *,r,h
10 areab=Pi*r**2
11 areal=Pi*2*r*h
12 c calculo del area total
13 areat=2*areab+areal
14 c calculo del volumen
15 vol=areab*h
16 c impresion de resultados
17 print *,'radio=',r,'altura=',h
18 print *,'area total',areat,
19 1 'volumen=',vol
20 stop
21 end

Codificación en FORTRAN 90
Lahey Fortran 90 Compiler Release 3.00c Wed Mar 5
01:39:58 1997 Page: 1
Copyright (C) 1994-1996 Lahey Computer Systems. All rights reserved.

PROGRAM AREA Compiling Options: -nchk -ndal -ndbl -nf90 -nfix -ng -hed -nin -inln

-lst -pca -stchk -nsyn -ntrap -nvax -w -nwo


-nxref
------------------------------------------------ Source Listing -------------------------------------------
- -
1 program area
2 ! Este programa determina el volumen y el area total de
3 ! un cilindro,conocidos el radio r y la altura h
4 !
5 real,parameter::Pi=3.141592_4
6 real::r,h,volumen,area_total,area_base,area_lateral
7 read *,r,h !lectura del radio y la altura
8 area_base=Pi*r**2
9 area_lateral=Pi*2*r*h
10 area_total=2*area_base+area_lateral !calculo del area total
11 volumen=area_base*h !calculo del volumen
12 ! impresion de resultados
13 print *,'radio=',r,"altura",h;print *,'area total=',area_total,&
14 'volumen=',volumen
15 stop 'FIN DE PROGRAMA'
16 end program area
Bytes of stack required for this program unit: 28.

13
14
15

También podría gustarte