Curso básico de fortran

46
 TEMA 1: ESTRUCTURAS Y ELEMENTOS DEL LENGUAJE FORTRAN. CARACTERES DEL LENGUAJE FORTRAN. -El lenguaje Fortran tiene unos n£meros y signos que utiliza y que funcionan como caracteres o letras, siendo los caracteres permitidos por este lenguaje los siguientes: -Letras de la A a la Z (Tanto may£sculas como min£sculas). -N£meros del 0 al 9. -Caracteres de puntuaci¢n ., ;. -Caracteres matemticos +, *, /, -. -Caracteres especiales $, , =, <, >, (), :, ´, y el blanco. -El lenguaje Fortran no distingue en la sintaxis las letras may£sculas y min£sculas salvo en el caso de los literales, y los signos de la comparaci¢n no los suele utilizar. -Las nuevas versiones de Fortran usan todos los c¢digos relacionales pero con la excepci¢n de que forman parte de los literales. -Semntica, es lo que define el contenido de ciertas palabras y un conjunto de palabras reservadas cada una con un cometido especial. En este lenguaje hay un conjunto peque¤o de palabras reservadas. -No existen palabras reservadas como tal, sino palabras clave, sabiendo que cualquier palabra puede ser un identificador vlido. -Con objeto de dar nombre a las cosas que se manipulan (M¢dulo, ficheros estructuras, constantes, etc.) se establecen unas normas que son: -El carcter de una palabra debe ser un carcter alfab tico, que aparte de las 52 letras considera como caracteres alfab ticos los s¡mbolos $ y . -El n£mero mximo de caracteres que se pueden utilizar son 31, aunque el compilador s¢lo reconoce los seis primeros. -El nombre de los objetos debe tener un significado sobre el objeto que se est tratando (Que tenga sentido), se debe hacer una normalizaci¢n de los nombres. FORMATO DEL LENGUAJE FORTRAN. -El lenguaje Fortran no est formateado. Las cinco primeras columnas son columnas reservadas para las etiquetas (Un n£mero desde el uno hasta el 9) y referenciar una l¡nea. -La etiqueta comprender un n£mero del 1 al 99999 entero y sin signo, que deber ser £nica y ocupar memoria. -No tiene por qu estar ordenada pero no se puede poner una etiqueta ms de una vez en un programa (Recomendable colocar la etiqueta para los formatos). -La sexta columna ir en blanco y s¢lo se utiliza para indicar que la l¡nea que se est tratando es una l¡nea de continuaci¢n (Cualquier carcter es vlido). -Como mximo se pueden continuar 19 l¡neas de programa y hay que hacer una indicaci¢n. -Las columnas 7 a 72 sirven para colocar el c¢digo fuente. Todas las sentencias se clasificarn en dos grupos: -Ejecutables (Especifican la acci¢n y generan una instrucci¢n). -No ejecutables (Informaci¢n y naturaleza de los datos). -Las columnas 73 a 80 sirven para realizar todo tipo de comentarios, entre los cuales pueden figurar: -Nombre del programador.

Transcript of Curso básico de fortran

Page 1: Curso básico de fortran

5/12/2018 Curso b sico de fortran - slidepdf.com

http://slidepdf.com/reader/full/curso-basico-de-fortran 1/46

TEMA 1: ESTRUCTURAS Y ELEMENTOS DEL LENGUAJE FORTRAN.

CARACTERES DEL LENGUAJE FORTRAN.-El lenguaje Fortran tiene unos n£meros y signos que utiliza y quefuncionan como caracteres o letras, siendo los caracteres permitidospor este lenguaje los siguientes:

-Letras de la A a la Z (Tanto may£sculas como min£sculas).-N£meros del 0 al 9.-Caracteres de puntuaci¢n ., ;.-Caracteres matemticos +, *, /, -.-Caracteres especiales $, , =, <, >, (), :, ´, y el blanco.

-El lenguaje Fortran no distingue en la sintaxis las letras may£sculasy min£sculas salvo en el caso de los literales, y los signos de lacomparaci¢n no los suele utilizar.-Las nuevas versiones de Fortran usan todos los c¢digos relacionalespero con la excepci¢n de que forman parte de los literales.

-Semntica, es lo que define el contenido de ciertas palabras y unconjunto de palabras reservadas cada una con un cometido especial. Eneste lenguaje hay un conjunto peque¤o de palabras reservadas.-No existen palabras reservadas como tal, sino palabras clave, sabiendoque cualquier palabra puede ser un identificador vlido.-Con objeto de dar nombre a las cosas que se manipulan (M¢dulo, ficherosestructuras, constantes, etc.) se establecen unas normas que son:

-El carcter de una palabra debe ser un carcter alfabtico, queaparte de las 52 letras considera como caracteres alfabticos loss¡mbolos $ y .

-El n£mero mximo de caracteres que se pueden utilizar son 31,aunque el compilador s¢lo reconoce los seis primeros.

-El nombre de los objetos debe tener un significado sobre elobjeto que se est tratando (Que tenga sentido), se debe haceruna normalizaci¢n de los nombres.

FORMATO DEL LENGUAJE FORTRAN.-El lenguaje Fortran no est formateado. Las cinco primeras columnas soncolumnas reservadas para las etiquetas (Un n£mero desde el uno hasta el9) y referenciar una l¡nea.-La etiqueta comprender un n£mero del 1 al 99999 entero y sin signo,que deber ser £nica y ocupar memoria.-No tiene por qu estar ordenada pero no se puede poner una etiquetams de una vez en un programa (Recomendable colocar la etiqueta para

los formatos).-La sexta columna ir en blanco y s¢lo se utiliza para indicar que lal¡nea que se est tratando es una l¡nea de continuaci¢n (Cualquiercarcter es vlido).-Como mximo se pueden continuar 19 l¡neas de programa y hay que haceruna indicaci¢n.-Las columnas 7 a 72 sirven para colocar el c¢digo fuente. Todas lassentencias se clasificarn en dos grupos:

-Ejecutables (Especifican la acci¢n y generan una instrucci¢n).-No ejecutables (Informaci¢n y naturaleza de los datos).

-Las columnas 73 a 80 sirven para realizar todo tipo de comentarios,

entre los cuales pueden figurar:

-Nombre del programador.

Page 2: Curso básico de fortran

5/12/2018 Curso b sico de fortran - slidepdf.com

http://slidepdf.com/reader/full/curso-basico-de-fortran 2/46

-Versi¢n del programa.-Fecha del programa.-Descripci¢n del programa.-E/S del programa.-Variables y qu representan.

-La primera columna puede llevar un conjunto de caracteres con un

significado especial que sern la c, C, * y el s¡mbolo $.-Los comentarios no pueden ir entre l¡neas de continuaci¢n pero puedenestar en cualquier parte del programa excepto la anteriormente citada.

TIPOS DE MODULOS.-Para referenciar un programa principal en Fortran se utilizar elsiguiente formato, teniendo en cuenta que dentro del programa principalirn las acciones a cumplir:

- PROGRAM Identificadoracci¢n1acci¢n2

.......acci¢nnEND

-El especificador o identificador del programa puede ser omitido y noes necesario colocarlo dentro de un programa.

-FUNCTION Identificador (Parmetros)acci¢n1acci¢n2.......acci¢nn

END

-Se utilizar la estructura de Funci¢n cuando se necesite devolver o noun valor, teniendo en cuenta que la lista de los parmetros pasadosdeben ser separados por comas.

-SUBROUTINE Identificador (Parmetros)acci¢n1acci¢n2.......acci¢nn

END

-La Subrutina o Procedimiento se utilizar en aquellos casos en los quese necesite establecer una relaci¢n de ms de un tipo de dato. La listade parmetros pasados deben ser separados por comas.

-BLOCK DATA Identificadoracci¢n1acci¢n2.......acci¢nn

END

-Esta estructura representa un conjunto de instrucciones meramentedescriptivas que sern datos comunes o aparte de los Subprogramas y

se pueden inicializar.-Estos cuatro elementos se pueden colocar a partir del programaprincipal o se pueden ejecutar y compilar separadamente.

Page 3: Curso básico de fortran

5/12/2018 Curso b sico de fortran - slidepdf.com

http://slidepdf.com/reader/full/curso-basico-de-fortran 3/46

-El lenguaje no necesita que una variable est declarada anteriormentesino que tienen una declaraci¢n impl¡cita (Lo distingue por la primeraletra).

TIPOS DE DATOS.-Como norma general el lenguaje no utiliza tipos de datos.

DATOS DE TIPO ENTERO.-Son todas las variables que comiencen por una letra que est en elintervalo I-N, sern variables tomadas como enteras si no se declaraexpl¡citamente de otro tipo o tambin se pueden declarar como uno delos siguientes:

-INTEGER *1 (Asigna al entero un byte de longitud).-INTEGER *2 (Asigna al entero dos bytes de longitud).-INTEGER *4 (Asigna al entero cuatro bytes de longitud).

-Si despus de la palabra reservada INTEGER no se pone nada la longitudpor defecto de la variable declarada sern 4 bytes.

-El separador usado suele ser la coma y para definir varias variables detipo entero se pueden usar los siguientes formatos:

-INTEGER *1 Cont, Cont1, Cont2 (Declara 3 variables enteras).-Signo 2..36 0..9 ¢ A..Z .- N£mero (Indica base 16 y es perfectamente vlido).

-El segundo formato define un n£mero en otra base que no sea basedecimal, siendo el s¡mbolo el que indica la base en la que se va harepresentar el n£mero.

DATOS DE TIPO REAL.-Es el n£mero manipulado por excelencia en Fortran. Hay dos operaciones

de tipo general que son la coma fija y la coma flotante.-Los formatos que utilizan los n£meros reales sern:

-Signo parte entera. parte fraccionaria (C. fija).-Signo parte entera E signo parte fraccionaria (C. flotante)

-Para declarar una variable de tipo real se usar uno de los siguientesformatos:

-REAL *4 (Asigna al real cuatro bytes de longitud).-REAL *8 (Asigna al real ocho bytes de longitud).

-El error que se comete al usar cuatro bytes de longitud se producir enlas siete u ocho cifras despus de la coma.-Cuando se utiliza un formato de cuatro bytes estamos ante un n£mero desimple precisi¢n.-El real declarado como ocho bytes abarca despus de la coma 14 o 15cifras significativas para la parte entera del n£mero que esaproximadamente el doble del formato de cuatro bytes.-Cuando se utiliza un formato de ocho bytes estamos ante un n£mero dedoble precisi¢n.

DATOS DE TIPO COMPLEJO.-Este tipo de datos consta de una parte real y de una parte que esimaginaria y en su representaci¢n se asumir la parte real y se quedar

con la parte imaginaria.-Los formatos que se utilizan para los n£meros complejos sern:

Page 4: Curso básico de fortran

5/12/2018 Curso b sico de fortran - slidepdf.com

http://slidepdf.com/reader/full/curso-basico-de-fortran 4/46

-Complejo (Real, Imaginario).

-Para declarar una variable de tipo complejo se usarn uno de lossiguientes formatos:

-COMPLEX *4 (Asigna al complejo cuatro bytes de longitud).-COMPLEX *8 (Asigna al complejo ocho bytes de longitud).

-Despus de la palabra reservada COMPLEX puede aparecer un signo, y laparte real e imaginaria irn entre comas).-Al igual que en otros tipos de datos cuatro bytes sern simpleprecisi¢n y ocho bytes sern doble precisi¢n.

DATOS DE TIPO CARACTER.-Estas variables se representan por la palabra reservada CHARACTER y elformato que utiliza Fortran para definir las variables de este tiposon:

-CHARACTER *N£mero .

-En este formato, n£mero nos indica la longitud en caracteres de lavariable, siendo el tama¤o mximo que puede tomar un campo carcterdesde 256 hasta 32767 caracteres.-Este formato define el tratamiento de cadenas.

DATOS DE TIPO LOGICO.-Las variables de tipo l¢gico se representan mediante la palabrareservada LOGICAL con las variables separadas por comas y con unformato como el siguiente:

-LOGICAL *2 (Asigna al campo dos bytes de longitud).-LOGICAL *4 (ASigna al campo cuatro bytes de longitud).

-Los valores que puede tomar una variable de tipo l¢gico son los t¡picosde True y False.

DATOS DE TIPO REGISTRO.-Para este tipo de variables tenemos que definir previamente unaestructura y sus correspondientes campos que se van ha tomar, siendodicha estructura del tipo:

-STRUCTURE IdentificadorCHARACTER *25 Campo1INTEGER Campo2

REAL Campo3LOGICAL Campo4.....................

END STRUCTURE

-La implementaci¢n del registro que podr¡a usarse con la estructurarepresentada podr¡a ser la siguiente:

-RECORD Identificador1 Identificador2 (N£mero).

-Donde identificador1 representa el nombre de la estructura creada,identificador2 ser el nombre del registro y N£mero ser el n£mero deelemento del registro.

-Si por ejemplo deseamos referenciar a un real del registro n£mero 25tendremos que utilizar la siguiente forma:

Page 5: Curso básico de fortran

5/12/2018 Curso b sico de fortran - slidepdf.com

http://slidepdf.com/reader/full/curso-basico-de-fortran 5/46

-Identificador2 (25).Campo3.

CONSTANTES.-Para definir una constante en Fortran deberemos utilizar el siguienteformato:

-PARAMETER (Identificador=constante, ...).

-La lista de constantes ir separada por comas. Las constantes podrnser de tipo numrico o de tipo Hollerith (Cadena de caracteres concualquier carcter imprimible). Tambin podrn ser expresiones.-Las constantes numricas podrn tener los siguientes formatos:

-Sin punto decimal ni coma.-Precedida por un signo, en los enteros.-Coma fija con punto decimal, en los reales.-Coma flotante con exponente entero, en los reales.-Simple precisi¢n (n.m, n., .m, n.mEe, n.E+e, nE+e).-Doble precisi¢n (n.mD+e, n.De, mDe, nDe).

-Compleja como un par ordenado entre parntesis.-L¢gicas .TRUE. y .FALSE..-De caracteres.

-La constante Hollerith podr tener el siguiente formato:

-N£mero H carcter.

-Una constante simb¢lica definida en PARAMETER puede aparecer como unaexpresi¢n o como un valor de DATA.

VARIABLES.-Para definir una variable el compilador conoce ya de antemano si la

variable va a ser de tipo real o de tipo entera, siendo por defecto detipo real.-La estructura que debern seguir las declaraciones de las variables enun programa Fortran ser la siguiente:

-PROGRAM IdentificadorPARAMETER (Lista de constantes)*VARIABLESINTEGER Lista de variablesREAL Lista de variablesCOMPLEX Lista de variables

CHARACTER Lista de variables

LOGICAL Lista de variablesRECORD Tipos*INICIO.......

-Un atributo es una palabra reservada que acompa¤a a la variable y sirvepara que el programa realice un mejor aprovechamiento de memoria, mejordimensionamiento de arrays dinmicos, etc.-Si la variable comienza con una letra que se encuentre en el intervaloI-N se tratar de una variable de tipo entera. Anlogamente si comienzacon una letra del intervalo A-H, O-Z se tratar de una variable real.-Como norma general, una variable debe ser declarada antes de que puedautilizarse. Para inicializar una lista de variables a determinados

valores se usar el siguiente formato:

-DATA Lista de variables, lista de constantes.

Page 6: Curso básico de fortran

5/12/2018 Curso b sico de fortran - slidepdf.com

http://slidepdf.com/reader/full/curso-basico-de-fortran 6/46

-Esta sentencia debe preceder a cualquier sentencia ejecutable. Unaconstante seguida de un asterisco indicar repetici¢n.

EXPRESIONES.-En las expresiones aritmticas sabemos que si se realiza una operaci¢nde un entero con un real, siempre se codificar el entero como real y

luego se realiza la operaci¢n.-Se convierte el tipo que contiene al otro, realizndose siempre con lamxima precisi¢n. Los operandos que se van a usar en las expresionesaritmticas sern los siguientes:

-** (Operador potencia).-/ (Operador divisi¢n real).-* (Operador producto).-- (Operador resta).-+ (Operador suma).-() (Parntesis).

-Para el uso de operadores relacionales, Fortran no admite como unosoperadores relacionales los signos siguientes:

-<=, >=, <, >, <>.

-Los operadores relacionales que estn permitidos en este lenguaje sernlos siguientes:

-.LT. (Operador menor que).-.LE. (Operador menor o igual que).-.NE. (Operador distinto de).-.GT. (Operador mayor que).-.GE. (Operador mayor o igual que).

-.EQ. (Operador igual que).

-Una expresi¢n relacional compara los valores de dos expresiones de tipoaritmtico o de caracteres y el resultado es de tipo l¢gico. Losformatos que puede tomar una sentencia relacional sern:

-Variable operador variable.-Variable operador constante.

-Las variables no han de ser necesariamente variables, tambin puedenser expresiones de todo tipo.-En cuanto a los operadores l¢gicos que estn permitidos por Fortran se

encuentran los siguientes:-.NOT. (Operador negaci¢n).-.AND. (Operador producto l¢gico).-.OR. (Operador suma l¢gica).-.XOR. (Operador suma exclusiva l¢gica).-.EQV. (Operador de equivalencia l¢gica).-.NEQV. (Operador de no equivalencia l¢gica).

-El resultado de la evaluaci¢n de una expresi¢n de tipo l¢gico ser unvalor de tipo l¢gico, pudiendo ser el formato de la expresi¢n:

-Operando1 operador operando2.

-El orden de prioridad establecido para la creaci¢n de variables enlenguaje Fortran ser por tanto el siguiente:

Page 7: Curso básico de fortran

5/12/2018 Curso b sico de fortran - slidepdf.com

http://slidepdf.com/reader/full/curso-basico-de-fortran 7/46

-Expresiones aritmticas.-Expresiones de caracteres.-Expresiones relacionales.-Expresiones l¢gicas.

-Para la declaraci¢n de variables se utiliza la palabra reservada

IMPLICIT, que toma una variable cualquiera a no ser que se indique locontrario. El formato que utiliza la instrucci¢n es el siguiente:

-IMPLICIT REAL (A-Z).

-El formato anterior indica que todas las variables que empiecen desdela a hasta la z sean tratadas como reales de forma impl¡cita. Unavariable suele ser tratada siempre como un real.

FINAL DE UN PROGRAMA.-Hay dos formas de terminar la ejecuci¢n de un programa, l¢gicamente of¡sicamente.

-Para terminar la ejecuci¢n de un programa l¢gicamente se utiliza elsiguiente formato:

-STOP N£mero.

-N£mero es la constante de caracteres o constante entera sin signo decinco d¡gitos, o puede ser un mensaje de error encerrado entre doscomillas.-Para terminar la ejecuci¢n de un programa f¡sicamente se utiliza elsiguiente formato:

-END.

ENTRADA Y SALIDA DE DATOS.-Para la introducci¢n de datos se utiliza la palabra reservada READ conel formato siguiente:

-READ (N£mero, Etiqueta).

-Donde n£mero es el n£mero que indica la unidad de entrada, colocando elvalor * si no se quiere poner nada. Etiqueta indica la etiqueta que vaha definir un formato, si no se quiere poner nada se usa el valor *.-Para la lectura de elementos con READ las variables se separan por unblanco o por comas, si se ha de introducir una frase o algo de tipocarcter, ir encerrado entre comillas.

-Si no hay suficientes datos para esta instrucci¢n se produce un errory el programa aborta.-Para la salida de datos se utilizan dos mtodos igualmente vlidos, queson dos palabras reservadas y que tienen el siguiente formato:

-PRINT *, Lista de variables (Separadas por comas).-WRITE (*,*), Lista de variables (Separadas por comas).

-La lista de variables pueden ser tanto variables, como constantes comoexpresiones de todo tipo. El cursor avanza a la siguiente l¡nea. Estetipo de sentencias se suelen incluir antes de una sentencia READ.

TEMA 2: FUNCIONES INTRINSECAS.

CONCEPTO DE FUNCION.

Page 8: Curso básico de fortran

5/12/2018 Curso b sico de fortran - slidepdf.com

http://slidepdf.com/reader/full/curso-basico-de-fortran 8/46

-Son aquellas funciones incorporadas al compilador, que son accesiblesdesde un programa. Pueden ser llamadas en un programa dando elidentificador de la Funci¢n seguido por sus argumentos entreparntesis.-Estas funciones pueden tener uno o varios argumentos y se caracterizanporque:

-El nombre y sus valores de entrada son uno mismo.-Nunca puede ser usada en el lado izquierdo de la asignaci¢n.-El nombre determina el tipo de salida de la Funci¢n.-Los argumentos son del mismo tipo que la Funci¢n.-Los argumentos pueden ser expresiones de todo tipo.

-El formato de la Funci¢n ser el siguiente:

-Nombre (Identificador1, identificador2, ..., identificadorn).

FUNCIONES ARITMETICAS.-Son aquellas que realizan alg£n tipo de operaci¢n matemtica.

-Calcula el valor absoluto de un argumento real y devuelve un resultadoreal y positivo:

-ABS (Expresi¢n numrica).

-Convierte un real a un entero truncndolo o eliminando la parte decimaldevuelve un entero:

-Var=INT (Expresi¢n numrica).-INT (10**VarN*VarX)/10**VarN (N son los decimales a truncar).-INT (10**VarN*VarX+0.5)/10**VarN (N son los decimales deseados).-NINT (Expresi¢n numrica) (Realiza un redondeo).

-Convierte un n£mero entero a un real:

-FLOAT (Expresi¢n numrica).

-Eleva un n£mero real a la ensima potencia donde e es la base dellogaritmo natural, devuelve un real:

-EXP (N£mero).-Var=EXP (N£mero).-DEXP (N£mero) (Donde n£mero es de doble precisi¢n).-CEXP (N£mero) (Donde n£mero es un n£mero complejo).

-Calcula el logaritmo natural de base e y es la inversa de la Funci¢nanterior, devuelve un real:

-Var=LOG (Expresi¢n numrica).

-Calcula el logaritmo decimal o de base diez del argumento indicado,devuelve un real:

-Var=LOG10 (Expresi¢n numrica).

-Calcula la ra¡z cuadrada del argumento indicado, devuelve un real:

-Var=SQRT (Expresi¢n numrica).

-Devuelve el mayor valor de una serie de argumentos indicados:

Page 9: Curso básico de fortran

5/12/2018 Curso b sico de fortran - slidepdf.com

http://slidepdf.com/reader/full/curso-basico-de-fortran 9/46

-MAX0 (Lista de identificadores) (Devuelve un entero).-AMAX1 (Lista de identificadores) (Devuelve un real).-DMAX1 (Lista de identificadores) (Devuelve un doble precisi¢n).

-Devuelve el menor valor de una serie de argumentos indicados:

-MIN0 (Lista de identificadores) (Devuelve un entero).

-AMIN1 (Lista de identificadores) (Devuelve un real).-DMIN1 (Lista de identificadores) (Devuelve un doble precisi¢n).

-Calcula el m¢dulo o resto de dos n£meros, devuelve un entero:

-MOD (N£mero1, n£mero2).

-Transfiere el signo del segundo identificador al primero:

-SIGN (Expresi¢n1, expresi¢n2).

-Convierte un n£mero de doble precisi¢n a un n£mero real:

-SNGL (N£mero).

FUNCIONES TRIGONOMETRICAS.-Son aquellas que realizan alguna operaci¢n con las razones de tipotrigonomtrico.-Calcula el seno de una expresi¢n dada, devuelve un real y debe estarentre 1 y -1:

-Var=SIN (Expresi¢n numrica) (Devuelve un real).-DSIN (Expresi¢n numrica) (Devuelve un doble precisi¢n).-CSIN (Expresi¢n numrica) (Devuelve un complejo).

-Calcula el coseno de una expresi¢n dada, devuelve un real y debe estarentre 1 y -1:

-Var=COS (Expresi¢n numrica) (Devuelve un real).-DCOS (Expresi¢n numrica) (Devuelve un doble precisi¢n).-CCOS (Expresi¢n numrica) (Devuelve un complejo).

-Calcula la tangente de una expresi¢n dada, devuelve un real:

-Var=TAN (Expresi¢n numrica) (Devuelve un real).-DTAN (Expresi¢n numrica) (Devuelve un doble precisi¢n).

-Calcula el arcoseno de una expresi¢n dada, devuelve un real:-Var=ASIN (Expresi¢n numrica).

-Calcula el arcocoseno de una expresi¢n dada, devuelve un real:

-Var=ACOS (Expresi¢n numrica).

-Calcula el arcotangente de una expresi¢n dada, devuelve un real:

-Var=ATAN (Expresi¢n numrica).

-Calcula el seno hiperb¢lico de una expresi¢n dada, devuelve un real:

-Var=SINH (Expresi¢n numrica).

Page 10: Curso básico de fortran

5/12/2018 Curso b sico de fortran - slidepdf.com

http://slidepdf.com/reader/full/curso-basico-de-fortran 10/46

-Calcula el coseno hiperb¢lico de una expresi¢n dada, devuelve un real:

-Var=COSH (Expresi¢n numrica).

-Calcula la tangente hiperb¢lico de una expresi¢n dada, devuelve unreal:

-Var=TANH (Expresi¢n numrica).

FUNCIONES DE NUMEROS COMPLEJOS.-Realiza diferentes funciones con los n£meros complejos.-Toma la parte real de un argumento complejo:

-REAL (Expresi¢n compleja).

-Toma la parte imaginaria de un argumento complejo:

-AIMAG (Expresi¢n compleja).

-Calcula el conjugado de un argumento complejo:-CONJ (Expresi¢n compleja).

-Representa un argumento complejo tomado de n£meros reales:

-COMPLEX (N£mero1, n£mero2).

TEMA 3: ESTRUCTURAS DE CONTROL SELECTIVAS Y REPETITIVAS.

ESTRUCTURAS DE BIFURCACION INCONDICIONAL.-Este tipo de estructuras son unas herramientas que sirven para

confeccionar las estructuras selectivas. No son recomendables y s¢lo semantienen por compatibilidad con otras versiones.-La siguiente estructura es un IF aritmtico, en el que se realiza laelecci¢n de tres posibles etiquetas. Se eval£a la condici¢n y enFunci¢n de esa condici¢n se tomarn los siguientes valores:

-Condici¢n <0 toma Etiqueta1.-Condici¢n =0 toma Etiqueta2.-Condici¢n >0 toma Etiqueta3.

-En este formato se pueden colocar dos etiquetas iguales, siendo elformato de la instrucci¢n:

-IF (Expresi¢n aritmtica) Etiqueta1, Etiqueta2, Etiqueta3.

-La siguiente instrucci¢n se usar en el caso de que haya sentenciasrepetitivas que no estn implementadas en el compilador, siendo sumisi¢n la de transferir el control a la sentencia especicada en laetiqueta:

-GOTO Etiqueta.

-La siguiente instrucci¢n transfiere el control a la etiqueta ensimade la lista seg£n un valor entero. Es el GOTO calculado.-En esta sentencia se eval£a la expresi¢n entera entre uno y el n£mero

de etiquetas, y se bifurcar a la etiqueta indicada para ejecutar unconjunto de sentencias seg£n la expresi¢n entera. Su formato es:

Page 11: Curso básico de fortran

5/12/2018 Curso b sico de fortran - slidepdf.com

http://slidepdf.com/reader/full/curso-basico-de-fortran 11/46

-GOTO (Etiqueta1, etiqueta2, ..., etiquetan) Expresi¢n entera.

-La instrucci¢n GOTO asignado tiene como formato el siguiente:

-ASSIGN Constante entera TO Variable entera.-GOTO Variable entera (Etiqueta1, etiqueta2, ..., etiquetan).

-Esta instrucci¢n produce una estructura multibifurcaci¢n. La variabledebe tener una de las etiquetas de GOTO y su funcionamiento es igualque la anterior.-Para llevar la variable a la etiqueta se usa la opci¢n de ASSIGN. Sila variable no est asignada el GOTO no es vlido.

ESTRUCTURAS ALTERNATIVAS.-Dentro de las estructuras alternativas hay tres tipos.-La estructura alternativa simple, realiza un conjunto de acciones si lacondici¢n es verdadera y sigue el flujo de control secuencial si lacondici¢n es falsa.-En las estructuras alternativas todas las condiciones se colocan

siempre entre parntesis. El formato de la alternativa simple es:-IF (Expresi¢n l¢gica) Sentencia.

-La expresi¢n l¢gica est formada por una expresi¢n con relacionales yla sentencia a continuaci¢n no pueden ser las palabras reservadas DO,ELSEIF, ELSE, ENDIF, END o IF.-La estructura alternativa doble, selecciona una de dos opciones. Si lacondici¢n es verdadera se ejecutan unas acciones y si es falsa otrasacciones. El formato de esta estructura ser¡a:

-IF (Condici¢n) THENacci¢n1

acci¢n2.......acci¢nn

ENDIF

-Esta £ltima estructura se puede anidar con varias sentencias IF, y suestructura quedar¡a:

-IF (Condici¢n) THENacci¢n1acci¢n2.......

acci¢nnELSEacci¢nn+1acci¢nn+2.........acci¢nn+n

..............ENDIF

-Si se quieren anidar varios niveles de sentencias IF-ELSE usaremos lasiguiente estructura:

-IF (Condici¢n) THEN

acci¢n1acci¢n2.......

Page 12: Curso básico de fortran

5/12/2018 Curso b sico de fortran - slidepdf.com

http://slidepdf.com/reader/full/curso-basico-de-fortran 12/46

acci¢nnELSEIF (Condici¢n2) THEN

acci¢nn+1acci¢nn+2.........acci¢nn+n

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

ELSEacci¢nm+1acci¢nm+2.........acci¢nm+n

ENDIF

-La estructura alternativa m£ltiple se utiliza cuando la condici¢n tienems de dos valores con selecci¢n m£ltiple. El valor de su expresi¢n ade ser un entero, carcter o l¢gico.-Si el carcter utilizado es numrico no ir entre comillas, mientrasque si es de tipo carcter ir entre comillas. Esta £ltima medida exige

que el c¢digo ASCII del primer carcter sea menor que el segundo.-El formato de la estructura ser el siguiente:

-SELECT CASE (Expresi¢n)CASE (Caso1)

acci¢n1acci¢n2.......acci¢nn

CASE (Caso2)acci¢nn+1acci¢nn+2.........

acci¢nn+n...............CASE DEFAULT

acci¢nm+1acci¢nm+2.........acci¢nm+n

END SELECT

CONCEPTO DE BUCLE.-Consiste en una estructura de control que gobierna los procesos de tiporepetitivo dentro de un programa. Repite una secuencia de acciones

mientras o hasta una condici¢n sea verdadera o falsa.-Iteraci¢n de un bucle es la repetici¢n de sentencias interiores que haydentro de un bucle.

ESTRUCTURA REPETITIVA. SENTENCIA "DO".-Esta estructura contiene dos formatos. El primer formato se utilizacuando se conoce el n£mero de iteraciones y su formato es:

-DO Etiqueta VarA=Inicio, Final, Incremento .

-Las variables se separan por comas y el incremento puede ser positivo onegativo y es opcional. Normalmente inicio debe ser menor que lavariable final.

-El otro formato es lo mismo que una estructura de tipo repetir. Se usacuando se desea repetir una condici¢n un n£mero de veces siendo una pordefecto. Su formato es:

Page 13: Curso básico de fortran

5/12/2018 Curso b sico de fortran - slidepdf.com

http://slidepdf.com/reader/full/curso-basico-de-fortran 13/46

-DO Etiqueta VarA=Inicio, Final, Incrementoacci¢n1acci¢n2.......acci¢nn

Etiqueta CONTINUE

ENDDO

-Las variables pueden ser enteras, constantes o expresiones, y es msrpida y potente con variables y constantes con lo que se evitan loserrores de redondeo.-Como m¡nimo se ejecuta una vez. Ejecuta un conjunto de instruccioneshasta que se encuentra a la etiqueta, y si no se usa la etiqueta sedeber cerrar el bucle con ENDDO.-Por defecto el incremento del bucle es uno. Si se usa la etiqueta habrque tener en cuenta una serie de restricciones:

-No se puede usar un GOTO incondicional o asignado.

-No se puede usar ELSE, IF, SELECT CASE, ENDIF.-No puede seguirle un ENDSELECT, EXIT, RETURN o STOP.

-Para evitar estas restricciones bastar con colocar una sentencia enblanco. Si se quiere usar una variable ¡ndice despus de salir lavariable ¡ndice la variable tendr el valor final ms el incremento.

ESTRUCTURA REPETITIVA. SENTENCIA "WHILE".-Utiliza una condici¢n que puede ser una expresi¢n l¢gica o relacional.Esta condici¢n se eval£a antes y despus de cada ejecuci¢n del bucle.Si la condici¢n es falsa no se ejecuta nunca.-Los bucles deben terminar siempre y pueden ser controlados por:

-Contador, necesita una variable dentro del bucle que se debeinicializar, comprobar e incrementar.

-Centinela, es un valor especial para el final de una lista y esun valor que jams se procesa, pero debe ser del mismo tipo quelos datos.

-Interruptor, es una variable l¢gica.

-El formato de la instrucci¢n ser la siguiente:

-DO Etiqueta WHILE (Expresi¢n l¢gica)acci¢n1acci¢n2

.......acci¢nnEtiqueta CONTINUEENDDO

-Todas las restricciones anteriormente indicadas para la otra estructurarepetitiva sirven para DO WHILE.-Si por cualquier circunstancia el compilador no reconoce este tipo deestructuras se podr implementar de la siguiente:

-Etiqueta IF (Condici¢n) THENacci¢n1acci¢n2

.......acci¢nn

GOTO Etiqueta

Page 14: Curso básico de fortran

5/12/2018 Curso b sico de fortran - slidepdf.com

http://slidepdf.com/reader/full/curso-basico-de-fortran 14/46

ENDIF

-Hay que tener en cuenta que GOTO s¢lo se usar en el caso de este tipode circunstancias y s¢lamente para ellas.-Cuando se usen etiquetas, una s¢la etiqueta valdr para cerrar variosbucles que estn anidados. Pero si se usan ENDDO hay que colocar tantoscomo DO hayan.

TEMA 4: ENTRADAS Y SALIDAS CON FORMATOS.

INSTRUCCION CON FORMATO DE ENTRADA. SENTENCIA "READ".-Este tipo de instrucciones no es muy potente porque s¢lo estn pensadaspara introducir y sacar datos. La unidad estndar en el teclado estdenominado como un asterisco (*).-La lectura mediante la instrucci¢n READ se realiza con la siguientesintaxis:

-READ (Lista de descriptores), Lista de variables.

-La Lista de variables siempre ir separada por comas.-Con esta sintaxis la lectura se realiza del dispositivo predefinido quepuede ser uno de los siguientes:

-Constante entera (Que referencia otra sentencia).-Variable carcter.-Array de caracteres.-Expresi¢n carcter (Entre parntesis y ap¢strofes).-Variable entera (Con una etiqueta FORMAT).

-Dentro de la lista de descriptores podemos encontrarnos las siguientesopciones:

-Unidad, que sirve para que a cada dispositivo se le asigne unaunidad o un entero (Sin signo) y la palabra UNIT es opcional. Sino se coloca UNIT debe ir en primer lugar, si se pone la palabrareservada UNIT podr ir en otro lugar. Su sintaxis es:

- UNIT= Entero.

-Formato, en el que podrn colocarse los siguientes parmetros:

-Etiqueta, asignada a la sentencia especial que ser FORMAT.-Variable, entera a la que previamente se le halla asignado

una Etiqueta vlida.-Expresi¢n, de tipo cadena que contenga los c¢digos de losformateos entre parntesis que estarn cerrados entre unascomillas.-Variable o array, de caracteres a los cuales se le hallanasignado los c¢digos de formato.-Asterisco (*), que indicar una entrada sin formato.

sabiendo que el formato estar definido por la sintaxis:

- FMT= Formato.

-N£mero de registro, que s¢lo se usar en el tratamiento de los

archivos de acceso directo, donde se le indica que lea el n£merorelativo al registro siendo su estructura o sintaxis:

Page 15: Curso básico de fortran

5/12/2018 Curso b sico de fortran - slidepdf.com

http://slidepdf.com/reader/full/curso-basico-de-fortran 15/46

-REC=N£mero registro.

-C¢digo chequeador, de la operaci¢n al cual deposita el resultadode analizar la operaci¢n siendo su sintaxis:

-IOSTAT=Variable entera.

-Control del fin de archivo, que se especifica con la sintaxis:

-END=Etiqueta.

-Transferencia de control, que se produce cuando hay un error yque contiene la siguiente sintaxis:

-ERR=Etiqueta.

-Si se admiten UNIT y FMT, sus correspondientes valores debern estaren el primer y segundo lugar de la instrucci¢n READ respectivamente.-Los dos primeros formatos se han de usar obligatoriamente, mientras que

los otros parmetros s¢lo se usarn para ficheros externos. Un ejemplode uso de esta sentencia ser¡a:

-READ (UNIT=3, FMT=20, REC=10, IOSTAT=Cod, END=100, ERR=Error).

-Si la lectura es desde teclado el fin de fichero debe ser tecleado porel usuario con la combinaci¢n CTRL+Z.

INSTRUCCION CON FORMATO DE SALIDA. SENTENCIA "WRITE".-Para este tipo de instrucciones nos encontramos dos formatos que estndiferenciados:

-PRINT (Lista de descriptores), Lista de salida.

-WRITE (Lista de descriptores), Lista de salida.

-El primer formato siempre se utilizar cuando el dispositivo de salidaest predefinido por el sistema, mientras que el segundo formato seusar para una salida a una unidad espec¡fica.-La lista de descriptores que se podr usar sern los mismos que en lainstrucci¢n READ. UNIT y FMT podrn no figurar si se pone primero eln£mero de la unidad y luego el formato.

INSTRUCCION DE FORMATOS. SENTENCIA "FORMAT".-Esta instrucci¢n facilita la informaci¢n necesaria para que se haga unreconocimiento de la representaci¢n que los datos van a tomar en la

memoria principal. La sintaxis de FORMAT ser la siguiente:-Etiqueta FORMAT (Lista de c¢digo de formato).

-Etiqueta ser el n£mero de etiqueta (Obligatorio), aunque se podrreferenciar tambin con una variable entera a la cual se ha asignadouna etiqueta con ASSIGN.-La lista de c¢digos puede estar vac¡a si la lista de sentencias de E/Sest vac¡a con un salto de l¡nea.-Esta sentencia no es ejecutable, puede escribirse en cualquier parte yconviene agruparlas todas al principio o al final del programa.-La Lista de c¢digo de formato podr contener uno o varios de lossiguientes tipos:

-C¢digos numricos o de datos (Repetibles) entre los cualestenemos:

Page 16: Curso básico de fortran

5/12/2018 Curso b sico de fortran - slidepdf.com

http://slidepdf.com/reader/full/curso-basico-de-fortran 16/46

-C¢digo I.-C¢digo F.-C¢digo E.-C¢digo D.-C¢digo G.-C¢digo P.

-C¢digo L.-C¢digo A.

-C¢digos de posicionamiento (No repetibles) entre los cualestenemos:

-C¢digo X.-C¢digos T, Tl, Tr.-C¢digo /.

-C¢digos especiales (No repetibles) entre los cuales tenemos:

-C¢digos S, Sp, Ss.-C¢digos Bn, Bz.-C¢digo H.-C¢digo :.-C¢digo .-C¢digos de control de carro.

CODIGO NUMERICO "I".-En los c¢digos de datos o numricos siempre hay que diferenciar trespartes que son fundamentales:

-Tipo de dato a representar.-Tama¤o para la representaci¢n.

-Puntos y tama¤os de la parte fraccionaria.

-Entre los c¢digos numricos existen una serie de caracter¡sticas:

-Los blancos de relleno son ignorados.-Si el signo es negativo se genera el signo -.-Tiene prioridad el punto decimal de entrada ante la posici¢ndecimal especificada.-Los campos se ajustan a la derecha.-Si se produce error de salida salen asteriscos.

-Para la entrada de este c¢digo los datos deben ser de tipo entero,

siendo I el identificador de c¢digo y w el ancho del campo y lasintaxis:

-Iw.

-Transfiere datos enteros desde el soporte externo a variables, tantoscaracteres como valor tenga w contando d¡gitos, blancos y signos yasocia variables de izquierda a derecha con las normas siguientes:

-Blancos entre d¡gitos o al final se interpretan como ceros.-No usan c¢digo de formato cuando la lectura es por teclado.-Con Bn los blancos se ignoran y con Bz se toman como ceros.

-Para la salida los datos van desde la memoria interna al soporteexterno con un valor w de ancho ajustndose a la derecha y si esnegativo se coloca un signo delante del d¡gito ms significativo.

Page 17: Curso básico de fortran

5/12/2018 Curso b sico de fortran - slidepdf.com

http://slidepdf.com/reader/full/curso-basico-de-fortran 17/46

-Si el n£mero de caracteres es mayor que el ancho de salida el campo desalida se llena de asteriscos.-Si se utiliza un coeficiente de repetici¢n n deber ser una constanteentera sin signo mayor que cero con la sintaxis:

-nIw.

-Si se quiere indicar el n£mero m¡nimo de d¡gitos que aparecern en lasalida se usar m, una constante entera sin signo con la sintaxis:

-nIw.m.

-Se debe contemplar la opci¢n de que el n£mero sea negativo con lo quese deber aumentar el formato en una unidad.-Si en la salida se colocan menos d¡gitos que en el formato indicadose suprimirn todos los ceros que no sean significativos.

CODIGO NUMERICO "F".-Este c¢digo transfiere datos de tipo real desde un dispositivo externo

hasta la memoria o a la inversa, siendo su sintaxis la siguiente:-Fw.d.

-En este c¢digo, F ser el carcter del c¢digo, w ser la longitud totaldel campo incluyendo los blancos, signos, puntos y d¡gitos, y d serel n£mero de decimales de la parte real.-Si no se introduce un punto decimal se sit£an los decimales de formaautomtica. El c¢digo F permite ser un c¢digo repetible con lo que susintaxis ser la siguiente:

-nFw.d.

-Se pueden introducir n£meros reales en notaci¢n exponencial, siendo elexponente que sigue al n£mero real de dos formas:

-Constante entera con signo + o -.-Carcter E o D seguido de un signo y una constante entera.

-Los caracteres de las variables reales se ajustan a la derecha delcampo de anchura. El punto decimal se genera con d posiciones a laderecha.-En la salida no se producen ceros a la izquierda a no ser que lamantisa sea menor que uno, con lo que habr un cero a la izquierda delpunto decimal.

-Si la parte fraccionaria tiene ms anchura que d habr un redondeo delvalor antes de ajustarse y si el dato no cabe en w se producir unasalida de w asteriscos.-Entre los ejemplos que se pueden citar para este formato estarn:

CODIGO NUMERICO "E".-Este formato lee o escribe datos reales en simple o doble precisi¢n ennotaci¢n exponencial. E es el c¢digo del exponente, w el ancho delcampo y d los d¡gitos decimales con una sintaxis del tipo:

-Ew.d.

-La opci¢n w contar la mantisa, el d¡gito que precede al punto decimalel punto decimal de la mantisa y el exponente que tendr tres d¡gitosde forma que la representaci¢n ser del tipo:

Page 18: Curso básico de fortran

5/12/2018 Curso b sico de fortran - slidepdf.com

http://slidepdf.com/reader/full/curso-basico-de-fortran 18/46

-(-)0.E(-)nn.

-Si el punto no figura en la entrada, la parte decimal sern los dd¡gitos ms a la derecha de la mantisa. Si aparece el punto decimalen la entrada no se tendr en cuenta la especificaci¢n d en el formato.-El signo del exponente se omite si es positivo y E o D pueden omitirse

si el exponente tiene signo. Es recomendable especificar el puntodecimal en la entrada.-Para la salida han de reservarse una posici¢n para el punto decimal yel d¡gito cero que precede al punto decimal si hay posici¢n para l. Sila mantisa es negativa otra posici¢n y el exponente cuatro posiciones.-Se ejecuta la anchura del campo a la derecha y si w es menor que lasposiciones para la salida se muestran asteriscos.-En Funci¢n del desplazamiento del punto decimal se calcula el exponentey la mantisa se puede redondear, pudindose omitir el cero antecedenteal punto decimal si no hay posici¢n.-El c¢digo E puede ser repetible con la siguiente sintaxis:

-nEw.d.-Otro formato en el que una constante entera e nos indica el n£mero ded¡gitos del exponente ser¡a:

-Ew.dEe.

-Entre los ejemplos que se pueden citar para este formato estarn:

CODIGO NUMERICO "D".-Describe n£meros reales en simple o doble precisi¢n en formaexponencial con el mismo efecto que el c¢digo E siendo su sintaxis:

-Dw.d.

-Para la entrada de datos este c¢digo es tratado de igual manera que elc¢digo E. Normalmente se utiliza este c¢digo para enfatizar que eln£mero que se trata es de doble precisi¢n.-El exponente para la salida cambia la letra E por la letra D y tienela siguiente sintaxis:

-D(+/-)nn.

-Este c¢digo numrico es repetible siendo su sintaxis:

-nDw.d.

CODIGO NUMERICO "G".-Se utiliza este c¢digo para entrada y salida de datos de simple y dobleprecisi¢n siendo sus sintaxis ms generales las siguientes:

-Gw.d.-Gw.dEe.

-La entrada de datos reales tiene el mismo significado que los c¢digosF, E y D.-En la salida act£a como formato F cuando el valor de salida est en el

rango entre 0.1 y 10**d, mientras que act£a como formato E cuando eln£mero es ms peque¤o de 0.1 o mayor que 10**d.-Si act£a como formato F entonces los £ltimos cuatro caracteres sern

Page 19: Curso básico de fortran

5/12/2018 Curso b sico de fortran - slidepdf.com

http://slidepdf.com/reader/full/curso-basico-de-fortran 19/46

blancos y el valor se imprimir en un ancho de campo de w-4 caracteres.-Si se usan formatos a la entrada y se coloca un punto decimal cuandoel formato es distinto, habr disyunci¢n entre el formato del tecladoy el establecido en el programa.-Siempre se da prioridad al formato introducido por teclado.-Entre los ejemplos que se pueden citar para este formato estarn:

CODIGO DE DATOS "P".-Es un factor de escala y sirve para ver los valores exponenciales conun entero delante del punto decimal, aplicable s¢lamente a los c¢digosF, E, D y G, afectando a la entrada de datos y a su salida.-El valor n ser un entero que puede llevar signo y su sintaxis ser:

-nP.

-Al aplicar el c¢digo P en la entrada s¢lo es aplicable si el valorexterno carece de exponente con lo que se expresar mediante larelaci¢n:

-Valor interno=(Valor externo)/10n.

-El factor de escala afecta a los c¢digos de formato que aparecen acontinuaci¢n hasta encontrar otro factor de escala.-Cuando se usa para el c¢digo F en la salida se produce desplazamientodel punto en el valor verdadero siendo su relaci¢n:

-Valor externo=Valor interno*10n.

-Si se usa en concexi¢n con D o E la salida no cambia pero se desplazael punto de la mantisa al hacer el producto por 10**n, y el exponentese decrementa en n, al igual que con la forma mantisa-exponente.

-Con el formato G no se usa el factor de escala porque da problemas.-Si tenemos las siguientes instrucciones:

-100 FORMAT (2PE7.2, F6.3, -1P8.4)READ (5, 100) VarA, VarB, VarCWRITE (*, '(1X, 3F12.5)') VarA, VARB, VarC

y le introducimos la siguiente entrada:

-b17.E0157.132-453261.7.

tendremos la siguiente tabla de referencia:

CODIGO DE DATOS "L".-Este c¢digo se usa para la edici¢n de datos l¢gicos siendo w el anchodel campo y siendo su sintaxis la siguiente:

-Lw.

-Para la entrada busca en el campo de forma que si el primer carcteres T (True) o F (False) los dems caracteres del campo son ignorados.-Para la salida se produce una conversi¢n de TRUE a FALSE o T a Fajustndose a la derecha del campo.-El c¢digo L es un c¢digo de tipo repetible siendo su sintaxis:

-nLw.

Page 20: Curso básico de fortran

5/12/2018 Curso b sico de fortran - slidepdf.com

http://slidepdf.com/reader/full/curso-basico-de-fortran 20/46

CODIGO DE DATOS "A".-Este c¢digo transfiere datos de tipo carcter de la memoria al soporteexterno y a la inversa, permitiendo el manejo, entrada y salida decualquier variable de tipo carcter, siendo su sintaxis:

-Aw.

-Tambin tiene formato repetible siendo su sintaxis:

-nAw.

-En las entradas se debe colocar ap¢strofes que delimiten la cadena sies con lista directa, pero con el c¢digo A puede evitarse y tomar lalongitud de la variable asociada teniendo en cuenta:

-Si w=n todo el dato es asignado a la variable carcter.-Si w>n los £ltimos n caracteres se almacenan en la variable.-Si w<n los caracteres se ajustan a la izquierda rellenndose losn-w caracteres de la derecha a blancos.

-En las salidas existen otras consideraciones:

-Si w=n tendr de longitud n.-Si w>n los n caracteres se ajustan a la derecha y los w-nprimeros caracteres se rellenan a blancos.-Si w<n los w primeros caracteres de la cadena salen a la salidaperdindose los restantes.

CODIGO DE POSICIONAMIENTO "X".-Los c¢digos de posicionamiento determinan la posici¢n dentro de unal¡nea. La posici¢n puede ser relativa a la actual del cursor o unaposici¢n absoluta.

-El c¢digo X salta n caracteres tanto para la salida como para laentrada en el medio externo siendo su sintaxis:

-nX.

-La opci¢n n indica los caracteres a saltar a partir de la posici¢nactual del cursor.-Para la entrada salta n posiciones hacia adelante desde la posici¢ndel cursor. Para la salida en la l¡nea o registro de salida genera nblancos y mueve el cursor n posiciones a la derecha.-Este c¢digo no es repetible.

CODIGOS DE POSICIONAMIENTO "T", "Tl" Y "Tr".-Estos c¢digos producen una tabulaci¢n en el registro y T especificauna posici¢n absoluta dentro del registro de entrada o salida siendosu sintaxis:

-Tc.

-La opci¢n c indica la columna dentro del registro desde donde se va aposicionar el cursor y donde comienzan las transferencias de datos.-El tabulador Tl mueve la posici¢n del cursor hacia la izquierda y Trmueve la posici¢n del cursor hacia la derecha con las siguientessintaxis:

-Tls.-Trs.

Page 21: Curso básico de fortran

5/12/2018 Curso b sico de fortran - slidepdf.com

http://slidepdf.com/reader/full/curso-basico-de-fortran 21/46

-La opci¢n s indica el n£mero de posiciones que se han de desplazar elcursor desde la posici¢n actual.-Si tenemos las siguientes instrucciones:

-50 FORMAT (2A, I2, T1, A, T18, A, I2)CHARACTER *6 Nombre1, Nombre2, Apellido1*8, Apellido2*8INTEGER Edad1, Edad

READ (1, 50) Nombre1, Apellido1, Edad1, Nombre2, Apellido2, Edad

y le introducimos la siguiente entrada:

-Jos-Martinez8Torralva25.

obtendremos la siguiente lista de variables en la salida:

-Nombre1 - Jos-.-Apellido1 - Mart¡nez.-Edad1 - 0.

-De modo anlogo, si tenemos las siguientes instrucciones:-100 FORMAT (T8, I5, Tl2, I4, Tl6, A6)CHARACTER *8 CadenaINTEGER VarA, VarBREAD (*, 100) VarA, VarB, Cadena

y le introducimos la siguiente entrada:

-Visita12345678.

obtendremos la siguiente lista de variables en la salida:

-M - 23456.-N - 5678.-Cadena - 345678.

-Estos c¢digos no son repetibles.

CODIGO DE POSICIONAMIENTO "/".-Este es un c¢digo de posicionamiento vertical que da por terminado unregistro o deja registros o l¡neas vac¡as y su sintaxis es:

-/.

-Puede separase por comas o no y sit£a el puntero en el primer carcterde un nuevo registro.-En la salida causa n-1 registros o l¡neas vac¡as y no es un c¢digo detipo repetible.

CODIGOS ESPECIALES "S", "Sp" Y "Ss".-Estos c¢digos s¢lo son vlidos para formatos de salida, para n£merosy controlan la salida del signo + en los n£meros positivos de forma:

-S no imprime el signo +.-Sp imprime el signo +.-Ss no imprime el signo +.

-El formato Sp s¢lo valdr hasta que sea el final de los especificadoresde formato o hasta un c¢digo S o Ss.-Estos c¢digos no son repetibles.

Page 22: Curso básico de fortran

5/12/2018 Curso b sico de fortran - slidepdf.com

http://slidepdf.com/reader/full/curso-basico-de-fortran 22/46

CODIGOS ESPECIALES "Bn" Y "Bz".-Estos c¢digos dirigen la interpretaci¢n de los caracteres en blancoen los formatos numricos de forma que:

-Bn ignora los blancos.-Bz toma los blancos como ceros.

-Si un campo de entrada est en blanco se considera como cero.

CODIGO ESPECIAL "HOLLERITH".-Este c¢digo s¢lo puede formar parte de un formato de salida y no esvlido para entradas, siendo su sintaxis:

-wHc.

-Este c¢digo indica que habr una salida de w caracteres que son losque van a aparecer en c. Los ap¢strofes se consideran como cualquierotro carcter.

-El n£mero de caracteres de la constante carcter determina el ancho delcampo de salida.

CODIGO ESPECIAL ":".-Este c¢digo provoca la terminaci¢n de la operaci¢n de salida si no hayms elementos en la lista de la sentencia de salida.-Si el c¢digo es encontrado durante una entrada de datos o si quedanelementos en la lista de salida es ignorado.

CODIGO ESPECIAL " ".-Este c¢digo facilita formatear la salida de datos en la pantalla. Estec¢digo se aplica en formatos de sentencias de salida.-Causa que el procesador suprima en la salida de acceso secuencial la

separaci¢n de registros actual y el siguiente registro.

CODIGOS ESPECIALES DE CONTROL DE CARRO.-Exigen que se escriban los c¢digos como primer carcter dentro de lasentencia WRITE que emplea la impresora como salida siendo sus c¢digoslos siguientes:

-Blanco avanza una l¡nea.-0 avanza dos l¡neas.-1 sit£a en la primera l¡nea de la siguiente pgina.-+ imprime sobre la misma l¡nea y no avanza.

-Si el primer carcter no es un signo de estos se toma como blanco. Enla mayor¡a de las sentencias FORMAT tiene especificado en la columna1 o 1X.

REGISTROS MULTIPLES.-Si el n£mero de elementos de la lista de entrada y salida es menor queel n£mero de c¢digos de datos, los c¢digos sobrantes se ignoran.-Si el n£mero de elementos es mayor que el n£mero de c¢digos de formatose van asociando los c¢digos de datos con los datos de izquierda aderecha.-Cuando se alcanza el parntesis de cierre de FORMAT se empieza un nuevoregistro repitindose los c¢digos a partir del parntesis de aperturaprecedente.

TEMA 5: SUBPROGRAMAS Y FUNCIONES EN FORTRAN.

Page 23: Curso básico de fortran

5/12/2018 Curso b sico de fortran - slidepdf.com

http://slidepdf.com/reader/full/curso-basico-de-fortran 23/46

UNIDADES DE PROGRAMA.-Ante la necesidad de una organizaci¢n jerrquica Fortran permitedividir el programa en m¢dulos llamados unidades de programa. Hay dosclases de unidades de programa:

-Programa principal.

-Subprograma.

-Cada programa tiene un s¢lo programa principal que puede contener ceroo ms Subprogramas que pueden ser:

-Funciones.-Subrutinas.

-Las Funciones pueden ser de varios tipos:

-Externas, es un m¢dulo independiente.-Intr¡nsecas, es un m¢dulo independiente.

-Unil¡neas, son locales al m¢dulo o unidad de programa donde estndefinidas.

-Las Subrutinas son Subprogramas que pueden ser usados para devolver unconjunto de cero a n datos y suelen ser de prop¢sito general.-Los m¢dulos pueden estar uno a continuaci¢n del otro y no estarnseparados a nivel l¢gico aunque s¡ lo estarn a nivel f¡sico.-La Funci¢n se usa cuando se necesita devolver un s¢lo valor, mientrasque las Subrutinas se utilizan para devolver ms valores o en sudefecto ninguno.

FUNCIONES SENTENCIA (UNILINEA).-Es un procedimiento especificado en una sentencia simple, con forma

similar a una sentencia de asignaci¢n aritmtica, l¢gica o carcter.Este tipo de Funciones representan una f¢rmula.-Se escribe en la misma unidad de programa que va a ser usada, sonlocales a la unidad de programa en la que est definida.-Es una sentencia de tipo no ejecutable y ha de ser escrita antes de serinvocada, su sintaxis suele ser:

- Tipo Identificador (Lista de parmetros actuales)=Expresi¢n.

-Si no se colocan parmetros, habr que poner parntesis igualmente.-El tipo de dato del identificador de la Funci¢n sentencia y losargumentos ficticios estn determinados por el tipo impl¡cito del

identificador.-La invocaci¢n se realiza escribiendo su identificador y entreparntesis los argumentos verdaderos o actuales que sustituyen a losargumentos que son ficticios.-Los argumentos actuales pueden ser expresiones y han de corresponderseen n£mero, orden y tipo con los argumentos ficticios. La llamada a laFunci¢n debe formar parte de una sentencia ejecutable.-Se puede invocar el paso de varios parmetros separados por una comao no ser invocados.

FUNCIONES INTRINSECAS.-Son las Funciones propias del lenguaje Fortran, que ya fueron descritasen el tema 2.

-Estas Funciones se usan con el identificador de la Funci¢n seguido delos valores de los parmetros.-Habr que tener en cuenta que los argumentos sean del mismo tipo y que

Page 24: Curso básico de fortran

5/12/2018 Curso b sico de fortran - slidepdf.com

http://slidepdf.com/reader/full/curso-basico-de-fortran 24/46

correspondan dentro del rango.

FUNCIONES EXTERNAS.-Este tipo de Funciones devuelve un valor a travs del identificador dela Funci¢n aunque puede devolver otros valores. Su sintaxis es:

- Tipo FUNCTION Identificador (Lista de parmetros formales)

acci¢n1acci¢n2.......acci¢nnIdentificador=Expresi¢n.......

RETURNEND

-El tipo es opcional y especifica el tipo de datos del valor que sedevuelve. Si no se especifica se siguen las normas del tipo impl¡citode los identificadores.

-Esta sentencia debe ser la sentencia inicial de una Subrutina FUNCTION.El tipo de la Funci¢n est determinado por la especificaci¢n tipo en lacabecera.-Puede tener cualquier sentencia excepto las definiciones de otrasSubrutinas. El valor asignado debe ser del mismo tipo que el de laFunci¢n.-El f¡n l¢gico de una Funci¢n es RETURN que puede aparecer ms veces.La £ltima sentencia de c¢digo fuente de definici¢n de una Funci¢n esEND que ser el f¡n f¡sico.-Desde una Funci¢n se puede invocar otra Subrutina pero no a la mismaFunci¢n y no se permite la recursividad.

LLAMADA A FUNCIONES EXTERNAS.

-La llamada a una Funci¢n ha de formar parte de una sentencia siendo lasintaxis de la llamada la siguiente:

-Identificador (Lista de parmetros actuales).

-La referencia a la Funci¢n se puede realizar desde cualquier otraunidad de programa. La lista de parmetros deber estar separada porcomas.-Los parmetros se pueden pasar por valor colocando la palabra reservadaVALUE delante de las variables. No se debe modificar los valores de lasvariables de la lista. Es mejor duplicarlos o protegerlos.-Los parmetros actuales deben coincidir con los argumentos ficticios

con las siguientes especificaciones:-Constantes, variables o expresiones, excepto la concatenaci¢nde operandos.-Nombre de array.-Funciones intr¡nsecas o externas.-Subrutinas.

PASO DE ARGUMENTOS A LAS SUBRUTINAS.-Las llamadas por valor realizan unas copias del argumento verdaderocon lo que ste no cambia durante la ejecuci¢n de la Subrutina.-Las llamadas por referencia no realizan esa copia y el argumentoverdadero puede cambiar durante la ejecuci¢n de la Subrutina.

-Para saber cuando se deben pasar valores por valor o referencia nosfijaremos en la siguiente tabla:

Page 25: Curso básico de fortran

5/12/2018 Curso b sico de fortran - slidepdf.com

http://slidepdf.com/reader/full/curso-basico-de-fortran 25/46

-Por referencia si es una variable, array, elemento de array ocaracteres.-Por valor si es una constante o una expresi¢n.

SUBRUTINAS.-Las Subrutinas empiezan con la sentencia SUBROUTINE y puede tenercualquier sentencia excepto las usadas para definir otros m¢dulos o

unidades de programa.-Puede devolver cero, uno o ms valores siendo la transmisi¢n porparmetros de cabecera. La ejecuci¢n termina con un f¡n l¢gico o RETURNsiendo la £ltima sentencia el f¡n f¡sico o END.-Si s¢lo hay un RETURN se puede omitir porque END funcionar como sifuera RETURN. La sintaxis de las Subrutinas es:

-SUBROUTINE Identificador (Lista de parmetros formales)acci¢n1acci¢n2.......acci¢nn

RETURN .......END

-El identificador del procedimiento ha de ser £nico, el primer carcterdebe ser una letra.-En la Subrutina no se asocia un valor al identificador de la misma,devuelve los datos de salida modificando sus argumentos si son:

-Nombres de variable.-Nombres de array.-Subrutinas ficticias.-Asteriscos.

-El tipo de los argumentos se especifica expl¡cita o impl¡citamente. Elargumento array se define con un tama¤o fijo, anidado o ajustable.-El argumento asterisco se usa para la salida m£ltiple de una Subrutinano permitiendo la autollamada o la recursi¢n.

LLAMADA A SUBRUTINAS.-Una Subrutina puede ser invocada desde otra Subrutina o unidad deprograma principal con la siguiente sintaxis:

-CALL Identificador (Lista de parmetros actuales).

-Los argumentos deben coincidir en orden y tipo con los argumentosficticios de la Subrutina referenciada. La ejecuci¢n de CALL causa queel control de la ejecuci¢n pase a la Subrutina referenciada.-Los argumentos de CALL pueden ser:

-Expresiones.-Arrays.-Subrutinas.

-El argumento correspondiente al asterisco ha de ser del tipo *N siendoN una etiqueta de una sentencia ejecutable. Los valores se transmitenpor referencia.-Un ejemplo de la utilizaci¢n de Subrutinas podr¡a ser:

-CHARACTER *20 CabREAL Gwr

Page 26: Curso básico de fortran

5/12/2018 Curso b sico de fortran - slidepdf.com

http://slidepdf.com/reader/full/curso-basico-de-fortran 26/46

PARAMETER (Cab='Especificaci¢n de la gravedad')Gwr=9.82337WRITE (*, *) Cab, GwrCALL Lista (Cab, Gwr)WRITE (*, *) Cab, Gwr

SUBROUTINE Lista (T¡tulo, Datos)

CHARACTER *20 T¡tuloREAL DatosT¡tulo='Densidad Kg/cm'Datos=0.57975WRITE (*, *) T¡tulo, Datos

RETURNEND

-El resultado que proporcionar el anterior trozo de c¢digo ser unresultado imprevisible, puesto que no se puede modificar una constantea una variable.-La relaci¢n general para el paso de parmetros ser la siguiente:

Parmetros actuales Parmetros formalesVariables Nombre variableElementos de array Nombre variableEstructuras Nombre variableExpresiones Nombre variableArrays Array*Etiqueta EtiquetaSubrutinas Nombre £nicoFunciones Nombre £nico

SENTENCIAS "EXTERNAL" E "INTRINSIC".-Estas sentencias se usan para cuando el argumento es el identificador

simb¢lico de un Subprograma o Funci¢n.-La sentencia EXTERNAL declara que un identificador es un nombre de unaFunci¢n externa o de una Subrutina. No es una sentencia ejecutable ydebe aparecer antes del c¢digo de sentencias ejecutables.-La sintaxis de EXTERNAL es:

-EXTERNAL Identificador1, Identificador2, ..., Identificadorn.

-La sentencia INTRINSIC declara que un identificador es nombre de unaFunci¢n intr¡nseca, apareciendo el identificador en la sintaxis:

-INTRINSIC Funci¢n1, Funci¢n2, ..., Funci¢nn.

-Las Funciones intr¡nsecas que no pueden ser argumentos actuales de lasSubrutinas son los siguientes:

-De conversi¢n de tipos, INT, IFIX, IDINT, FLOAT y CHAR.-Lexicogrficas, LGE, LGT, LLE y LLT.-De mximos y m¡nimos.

ENTRADA MULTIPLE A UNA SUBRUTINA. SENTENCIA "ENTRY".-Sirve para que el comienzo de una Subrutina sea en una sentenciaespec¡fica contenida en la Subrutina. Puede estar en cualquier puntodel programa excepto dentro de un bloque IF o DO.-Esta sentencia es de tipo no ejecutable siendo su sintaxis:

-ENTRY Identificador (Lista de parmetros actuales).

Page 27: Curso básico de fortran

5/12/2018 Curso b sico de fortran - slidepdf.com

http://slidepdf.com/reader/full/curso-basico-de-fortran 27/46

-Los identificadores simb¢licos de varios puntos de entrada tienen queser diferentes entre s¡ y del nombre del procedimiento.-Un punto ENTRY se referencia desde otro m¢dulo. El proceso prosiguehasta encontrar un RETURN.

SALIDA MULTIPLE DE UNA SUBRUTINA. SENTENCIA "RETURN N".-Esta sentencia causa que el control de la ejecuci¢n retorne a la unidad

de programa desde donde se invoc¢. La sintaxis es la siguiente:

-RETURN n.

-La especificaci¢n n se usar en una Subrutina, para devolver el controla una sentencia espec¡fica, sin ser la siguiente a la llamada.-El valor de n ha de estar comprendido entre uno y el n£mero deasteriscos de la cabecera de la Subrutina.

TEMA 6: VECTORES Y MATRICES (ARRAYS).

ARRAYS UNIDIMENSIONALES.-Consiste en una lista de un n£mero finito de datos del mismo tipo quese referencian por un identificador com£n y un n£mero de orden que sonconsecutivos.-Las variables que representan los arrays se denominan variables desub¡ndice. El tama¤o de un vector es el n£mero de elementos quecomponen el vector. Una variable de sub¡ndice tiene el formato:

-Variable (Sub¡ndice).

-La variable puede ser un array de los siguientes tipos:

-Numrico.

-Cadena.-L¢gico.-Complejo.

-El sub¡ndice puede ser:

-Constante numrica.-Variable.-Expresi¢n matemtica.

-Para saber una determinada posici¢n de un elemento se deben cumplir lassiguientes caracter¡sticas:

-Todos los elementos del array son del mismo tipo.-El vector tiene un nombre £nico y los elementos estn ordenadospor el sub¡ndice.

DECLARACION DE UN ARRAY. SENTENCIA "DIMENSION".-Hay dos formas de definir un vector o matriz, utilizando la formacom£n a todas las versiones cuyo formato ser:

-DIMENSION Identificador1 (M¡nimo:Mximo), ..., Identificadorn(M¡nimo:Mximo).

-El n£mero de elementos que obtendremos vendr dado por la f¢rmula

Mximo-M¡nimo+1, sabiendo que mximo deber ser mayor o igual que elvalor de m¡nimo.-El identificador es una variable con las mismas reglas. Opcionalmente

Page 28: Curso básico de fortran

5/12/2018 Curso b sico de fortran - slidepdf.com

http://slidepdf.com/reader/full/curso-basico-de-fortran 28/46

se puede colocar despus del Identificador un alias o ALLOCATE que seusar cuando estemos en tiempo de ejecuci¢n. Como ejemplos:

-ALLOCATE Array (Valor).-DIMENSION Array (11:25).-DIMENSION (14).-Array (:).

-Lo que indica la opci¢n ALLOCATE es que el valor de sus sub¡ndices seva a dimensionar durante la fase de ejecuci¢n.-El sub¡ndice izquierdo puede tomar los valores cero, negativo opositivo al igual que el sub¡ndice derecho, pero ste £ltimo debe serigual o mayor que el sub¡ndice izquierdo.-No se puede modificar la dimensi¢n una vez definida, y es necesariocolocar corchetes para definir un array en tiempo de ejecuci¢n.-En el ejemplo siguiente se declara un array de una dimensi¢n que sedimensionar posteriormente:

-DIMENSION Array ALLOCATE (:).

-Para desasignar el array y liberar la memoria se utilizar la opci¢nDEALLOCATE como sigue:

-DEALLOCATE Array (Valor).

-Las dimensiones se separan por comas y se pueden definir como mximosiete dimensiones, aunque pueden ser ms dependiendo de la memoriadel ordenador.-Si el l¡mite es uno se puede omitir el valor de m¡nimo, quedando lasintaxis siguiente:

-DIMENSION Identificador1 (Mximo), ..., Identificadorn (Mximo).

-La segunda forma de definir vectores es con la especificaci¢n de tiposde sintaxis:

-Tipo Identificador (M¡nimo:Mximo).

-Tipo es cualquiera de los tipos definidos en Fortran. Mediante estaforma se asocia el tipo de dato al identificador y definirlo como unarray con tantos elementos como haya.-Los l¡mites inferiores y superiores son expresiones enteras siemprecon constantes nunca variables.-Otros atributos que podemos colocar despus del identificador son:

-REFERENCE.-C.-PASCAL.-VALUE.

-Se usarn estas opciones cuando se va a pasar el array por parmetro aotros lenguajes, por lo que habr que normalizar el lenguaje.-Los arrays se almacenan en la memoria de una forma distinta que enotros lenguajes, ya que se almacenan columnas a columnas unas acontinuaci¢n de otras.-Se almacenan en orden creciente de sus sub¡ndices a partir de unaposici¢n determinada. Para sacar los elementos por filas se usar el

DO impl¡cito.

OPERACIONES CON ARRAYS Y ELEMENTOS DE UN ARRAY.

Page 29: Curso básico de fortran

5/12/2018 Curso b sico de fortran - slidepdf.com

http://slidepdf.com/reader/full/curso-basico-de-fortran 29/46

-Hay dos tipos de operaciones bsicas, con los elementos que sern lasmismas que permiten los tipos de datos o con estructuras como elrecorrido de un array.-Para hacer el recorrido de un array se usar una estructura del tipoFOR como:

-DO Etiqueta VarA=Izquierdo, Derecho

acci¢n1acci¢n2.......acci¢nn

Etiqueta CONTINUEENDDO

-Se puede leer o escribir un array completo con s¢lo poner elIdentificador del array en la sentencia de E/S.-Se puede inicializar un array completo con s¢lo poner su identificadory los valores que se inicializan en la sentencia DATA.-Consiste en obtener datos de un dispositivo externo y almacenarlos en

un vector o escribir en un dispositivo los datos de un array.-La E/S puede realizarse con el identificador del array y por tantose procesa en total o elemento a elemento con un DO impl¡cito oexpl¡cito.

ENTRADA Y SALIDA DE ARRAYS CON DO "IMPLICITO".-Se utiliza en vez de la estructura de tipo FOR. Esta estructura estya definida y hace sencilla la manipulaci¢n de los arrays en la lecturay escritura.-Con este tipo de DO se ejecuta una s¢la vez la sentencia READ de modoque se lee un s¢lo registro f¡sico. Su sintaxis es:

-READ (*, *) (Identificador (VarA), VarA=Inicio, Final,

Incremento).

-Cuando el incremento es uno se puede omitir. Tambin puede emplearsepara acceder a los elementos de un array de ms de una dimensi¢n paraleer o escribir e inicializar.-El DO impl¡cito se puede anidar con tantos niveles como sea necesarioo tantos niveles como dimensiones tenga el array.-Un ejemplo del uso del DO impl¡cito ser¡a:

-READ (*, *) (Array (VarA), VarA=1, 20).

-El ejemplo anterior lee veinte variables establecindose un bucle. Otro

ejemplo:-READ (*, *) (Array (VarA), VarA=Izdo, Dcho, Paso).

-En el ejemplo anterior Paso indica que la variable toma el valor deizdo y sus sucesivos valores repitiendo el proceso hasta que dchotiene mayor valor que izdo.-Pero si paso es negativo entonces dcho ha de ser menor forzosamente. Elsiguiente ejemplo tendr¡a como representaci¢n con DO la siguiente:

-READ (*, 100) (Array (VarA), VarB=1)READ (*, *) ((Array (VarA, VarB), VarB=1, VarC), VarA=1, VarD)

-DO VarA=1, VarDDO VarB=1, VarC

READ (*, *) (Array (VarA, VarB))

Page 30: Curso básico de fortran

5/12/2018 Curso b sico de fortran - slidepdf.com

http://slidepdf.com/reader/full/curso-basico-de-fortran 30/46

ENDDOENDDO

PASO DE ARRAYS POR PARAMETRO.-El paso de un array se realiza por referencia y cuando un array espasado, en realidad se pasa la direcci¢n en memoria del primer elementoahorrndose memoria y espacio.

-Un ejemplo de ello es el siguiente:

-REAL Array (100, 200), VarA, VarBCALL Lista (Array, VarA, VarB)SUBROUTINE Lista (Arrayauxiliar, VarC, VarD)

-En la definici¢n de los argumentos ficticios para los arrays en lasSubrutinas o Funciones, no es necesario que sean iguales los l¡mitessuperior e inferior de cada dimensi¢n con los l¡mites del argumentoactual del array transmitido.-Siempre se exige que una variable sea dimensionada por lo que dentrode la Subrutina se colocar la siguiente declaraci¢n:

-REAL Arrayauxiliar (100, 200).

-En esta Subrutina no se crea la variable arrayauxiliar sino que sedefine dicha variable. El array en esa declaraci¢n se puede ajustarsiempre que la dimensi¢n sea menor que la declarada anteriormente.-En todo caso el tama¤o del argumento ficticio para el array no puedeser mayor que el del argumento actual.-Se puede poner un asterisco que es la opci¢n por defecto y que indicaque toma el valor de la dimensi¢n iniciada en el programa principal.

ARRAYS DE TAMAÑO AJUSTABLE Y TAMAÑO ASUMIDO.-El argumento ficticio array en la Funci¢n Mximo su tama¤o se ajusta

a N elementos que es un dato transmitido, y por tanto la definici¢nde arrays ajustables.-La definici¢n de un argumento ficticio array de tama¤o ajustable enuna Funci¢n o en una Subrutina es la £nica situaci¢n en la que unadefinici¢n de array puede incluir una variable en la especificaci¢n delrango de cada dimensi¢n.-Para definir un argumento ficticio array como asumido se especifica ell¡mite superior de la £ltima dimensi¢n del array con un asterisco. Eln£mero de elementos del array ficticio es el mismo que el array pasadopor parmetro.-S¢lo se puede especificar el l¡mite superior de la £ltima dimensi¢ncon un asterisco, aunque para los caracteres tambin es vlido.

-Para las Funciones carcter externas usaremos la siguiente sintaxis:-CHARACTER * (*) FUNCTION Identificador (Lista de parmetros).

TEMA 7: SENTENCIAS ESPECIALES DE FORTRAN.

SENTENCIA "EQUIVALENCE".-Esta sentencia declara que dos o ms identificadores son equivalentesy al menos dos. Hace que compartan la misma posici¢n de almacenamientoque puede ser referenciado de ms de una forma.-La sintaxis de esta orden es la siguiente:

-EQUIVALENCE (Lista de Identificadores).

-En una misma sentencia EQUIVALENCE pueden haber ms de una lista de

Page 31: Curso básico de fortran

5/12/2018 Curso b sico de fortran - slidepdf.com

http://slidepdf.com/reader/full/curso-basico-de-fortran 31/46

identificadores, cada una de las cuales se refiere a la misma posici¢nde almacenamiento:

-EQUIVALENCE (Lista de Identificadores),+ (Lista de Identificadores).

-Las variables de distinto tipo pueden hacerse equivalentes, de forma

que habr almacenamiento compartido pero no una posible conversi¢n detipos.-La sentencia de almacenamiento de los identificadores de la listacomienza con la primera unidad de almacenamiento de las entidades dela lista.-Se pueden hacer equivalentes los arrays y los elementos de los arrays.Los ¡ndices de las variables array escritos en una lista de lasentencia deben ser constantes o expresiones formadas por constantes.-En una sentencia EQUIVALENCE no puede provocarse que una misma variableocupe dos posiciones de memoria distintas.-Esta sentencia puede utilizarse entre variables o arrays de tipocarcter aunque sus longitudes no sean las mismas.

-Las variables carcter equivalentes tendrn el mismo primer carcterubicado en la misma posici¢n de memoria.-En Fortran 77 no est permitido hacer equivalentes variables de tipocarcter con variables numricas, y los nombres de Funci¢n no puedenhacerse equivalentes con otra entidad.-Esta sentencia se suele utilizar cuando la memoria de que se disponees muy peque¤a, pero produce que la l¢gica del programa pueda accedera la variable correcta.

SENTENCIA "COMMON".-Una forma de comunicarse entre el programa o Unidad de programa quellama a una Subrutina o Funci¢n, y la Subrutina o Funci¢n llamada, esa travs de la lista de argumentos.

-Con estos argumentos se referencian zonas de memoria comunes desdedistintas Unidades de programa, la Unidad de programa que llama y laUnidad llamada.-Con esta sentencia se pueden definir zonas comunes de memoria entrediversas Unidades de que forman parte un programa, entre la Unidadprincipal y una o varias Subrutinas o Funciones.-Es una sentencia no ejecutable que debe aparecer en la Unidad deprograma que llama y en el Subprograma llamado antes de todas lassentencias ejecutables.-En esta sentencia se listan los nombres de las variables y los nombresde los arrays con su dimensi¢n y es una forma alternativa de comunicardatos a la lista de argumentos de los Subprogramas.

-Si un array va ha estar en una zona com£n se puede definir su lista deidentificadores en la lista COMMON o definir el array y ponerlo en lalista de la sentencia COMMON.-Las variables y los arrays son asignados a un almacenamiento com£n enel orden en que aparecen en la sentencia COMMON, siendo la sintaxis deesta:

-COMMON Identificador1, Identificador2, ..., Identificadorn.

-La sintaxis anterior pertenece a una sentencia COMMON sin nombre o enblanco, pero existe una sentencia COMMON etiquetada o con nombre.-El orden de los identificadores especificados en una sentencia COMMONdetermina la equivalencia de identificadores simb¢licos entre varias

Unidades de un programa (El bloque com£n de memoria es lo global).-La lista de identificadores deben ser de igual tipo en todas lassentencias COMMON establecindose las equivalencias por el orden en

Page 32: Curso básico de fortran

5/12/2018 Curso b sico de fortran - slidepdf.com

http://slidepdf.com/reader/full/curso-basico-de-fortran 32/46

que estn en la lista.-Un identificador de una lista COMMON no puede figurar como argumento enuna Subrutina o Funci¢n ni como parmetro en las llamadas (Puede haberun solapamiento de memoria).-El bloque com£n de memoria es £nico para todo el programa. La memoriacom£n se establece de forma contigua.-En un bloque com£n de memoria no puede haber variables carcter y no

carcter mezcladas, siendo todo de variables carcter o variables nocarcter.-Las variables o arrays que figuran en la lista de COMMON sin nombreno pueden ser inicializadas con DATA, s¢lo pueden inicializarse consentencias de asignaci¢n.

SENTENCIA "COMMON" CON NOMBRE. USO CONJUNTO DE "COMMON" Y "EQUIVALENCE".-Esta sentencia etiquetada permite definir varias zonas comunes dememoria, cada una con su nombre o etiqueta.-Se forman de igual manera que las anteriores pero se escribe su nombreo etiqueta con dos barras (Slash) antes de la lista de variables.-El nombre de COMMON debe ser un identificador vlido y pueden definirse

dos o ms zonas comunes. Es conveniente usar tantas sentencias COMMONcomo zonas comunes haya.-Se pueden mezclar en una zona com£n variables numricas con variableso arrays l¢gicos.-En el siguiente ejemplo tendremos s¢lamente dos bloques COMMON unocon nombre y otro sin nombre:

-COMMON /Nombre-1/ VarA, VarB, VarCCOMMON VarH, VarI, VarJCOMMON /Nombre-1/ VarK, VarLCOMMON VarM, VarN

-Una comparaci¢n entre un trozo de programa con COMMON y otro sin l

podr¡a ser el siguiente:

-REAL VarD, VarE, VarF, VarG, VarZREAD *, VarD, VarE, VarF, VarGVarZ=2VarT=Funci¢n (VarD, VarE, VarF, VarG)STOPEND

FUNCTION Funci¢n (VarA, VarB, VarC, VarX)VarI=VarA*VarX**2+VarB*VarX+VarC

RETURN

END-REAL VarD, VarE, VarF, VarG, VarZCOMMON /Coeficientes/ VarD, VarE, VarFVarZ=2VarT=Funci¢n (VarZ)STOPEND

FUNCTION Funci¢n (VarX)COMMON /Coeficientes/ VarA, VarB, VarCVarF=VarA*VarX**2+VarB*VarX+VarC

RETURN

END

-Si en una sentencia COMMON se precede a los identificadores de dos

Page 33: Curso básico de fortran

5/12/2018 Curso b sico de fortran - slidepdf.com

http://slidepdf.com/reader/full/curso-basico-de-fortran 33/46

barras o slash indicar que son zonas comunes sin nombre. Esindiferente el orden de definici¢n de las zonas comunes.-Los arrays o variables de COMMON con etiqueta pueden ser inicializadoscon la sentencia DATA, pero no las variables de un COMMON sin nombre.-Un COMMON con etiqueta tiene que tener el mismo tama¤o en todas lasUnidades de programa.-Las variables o arrays pueden aparecer en ambas sentencias COMMON y

EQUIVALENCE siempre que no causen conflicto en el orden en el que sealmacenan.-Dos variables que estn en una zona com£n no pueden ser equivalentesentre s¡.

SENTENCIA "SAVE".-Esta sentencia se utiliza para almacenar estticamente los valoreso datos de una invocaci¢n a otra.-SAVE declara que las variables locales y los arrays sean retenidosdespus de ejecutar RETURN o la siguiente llamada al Subprograma.-Las variables o arrays locales contendrn el £ltimo valor adquiridoen la ejecuci¢n anterior al Subprograma. Su sintaxis es:

-SAVE (Lista de identificadores).

-La lista de identificadores, que podrn ser variables, arrays o bloquesCOMMON, retendr el £ltimo valor adquirido antes de la ejecuci¢n deRETURN.-Las excepciones en las que las variables no quedan indefinidas al salirde un Subprograma son:

-Sentencias SAVE del Subprograma.-Bloques COMMON en blanco o sin nombre.-Bloques COMMON etiquetados y definidos en la Unidad de programaprincipal y uno o ms Subprogramas.

-Las variables en bloques COMMON etiquetados en Subprogramas quedanindefinidos s¢lo cuando hay una salida desde un Subprograma pero no sepueden retener con SAVE y el nombre del bloque COMMON.-En una lista de SAVE no pueden aparecer parmetros de Subrutinas oFunciones, ni nombres de Funci¢n y Subrutinas ni variables o arraysde bloques COMMON.-Puede haber ms de un SAVE o escribir la lista en un s¢lo SAVE. Si hayms de un SAVE no podrn repetirse nombres de variables o arrays.

INICIALIZACION DE VARIABLES. SENTENCIA "DATA".-Esta sentencia permite inicializar variables con la siguiente sintaxis:

-DATA Lista1 /Constantes/, ..., Listan /Constantes/.

-La lista contendr los nombres de las variables o arrays a inicializarseparados por comas e inicializa las constantes que vendrn separadaspor comas.-Puede especificarse ms de una lista y sus constantes o agrupar todaslas variables en una s¢la lista. La inicializaci¢n se realiza en elorden en el que aparecen, de izquierda a derecha.-Si hay constantes consecutivas iguales se podr poner:

-N£mero*Constante.

-En el formato anterior N£mero es el n£mero de repeticiones que seespecificar de dicha forma.-Las reglas ms importantes de las sentencias DATA son las siguientes:

Page 34: Curso básico de fortran

5/12/2018 Curso b sico de fortran - slidepdf.com

http://slidepdf.com/reader/full/curso-basico-de-fortran 34/46

-El n£mero de constantes ha de ser igual al n£mero de elementosde la lista, variables o arrays.-No pueden aparecer argumentos ficticios de Subprogramas, nombresde Funci¢n y elementos de bloque COMMON en blanco.-S¢lo pueden estar los bloques COMMON etiquetados en los bloquesDATA.

-El tipo de variable o array a inicializar debe corresponderse con eltipo de la constante. Lo mismo para las variables de tipo carcter(Si hay exceso se ignora y si hay defecto se completa con blancos a laderecha).-Esta sentencia no es ejecutable y puede aparecer despus de lasespecificaciones de datos pero es mejor colocarlas antes de lassentencias ejecutables.-Las sentencias DATA pueden utilizar el DO impl¡cito para inicializarel array a los datos que se quieran o s¢lo definirlo. Un ejemplo deello ser¡a:

-INTEGER VarA, Orden, Alfa, Lista (100)REAL Coeficiente (4), Epsilon (2), Pi (5), VarX (5, 5)CHARACTER *15 AyudaDATA VarA /0/, Orden /3/DATA Coeficiente /1.0, 2*3.0, 1.0/, Epsilon (1) /0.0001/DATA ((VarX (VarI, VarJ), VarI=1, VarJ), VarJ=1.5) /15*1.0/DATA Lista /100*0/DATA Ayuda /'Ayuda'/

-El siguiente formato puede ir en cualquier parte del programa y tienecomo misi¢n hacer una llamada al camino o ruta especificado:

-$INCLUDE 'Path Nombre.For'.

SENTENCIA "PARAMETER".-Esta sentencia identifica constantes mediante nombres identificadoreso simb¢licos para que despus se pueda hacer referencia a la constantepor el identificador. La sintaxis de la orden es:

-PARAMETER (Identificador=Expresi¢n constante).

-Dentro de los parntesis se pueden especificar tantos parmetros comose quiera separndolos por comas.-La expresi¢n debe coincidir en su tipo con el identificador y el valorque va ha representar el identificador al evaluarse la expresi¢n. Debe

ajustarse a las reglas establecidas para las sentencias de asignaci¢n.-El tipo de dato del identificador puede definirse de forma impl¡citao expl¡cita, describiendo la sentencia de definici¢n antes.-La expresi¢n constante puede hacer referencia a otro parmetro peroha de estar definida antes en otro PARAMETER o en la misma sentenciaPARAMETER.-Un identificador de constante no puede cambiar despus el valor que sele ha impuesto.-El mbito de los parmetros es la Unidad de programa en que estndefinidos y una vez que el parmetro es definido puede ser referenciadoen los sitios en que pueden referenciarse las constantes excepto:

-No se pueden usar los parmetros en una especificaci¢n de un

formato.-Un parmetro no puede usarse como parte de otra constante.

Page 35: Curso básico de fortran

5/12/2018 Curso b sico de fortran - slidepdf.com

http://slidepdf.com/reader/full/curso-basico-de-fortran 35/46

-Esta sentencia no es ejecutable y puede aparecer despus de cualquiersentencia de especificaci¢n de tipo o antes de que se haga uso delparmetro.-Cuando un valor aparece varias veces en una Unidad de programa se debeasociarle un nombre simb¢lico y usar dicho nombre para despus hacerla referencia a dicho nombre.

INICIALIZACION DE UN COMMON CON NOMBRE. SUBPROGRAMA "BLOCK DATA".-Este Subprograma asigna valores iniciales a variables y a arrays de unCOMMON etiquetado, puesto que los COMMON en blanco se inicializan enlas sentencias DATA.-La sentencia BLOCK DATA que puede tener un identificador termina con lasentencia END y las sentencias que se pueden especificar son todas lasno ejecutables para la inicializaci¢n de la lista de COMMON etiquetadosy que son:

-IMPLICIT.-PARAMETER.-DIMENSION.

-SAVE.-COMMON.-EQUIVALENCE.-DATA.

-La sintaxis de este Subprograma ser:

-BLOCK DATA Identificadorsentencia1sentencia2..........sentencian

END

-Si el identificador se coloca es considerado como un identificadorglobal y no puede coincidir con el nombre de una Funci¢n o el de unaSubrutina.-El COMMON etiquetado al inicializarlo hay que especificarlo en elSubprograma BLOCK DATA de forma completa aunque haya variables noinicializables.-En un programa ejecutable pueden haber ms de un BLOCK DATA pero s¢louno puede ser sin nombre y todos los dems nombres distintos. Un COMMONs¢lo puede estar en un s¢lo BLOCK DATA.-Un ejemplo del uso de este Subprograma ser¡a:

-BLOCK DATA NombreCOMPLEX VarA, VarBLOGICAL VarC, VarDINTEGER VarI, VarJ, VarK, ListaREAL VarXCOMMON /Bloque1/ VarX (10), VarI, VarJ, VarACOMMON /Bloque2/ Lista (6), VarC, VarD, VarBDATA VarX /10*0.0/, VarI, VarJ /1, 0/, VarC /False/DATA VarA, VarB, /2*(0, 1)/

END

-Normalmente este tipo de Subprogramas se suelen colocar cuando acabael programa principal.

TIPO DE DATO COMPLEJO.-Este tipo de datos se representa por un par ordenado de n£meros reales

Page 36: Curso básico de fortran

5/12/2018 Curso b sico de fortran - slidepdf.com

http://slidepdf.com/reader/full/curso-basico-de-fortran 36/46

de doble precisi¢n, enteros o una combinaci¢n de ellos encerrados entreparntesis y separados por comas.-Para definir un identificador de tipo complejo contamos con COMPLEX, ypueden haber variables, arrays complejos y Funciones complejas.-La memoria que ocupa una variable compleja es el doble de una variablereal. Se puede asignar una constante compleja, otra variable complejao una expresi¢n compleja inicializndose con DATA.

-Cuando a la variable compleja se le quiere asignar un n£mero complejoque tiene la parte real, la parte imaginaria o ambas debe usarse laFunci¢n intr¡nseca COMPLEX.-Los n£meros complejos pueden sumarse, restarse, multiplicarse, elevarsea una potencia y dividirse. No puede usarse en la expresi¢n aritmticade la sentencia IF aritmtico, y no puede usarse como sub¡ndice de unarray.-Otras Funciones que tienen los n£meros complejos son:

-AIMAG (Expresi¢n numrica) (Parte imaginaria como n£mero real).-CONJ (Expresi¢n numrica) (Devuelve el complejo conjugado).

-Otras Funciones internas que tienen un nombre espec¡fico para elargumento complejo y el valor que devuelven es tambin complejo son:

-CSQRT (Expresi¢n numrica) (Ra¡z cuadrada de un complejo).-CABS (Expresi¢n numrica) (M¢dulo del complejo).-CEXP (Expresi¢n numrica) (Funci¢n exponencial de un complejo).-CLOG (Expresi¢n numrica) (Logaritmo natural de un complejo).-CSIN (Expresi¢n numrica) (Seno de un complejo).-CCOS (Expresi¢n numrica) (Coseno de un complejo).

SENTENCIA "PAUSE".-Esta sentencia hace una parada temporal en la ejecuci¢n de un programapara detener la salida hasta que el usuario haya podido leer toda la

informaci¢n. Su sintaxis es:

-PAUSE.-PAUSE 'Cadena de caracteres'.-PAUSE N£mero (Constante de hasta cinco d¡gitos).

-Al producirse la parada se visualiza un mensaje propio regido por eln£mero indicado o la cadena si ha sido especificada.

ASIGNACION DE ETIQUETAS A VARIABLES ENTERAS. SENTENCIA "ASSIGN TO".-Esta sentencia permite asignar un n£mero de etiquetas por una constanteentera a una variable entera siendo su sintaxis:

-ASSIGN Etiqueta TO Variable.

-Etiqueta es la etiqueta de una sentencia ejecutable o de una sentenciaFORMAT, siendo variable el identificador de una variable entera.-Despus de la ejecuci¢n de ASSIGN el valor de la variable no puede serconsiderada como un dato entero.-Si la etiqueta asignada a la variable es la de una sentencia FORMAT, lavariable puede ser usada como un identificador de formato.-Si la etiqueta asignada es ejecutable la variable puede ser usada enun GOTO asignado como:

-GOTO Variable.

-GOTO Variable (Etiqueta1, Etiqueta2, ..., Etiquetan).

-Cuando se ejecuta una sentencia GOTO asignada el control del programa

Page 37: Curso básico de fortran

5/12/2018 Curso b sico de fortran - slidepdf.com

http://slidepdf.com/reader/full/curso-basico-de-fortran 37/46

es transferido a la sentencia con la etiqueta del £ltimo valor asignadoa la variable con ASSIGN.

TEMA 8: TRATAMIENTO DE CADENAS EN FORTRAN.

CADENAS DE CARACTERES.

-Una cadena es un conjunto de caracteres encerrados entre ap¢strofes.Si se quiere representar un ap¢strofe dentro de una cadena se deberrepresentar por dos ap¢strofes consecutivos.-Una cadena se declara con la siguiente sintaxis:

-CHARACTER *N£mero Lista de variables.

-Aqu¡ n£mero representa el n£mero de caracteres de las variables de unacadena. Un array que contiene caracteres se define con una sentenciaCHARACTER y declarada de dos modos distintos.

LAS CADENAS COMO ARGUMENTO DE SUBPROGRAMAS.

-Un Subprograma puede especificar una cadena de caracteres sin darle unalongitud espec¡fica y equivale a la longitud de una array con unavariable entera.-Se puede definir en un Subprograma un array de n variables cada una consu cadena de caracteres sin especificar la longitud de cadena en lasentencia CHARACTER.-La longitud de la cadena es siempre positiva nunca igual a cero, ydicha longitud no se puede alterar aunque s¡ asignar cadenas cuyalongitud es diferente.-Una cadena con longitud ms corta que la de la variable, rellena ablancos por la derecha y si es ms larga la trunca.

ASIGNACION DE VALORES A LAS CADENAS.

-Se realiza con la sentencia de asignaci¢n y una constante de caracteresusndose una variable cadena para inicializar otra variable de cadena.-Si los caracteres asignados no coinciden con la longitud se rellenana blancos y si es mayor que la longitud se trunca por la derecha.

COMPARACION DE CADENAS.-Esta comparaci¢n se realiza carcter a carcter de izquierda a derechacon las siguientes reglas:

-Si las cadenas tienen igual longitud y los caracteres son losmismos, las cadenas son iguales.-Si una cadena es ms corta que la otra se a¤aden blancos a la

derecha de la otra cadena, de modo que pueda proceder a laevaluaci¢n como si las cadenas fueran iguales.

-Las reglas de ordenaci¢n t¡picas son las siguientes:

-Las letras may£sculas estn ordenadas de A a Z.-Los d¡gitos ordenados de 0 a 9.-El carcter blanco es menor que cualquier letra o n£mero.

SUBCADENAS.-Es cualquier cadena que representa un subconjunto de la cadena originaly mantiene el orden original. Para especificar una subcadena de unavariable de carcter o un elemento de un array de carcter se usa:

-Nombrecadena ( Expresi¢n1 : Expresi¢n2 ).

Page 38: Curso básico de fortran

5/12/2018 Curso b sico de fortran - slidepdf.com

http://slidepdf.com/reader/full/curso-basico-de-fortran 38/46

-Expresi¢n1 es la posici¢n en nombrecadena del primer carcter de lasubcadena y expresi¢n2 es la posici¢n en nombrecadena del £ltimocarcter de la subcadena.-Expresi¢n1 y expresi¢n2 deben ser del tipo entero y cumplir:

-1<=Expresi¢n1<=Expresi¢n2<=Longitud de la cadena.

-Si se omite la expresi¢n1 se toma por defecto uno. Si se omite laexpresi¢n2 se toma el valor de la longitud de la cadena original,siendo la subcadena:

-Expresi¢n2-Expresi¢n1+1.

CONCATENACION DE CADENAS.-Consiste en combinar dos o ms cadenas de caracteres en una £nicacadena, siendo el operador que realiza la concatencaci¢n o uni¢n decadenas el siguiente:

-//.

FUNCION LONGITUD. SENTENCIAS "LEN" Y "GETLEN".-LEN determina la longitud de la cadena de caracteres argumento siendosu sintaxis:

-LEN (Cadena de caracteres).

-Si la cadena de caracteres es una constante de carcter su longitud esel n£mero de caracteres. Si es una variable de cadena o elemento dearray la longitud es la definida en la declaraci¢n.-Si cadena es una subcadena con el formato (Expresi¢n1:Expresi¢n2) sulongitud es la siguiente:

-Expresi¢n2-Expresi¢n1+1.

-GETLEN calcula la longitud de una cadena de caracteres excluyendo a loscaracteres en blanco siendo su formato:

-GETLEN (Cadena de caracteres).

FUNCIONES DE TRATAMIENTO DE CARACTERES. SENTENCIAS "CHAR" E "ICHAR".-CHAR determina el carcter de la cadena que ocupa la posici¢n relativaen la secuencia de caracteres ASCII siendo su sintaxis:

-CHAR (Posici¢n).

-El valor de posici¢n debe estar entre 0 y 255 caracteres de la cadena.-ICHAR es la Funci¢n inversa de CHAR. El argumento es un carcter y laFunci¢n devuelve un entero que es la posici¢n del carcter en lasecuencia ordenada de caracteres ASCII con el formato:

-ICHAR (Carcter).

FUNCION DE BUSQUEDA. SENTENCIA "INDEX".-Esta Funci¢n localiza una subcadena dentro de otra. Devuelve un valorentero que indica la posici¢n inicial de la cadena de caracteresdestino dentro de la cadena original siendo su sintaxis:

-INDEX (Cadena fuente, Cadena destino).

-Si la cadena destino no existe el formato devuelve el valor cero.

Page 39: Curso básico de fortran

5/12/2018 Curso b sico de fortran - slidepdf.com

http://slidepdf.com/reader/full/curso-basico-de-fortran 39/46

OTRAS FUNCIONES.-La Funci¢n LEN_TRIM devuelve la longitud de la cadena dada sin losespacios en blanco siendo su sintaxis:

-LEN_TRIM (Cadena de caracteres).

-La Funci¢n SCAN busca una subcadena en una cadena dada y muestra laprimera posici¢n en la que coinciden ambas cadenas, buscando carctera carcter, siendo su sintaxis:

-SCAN (Cadena1, Cadena2).

-La Funci¢n VERIFY devuelve un entero y verifica que una cadena estinclu¡da en otra, devolviendo la posici¢n del carcter que sea distintode los dems y siendo su sintaxis:

-VERIFY (Cadena1, Cadena2).

-Otras Funciones que devuelven un valor l¢gico y que sirven para lacomparaci¢n son:

-LGE (Cadena1, Cadena2), verifica si cadena1 es mayor o igual quecadena2.-LGT (Cadena1, Cadena2), verifica si cadena1 es mayor que cadena2.-LLE (Cadena1, Cadena2), verifica si cadena1 es menor o igual quecadena2.-LLT (Cadena1, Cadena2), verifica si cadena1 es menor que cadena2.

-En estas cuatro £ltimas Funciones el argumento debe ser siempre uncarcter.

TEMA 9: FICHEROS.

INTRODUCCION.-

TEMA 9: FICHEROS.

ESTRUCTURA DE UN FICHERO.-Un fichero es una colección de datos organizados de alguna manera yalmacenados generalmente en disco o cinta.-Un fichero está formado por registros y estos constan de campos que

pueden ser numéricos o de caracteres.-Los ficheros formateados pueden ser editados, imprimirse o visualizarsemientras que los ficheros no formateados no pueden hacer esas acciones.Aunque la lectura y la escritura son más rápidas y ocupan poca memoria.

ORGANIZACION DE FICHEROS.-Se consideran dos tipos de acceso a los registros de un fichero queson los siguientes:

-Acceso Secuencial.-Acceso Directo.

-El acceso Secuencial implica el acceso a un fichero según el orden de

almacenamiento de sus registros, uno a uno.-El acceso Directo implica situarse en un registro determinado sin queello implique la consulta de los registros precedentes.

Page 40: Curso básico de fortran

5/12/2018 Curso b sico de fortran - slidepdf.com

http://slidepdf.com/reader/full/curso-basico-de-fortran 40/46

-La Organización de un fichero define la forma en que los registros sedisponen sobre el soporte de almacenamiento:

-Organización Secuencial.-Organización Directa.-Organización Indexada.

-Un fichero con organización Secuencial es una sucesión de registrosalmacenados consecutivamente sobre un soporte externo de tal modo quepara acceder al registro n, necesariamente hay que pasar por los n-1registros precedentes.-Un fichero con organización Directa exige soporte direccionable. Cadaposición se localiza por su dirección absoluta, que en el caso deldisco suele venir definida por número de pista y de sector.-El lenguaje Fortran no es muy fuerte es la manipulación de archivosaunque tiene capacidad para manipularlos.-Los archivos suelen ser pequeños y la información a tratar suele estaren sentencias DATA.

APERTURA DE UN FICHERO. SENTENCIA "OPEN".-Esta sentencia es la encargada de la apertura de un fichero, conectandoun fichero a un número de Unidad, de forma que para referirse despuésal fichero se hará con el número de Unidad establecido en la apertura.-Cuando se quiere crear un fichero en un programa se utilizará lasentencia OPEN para que quede en una Unidad.-La sentencia OPEN también es usada para declarar las propiedades delfichero, si es Secuencial o Directo, si es Formateado o no Formateadoy otras propiedades.-La sintaxis de la sentencia será la siguiente:

-OPEN ( UNIT= N, FILE='Nombre' , ACCESS=Tipo , FORM=Formato ,STATUS=Estado , IOSTAT=N , ERR=Etiqueta , BLANK=Tipo ,

RECL=N , BLOCKSIZE=N , MODE=Tipo ).

-La sentencia OPEN es la primera sentencia que debe aparecer al utilizarun fichero.-La opción UNIT siempre debe figurar en la sentencia OPEN y se podráomitir, en cuyo caso N deberá figurar como primer parámetro.-Esta opción se encarga de asignar un canal de comunicación paraejecutar el archivo.-La opción FILE indica el nombre del fichero que va a estar conectado ala unidad N. Si no se coloca el nombre del fichero se podrá pasar porparámetro el nombre de dicho fichero.-La opción ACCESS, donde Tipo es una expresión de tipo carácter e indica

el tipo de fichero que se va a utilizar, siendo por defecto Secuencialy puediendo tomar los valores:

-SEQUENTIAL.-DIRECT.

-La opción FORM, donde Formato es una expresión de tipo carácter en queel valor por defecto es Secuencial, asigna un formato al fichero,siendo los valores que puede tomar:

-FORMATTED.-UNFORMATTED.-BINARY.

-Si la opción es omitida OPEN asumirá FORMATTED si el fichero es de tipoSecuencial y UNFORMATTED si es un fichero Directo. BINARY se utiliza en

Page 41: Curso básico de fortran

5/12/2018 Curso b sico de fortran - slidepdf.com

http://slidepdf.com/reader/full/curso-basico-de-fortran 41/46

Fortran 90 y representa a los ficheros binarios.-La opción STATUS, donde Estado es una expresión de tipo carácter y seusa para saber si el fichero ya existe o es nuevo y por tanto va a sercreado. Sus opciones son las siguientes:

-OLD (Si el fichero existe, sino produce error).-NEW (Crea el nuevo fichero y FILE no debe existir en la Unidad).

-SCRATCH (Si crea un fichero temporal y no debe darse nombre alfichero).-UNKNOWN (Si no se sabe si existe o no el fichero siendo la opciónpor defecto).

-Un fichero SCRATCH desaparece cuando se cierra la Unidad o cuandotermina la ejecución.-La opción IOSTAT, donde N es un identificador de una variable entera.Almacena un código numérico de cómo se ejecuta la sentencia OPEN. SiOPEN se ejecuta sin error se almacena un cero en N.-La opción ERR, donde Etiqueta es la sentencia donde se bifurcaincondicionalmente si el fichero no puede ser abierto al producirse un

error.-La opción BLANK, donde Tipo es una expresión de tipo carácter quepuede tomar los siguientes valores:

-NULL (Los blancos son ignorados y es opción por defecto).-ZERO (Los blancos son interpretados como ceros).

-Esta opción se usa para especificar la interpretación de los espaciosen blanco en los datos de entrada.-La opción RECL, donde N es una expresión entera, indica la longituden caracteres de los registros en un fichero de acceso Directo. Sólodebe aparecer en los ficheros Directos.-La opción BLOCKSIZE, donde N es un número entero, asigna un tamaño al

buffer de lectura intermedio.-La opción MODE, donde Tipo es una cadena de caracteres, es el modo deapertura del fichero. La opción por defecto es la de lectura escriturasiendo las opciones:

-READ.-WRITE.-READWRITE.

-Todas las opciones son opcionales excepto UNIT que es obligatorio, y siel fichero es de acceso Directo es obligatorio especificar RECL.

ESCRITURA DE UN FICHERO SECUENCIAL.-Consiste en transferir información desde la memoria principal alsoporte externo donde está el fichero.-Para escribir en un fichero Secuencial se usa WRITE especificando laUnidad a la que está conectada el fichero indicando que el fichero esSecuencial.-La sentencia de escritura tiene la siguiente sintaxis:

-WRITE ( UNIT= N , FORM=Formato , ERR=Etiqueta , IOSTAT=N ,ENDFILE=Unidad ).

-La única opción obligatoria sería UNIT, todas las demás han quedadoexplicadas.

-Al crear un fichero los registros se escriben uno a continuación delotro, escribiendo un registro especial EOF al final de los datosescritos.

Page 42: Curso básico de fortran

5/12/2018 Curso b sico de fortran - slidepdf.com

http://slidepdf.com/reader/full/curso-basico-de-fortran 42/46

-Normalmente con CLOSE el registro EOF es automáticamente escrito alcerrar el fichero, aunque se puede usar la siguiente sentencia:

-ENDFILE N.-ENDFILE ( UNIT= N , ERR=Etiqueta , IOSTAT=N ).

-Donde N es el número de la Unidad a la que se conectó el fichero

Secuencial. La sintaxis más empleada es la primera. Todas las demásopciones ya han quedado explicadas.-Si se ejecuta ENDFILE, el nombre de la Unidad a la que está conectadoun fichero nuevo, sin datos, creará un fichero vacío.

SENTENCIA DE CIERRE DE UN FICHERO "CLOSE".-Esta sentencia rompe la conexión de un fichero con la Unidad a la quese conectó un OPEN siendo su sintaxis:

-CLOSE ( UNIT= N , STATUS=Tipo , IOSTAT=N , ERR=Etiqueta ).

-La opción UNIT, siendo N un entero, es el número de la Unidad donde

se encuentra el fichero que se va a desconectar y puede omitirse, encuyo caso, será el primer parámetro de CLOSE.-La opción STATUS, siendo Tipo una expresión tipo carácter indica elestado del fichero en ese momento, puediendo tener los valores:

-KEEP (El fichero se guarda después de ser cerrado).-DELETE (El fichero es borrado perdiéndose después del cierre).

-Por defecto toma el valor KEEP, excepto para los ficheros que son detipo SCRATCH.-Los posibles valores que se pueden sacar de las opciones FORM y ACCESSson los siguientes:

-Registros Secuencial-Formateados.-Registros Secuencial-No formateados.-Registros Directo-Formateados.-Registros Directo-No formateados.-Registros Binario-Formateado.-Registros Binario-No formateado.

-Los registros de tipo Secuencial-Formateados se almacenan en códigoASCII y permiten verse con cualquier editor de texto y manipularlos.-Si tenemos las siguientes instrucciones:

-VarI=4

OPEN (33, FILE='FSEQ')WRITE (33, '(A, I3)') 'RECORD', I/3WRITE (33, 'C3')WRITE (33, '(11H El Reg-N3)')CLOSE (33)

-La salida que dará este ejemplo serán tres segmentos de longitudvariable cuya estructura de registros será la siguiente:

-Se puede observar como después de la primera marca de fichero OA, elsegundo registro no aparece por ser de 0 bytes, mientras que el primerotendrá 9 bytes y el tercero tendrá 11 bytes.

-Los registros de tipo Secuencial-No formateados tienen longitudvariable y no están en código ASCII, sino otro código que lo introduceel programa y lo organiza en bloques físicos de 128 bytes como máximo.

Page 43: Curso básico de fortran

5/12/2018 Curso b sico de fortran - slidepdf.com

http://slidepdf.com/reader/full/curso-basico-de-fortran 43/46

-Si tenemos las siguientes instrucciones:

-CHARACTER Array (3)INTEGER *4 Datos (35)DATA Datos /35*-1/, Array / 'X', 'Y', 'Z'/OPEN (33, FILE='UFSEQ', FORM='UNFORMATTED')WRITE (33) Datos

WRITE (33) ArrayCLOSE (33)

-La salida que dará este ejemplo será la siguiente:

-Como el bloque tiene un tamaño máximo de 128 bytes por registro, alsacar todos los elementos del Array Datos (Que necesitará 140 bytes)se particiona en dos registros uno de 128 bytes y otro de 12 bytes.-Los registros de tipo Directo-Formateados tienen la misma longitud,que se deberá especificar en la longitud del registro.-A cada registro siempre se le añade el carácter de control de carro

(OD) y el carácter de avance de línea (OA). Si tenemos las siguientesinstrucciones:

-OPEN (33, FILE='FDIR', FORM='FORMATTED', ACCESS='DIRECT',RECL=10)WRITE (33, '(A)', REC=1) 'Registro 1'WRITE (33, '(I5)', REC=3) 30303CLOSE (33)

-La salida que dará este ejemplo será la siguiente:

-Se puede ver que del registro primero se pasa al tercero. En los

ficheros Directos, se reserva espacio para los registros.-De esa forma si luego viene un registro segundo se insertaría entre losregistros primero y tercero.-Los registros de tipo Directo-No formateados es la opción por defecto,en la que la longitud del registro es la misma para todos pero elcompilador no introduce los caracteres OD y OA.

LECTURA DE UN FICHERO SECUENCIAL.-Transfiere la información contenida en los registros del fichero a lamemoria del ordenador representada por las variables que aparecen enla lista de la sentencia de lectura.-La sentencia READ tiene la sintaxis para ficheros Secuenciales

siguiente:-READ ( UNIT= N, FORM=Formato , END=Etiqueta , ERR=Etiqueta ,IOSTAT=N , REC=N ) Lista de variables.

-La opción que siempre debe figurar es el número de Unidad pertenecienteal de apertura del fichero Secuencial.-La opción END, donde Etiqueta es un número entero indica que aldetectar el carácter de fin de fichero transfiera el control deejecución del programa a la etiqueta indicada.-Todas las demás opciones ya se han explicado.-Para leer un fichero la primera opción a realizar es abrirlo en laopción STATUS con el valor OLD.

POSICIONAMIENTO EN UN FICHERO SECUENCIAL.-La lectura y escritura de registros se realiza uno a uno y en serie.

Page 44: Curso básico de fortran

5/12/2018 Curso b sico de fortran - slidepdf.com

http://slidepdf.com/reader/full/curso-basico-de-fortran 44/46

Hay dos sentencias para regresar un registro (BACKSPACE) y paraposicionarse al principio del fichero (REWIND).-La sintaxis de BACKSPACE es la siguiente:

-BACKSPACE N.-BACKSPACE ( UNIT= N, IOSTAT=N , ERR=Etiqueta ).

-N es el número de la Unidad a la cual está conectado el fichero. Si nohay registro anterior porque el fichero se acaba de abrir no tieneefecto.-Todas las demás opciones ya se han explicado.-La sentencia REWIND tiene la siguiente sintaxis:

-REWIND N.-REWIND ( UNIT= N, IOSTAT=N , ERR=Etiqueta ).

-El efecto es rebobinar el fichero al comienzo, apuntando al primerregistro. Todas las demás opciones ya se han explicado.

CREACION DE UN FICHERO DE ACCESO DIRECTO.-Cada registro de un fichero de acceso Directo es identificadoúnicamente por su posición lógica en el fichero o número de registroque es un entero de 1 a n.-El acceso a los registros se hace siempre a partir del número deregistro con el que fue creado. En un fichero de acceso Directo notiene sentido el registro EOF.-Por ello ENDFILE no se debe ejecutar sobre estos ficheros, porque notiene efecto.-En un fichero de acceso Directo se reserva espacio de almacenamientopara todos los posibles registros.-En los ficheros de acceso Directo los datos de entrada o de salidadeben ir siempre con formato. Este tipo de ficheros es creado al

abrirlo, especificando acceso directo y dándole una longitud.-Los ficheros no formateados guardan la información en código binario,siendo el acceso a los registros más rápidos porque se elimina eltiempo de conversión a binario.-Los registros pueden ser escritos o leídos en cualquier orden. Siemprehay que indicar en las sentencias READ y WRITE un parámetro REC queindicará el número de registro a acceder.-El proceso para leer un registro es similar al de escribir. Hay queespecificar el número de registro que se quiere leer.

SENTENCIA "INQUIRE".-Con esta sentencia durante la ejecución de un programa puede obtenerse

información sobre las características de una Unidad o de un fichero.-Puede ejecutarse antes de que un fichero haya sido abierto, conectadoa una Unidad.-La información que puede requerirse de un fichero o de una Unidad esmuy variada. La sintaxis para esta sentencia es la siguiente:

-INQUIRE (UNIT=N, Lista de especificadores).

-Donde N es un número de unidad sobre el que se va a preguntar siendola lista de especificadores opcionales los siguientes:

-ACCESS=Var*10 ('SEQUENTIAL' o 'DIRECT').-BLANK=Var*4 ('NULL' o 'ZERO').

-DIRECT=Var*7 ('YES', 'NO' o 'UNKNOWN').-EXIST=Var ('.TRUE.' o '.FALSE.').-FORM=Var ('UNFORMATTED' o 'FORMATTED).

Page 45: Curso básico de fortran

5/12/2018 Curso b sico de fortran - slidepdf.com

http://slidepdf.com/reader/full/curso-basico-de-fortran 45/46

-FORMATTED=Var ('YES', 'NO' o 'UNKNOWN').-NAME=Var*3 ('.TRUE.', '.FALSE.' o 'Nombre').-NEXTREC=N (Registro después del último accedido).-NUMBER=N (Número de Unidad igual a UNIT).-OPENED=Var ('.TRUE.' o '.FALSE.').-RECL=N (Longitud del registro).-SEQUENTIAL=Var ('YES', 'NO' o 'UNKNOWN').

-UNFORMATTED=Var ('YES', 'NO' o 'UNKNOWN').-IOSTAT=N (Código de estado).-ERR=Etiqueta (Bifurcaciones de error).-BINARY=Var*10 ('YES', 'NO' o 'UNKNOWN').-BLOKSIZE=N (Tamaño del buffer).

-Si se produce error en INQUIRE todas las variables que figuran en lasentencia queda un valor indefinido excepto la variable entera deSTATUS y las variables de los especificadores pueden ser elementos deun Array.-Otra posibilidad de INQUIRE es preguntar por el fichero con lasiguiente sintaxis:

-INQUIRE (FILE='Nombre', Lista de especificadores).

-La lista de especificadores es la misma que la anterior. Si el nombredel fichero es un identificador válido para el sistema y si el ficheroexiste se añadirán los siguientes:

-DIRECT, FORMATTED, NAME, SEQUENTIAL y UNFORMATTED.

-Si el fichero está abierto puede aplicarse:

-ACCESS, BLANK, FORM, NEXTREC, NUMBER, BELL, IOSTAT y ERR.

-La ventaja es que provee de información muy valiosa para abrir ficheroso evitar errores que abortan la ejecución de un programa.

FICHEROS INTERNOS.-Cuando el programa ejecuta READ o WRITE con un fichero o dispositivoexterno se realizan las dos operaciones conjuntamente.-En los ficheros internos la transferencia de información se produceentre dos áreas de memoria interna. Un fichero interno es un área dealmacenamiento interno.-Las entradas o salidas con ficheros internos deben ser siempreformateadas con los códigos de formato deseados por el programador.-Con los ficheros internos hay que especificar siempre los códigos de

formato en las sentencias WRITE y READ.-Para acceder a más de un registro en un fichero interno hay queejecutar una sóla vez la sentencia READ o WRITE.-Las opciones que no se permiten usar son las siguientes:

-OPEN, CLOSE, INQUIRE, REWIND, BACKSPACE y ENDFILE.

FICHEROS BINARIOS.-Es un fichero de tipo Secuencial aunque también podemos tener ficherosDirectos, pero de esta forma permite recibir o escribir más de unregistro a la vez.-No se separan los registros y se lee de la misma manera pero en elDirecto hay que poner en la opción de formato lo siguiente:

-FORM='BINARY'.

Page 46: Curso básico de fortran

5/12/2018 Curso b sico de fortran - slidepdf.com

http://slidepdf.com/reader/full/curso-basico-de-fortran 46/46

-Si tenemos las siguientes instrucciones:

-INTEGER *1 VarA (4)CHARACTER VarB (3)CHARACTER *4 VarCDATA VarA /4*7/DATA VarC /'Esto'/, VarB /'A', 'B', 'C'/

OPEN (33, FILE='FBIN', FORM='BINARY')WRITE (33) VarB, VarCWRITE (33) 'Que', 'Quieres'WRITE (33) VarACLOSE (33)

-La salida que producirá en el registro será la siguiente:

-Notar que la separación es imaginaria. Siempre en un fichero Directose han de inicializar las variables normalmente.