Docsity
Docsity

Prepara tus exámenes
Prepara tus exámenes

Prepara tus exámenes y mejora tus resultados gracias a la gran cantidad de recursos disponibles en Docsity


Consigue puntos base para descargar
Consigue puntos base para descargar

Gana puntos ayudando a otros estudiantes o consíguelos activando un Plan Premium


Orientación Universidad
Orientación Universidad


Introducción a Fortran: Formato de las líneas y tipos de datos, Apuntes de Informática

Una introducción básica al formato de las líneas y a los tipos de datos en fortran. Aprenderá sobre la etiqueta sentencia fortran, los campos de identificación, los tipos de datos como enteros, reales, complejos y caracteres, y cómo definir constantes y vectores y matrices. Además, se explicarán las operaciones aritméticas, la asignación de valores a variables y las funciones matemáticas intrínsecas.

Tipo: Apuntes

2013/2014

Subido el 24/01/2014

gutierrez93
gutierrez93 🇻🇪

4.5

(60)

383 documentos

1 / 11

Toggle sidebar

Esta página no es visible en la vista previa

¡No te pierdas las partes importantes!

bg1
FORTRAN
Formato de las líneas
1 2 3 4 5 6 7 8 ......................................................................... 72 73 74 ................. 80
Etiqueta Sentencia Fortran Campo de identific.
Las columnas 1 a 5: se reservan para la posible etiqueta identificadora de la instrucción. Una
C o un * en la columna 1 indicaría al compilador que la línea contiene
comentarios.
La columna 6: es la de continuación, si una sentencia es demasiado larga para una sola
línea, puede continuarse en la siguiente colocando cualquier símbolo
distinto de un espacio en blanco o un 0 en la columna 6.
Las columnas 7 a 72: en ellas se escribirán las sentencias.
Las columnas 73 a 80: no se usan en modo interactivo. Tenían sentido cuando se trabajaba
con tarjetas perforadas.
Tipos de datos y constantes
− INTEGER (entero. Ej: 2, +4, −6)
− REAL (real simple precisión, 8 decimales. Ej: 3.5E+6 ! 3.5x106)
− DOUBLE PRECISION (REAL*8) (16 decimales. Ej: 3.5D−6 ! 3.5x10−6)
− COMPLEX (complejo simple precisión. Ej: 2.,3.1)
Para definir una constante de tipo complejo, colocaremos dos números reales entre
paréntesis y separados por una coma. Ejemplo: S = (0.0, 2.0)
− DOUBLE COMPLEX (COMPLEX*16) (complejo doble precisión)
− CHARACTER (alfanumérico. Ej: `AF123')
− LOGICAL (lógico. Posibles valores .TRUE. y .FALSE.)
− Vectores y matrices: se declaran asignando tipo y a continuación los valores extremos de los
subíndices mediante la sentencia DIMENSION.
1
pf3
pf4
pf5
pf8
pf9
pfa

Vista previa parcial del texto

¡Descarga Introducción a Fortran: Formato de las líneas y tipos de datos y más Apuntes en PDF de Informática solo en Docsity!

FORTRAN

Formato de las líneas 1 2 3 4 5 6 7 8 ......................................................................... 72 73 74 ................. 80 Etiqueta Sentencia Fortran Campo de identific. Las columnas 1 a 5: se reservan para la posible etiqueta identificadora de la instrucción. Una C o un * en la columna 1 indicaría al compilador que la línea contiene comentarios. La columna 6: es la de continuación, si una sentencia es demasiado larga para una sola línea, puede continuarse en la siguiente colocando cualquier símbolo distinto de un espacio en blanco o un 0 en la columna 6. Las columnas 7 a 72: en ellas se escribirán las sentencias. Las columnas 73 a 80: no se usan en modo interactivo. Tenían sentido cuando se trabajaba con tarjetas perforadas. Tipos de datos y constantes − INTEGER (entero. Ej: 2, +4, −6) − REAL (real simple precisión, 8 decimales. Ej: 3.5E+6! 3.5x106) − DOUBLE PRECISION (REAL8) (16 decimales. Ej: 3.5D−6! 3.5x10−6) − COMPLEX (complejo simple precisión. Ej: 2.,3.1) Para definir una constante de tipo complejo, colocaremos dos números reales entre paréntesis y separados por una coma. Ejemplo: S = (0.0, 2.0) − DOUBLE COMPLEX (COMPLEX16) (complejo doble precisión) − CHARACTER (alfanumérico. Ej: `AF123') − LOGICAL (lógico. Posibles valores .TRUE. y .FALSE.) − Vectores y matrices: se declaran asignando tipo y a continuación los valores extremos de los subíndices mediante la sentencia DIMENSION.

Ej: REAL X,Y,Z DIMENSION X(20)! X(1), X(2), ... X(20) son reales. DIMENSION Y(−5:20)! Y(−5), Y(−4), ... Y(20) son reales. DIMENSION Z(0:10,5)! El primer índice varía de 0 a 10 y el segundo de 1 a 5. Para definir un vector o matriz del que no sabemos su dimensión: En la definición de variables: REAL nom_var [ALLOCATABLE] (: , :) (2 dimens.) Y cuando se conoce el tamaño: ALLOCATE (nom_var (dim1, dim2)) Al final del programa: DEALLOCATE (nom_var) Variables Secuencia de letras y dígitos (primero letra). La asociación de tipo a una variable se realiza: 1− Por defecto: en función de la primera letra del nombre. I, J, K, L, M, N! INTEGER Otra letra! REAL Podemos alterar la asignación implícita mediante la sentencia IMPLICIT: IMPLICIT REAL (A−C)! A, B, C reales. IMPLICIT REAL8 (X−Z)! X, Y, Z doble precisión. IMPLICIT INTEGER (D−W)! D, ..., W enteras. 2− Explícitamente: REAL8 origen, imagen CHARACTER10 nombre, calle, ciudad CHARACTER nombre10, calle20, ciudad Expresiones aritméticas 1− Operadores aritméticos: +, −, , /, ** (potencias). A−2! incorrecto (dos operadores seguidos) A*(−2)! correcto Las expresiones en las que sólo intervienen enteros dan como resultado otro número

DIMENSION X(30)

DATA X, I, nombre / 30*0.0, 20, LUIS'/! asigna el valor 0. a las 30 componentes del vector X, el valor 20 a I y el valorLUIS' a la variable nombre. PARAMETER (variable = valor, variable = valor, ...) Para definir constantes. Al asignar un valor mediante la sentencia PARAMETER, la variable no puede cambiar de valor a lo largo del programa y pueden realizar cualquier función reservada para las constantes, excepto la de etiqueta de instrucción. Funciones matemáticas intrínsecas LOG (x)! logaritmo neperiano SINH (x)! seno hiperbólico LOG10 (x)! log, en base 10 COSH (x)! coseno hiperbólico EXP (x)! exponencial TANH (x)! tangente hiperbólica SQRT (x)! raíz cuadrada MAX (x1, x2, ..)! máximo SIN (x)! seno MIN (x1, x2, ..)! mínimo COS (x)! coseno MOD (x, y)! resto de x / y TAN (x)! tangente REAL (x)! convierte x a real ABS (x)! valor absoluto CMPLX (x)! convierte x a complejo ASIN (x)! arco seno INT (x)! trunca x a entero ACOS (x)! arco coseno NINT (x)! redondea x a entero ATAN (x)! arco tangente Funciones para trabajo con cadenas Subcadenas! nombre cadena (posición inicial : posición final) para arrays nombre cadena (índice) (pos ini : pos fin) 1 " pos ini " pos final " longitud cadena Concatenación! cadena1 // cadena LEN (cadena)! número de caracteres INDEX (cadena, subcadena)! posición de comienzo de la primera comparecencia de

subcadena dentro de cadena, o 0 si la cadena no contiene a la subcadena. CHAR (I)! caracter ASCII correspondiente al número I ICHAR (caracter)! código ASCII del caracter especificado Expresiones lógicas a operador b a y b son expresiones constantes, variables numéricas o alfanuméricas. El resultado de la expresión será .TRUE. o .FALSE. Operadores relacionales: .EQ.! igual a .NE.! distinto a .GT.! mayor que .GE.! mayor o igual que .LT.! menor que .LE.! menor o igual que Operadores lógicos: .AND. .OR. .NOT. Jerarquía de operadores: Operaciones aritméticas o entre cadenas. Operadores relacionales de izquierda a derecha. Operadores lógicos (.AND. tiene prioridad sobre .OR. y entre iguales, de izquierda a derecha). SENTENCIAS DE ENTRADA Y SALIDA. Dirigida por lista o de formato libre Entrada: READ , lista de variables separadas por comas READ (,), lista de variables Ambas instrucciones son equivalentes. Al leer introducimos los valores separados por comas o por . Los valores correspondientes a variables alfanuméricas entre apóstrofos. Lectura desde teclado. READ (número canal,), lista de variables

d! número de decimales Ej: WRITE (,12) X } 12 FORMAT F6.2 } equivalente a WRITE (,'(F6.2)') X Si escribimos con estas sentencias X=12.5 quedará +12. Formato I: I w (para números enteros) w! anchura total del campo Ej: READ (5,21) J 21 FORMAT I Si en el fichero 5 aparece el número 23 en las posiciones 4 y 5, es decir: 1 2 3 4 5 6 7 8 9 .... 2 3 el número 23 al ser leído con el formato I9 se interpretará como 230000, sin embargo de haberse encontrado en las posiciones 8 y 9, se habría interpretado como 23. Formato E: E w.d (para reales en notación científica) w! anchura total del campo, incluyendo signo de la base y del exponente, punto decimal y la letra E. Al exponente se le asignan dos de estos dígitos. d! número de dígitos significativos detrás del punto decimal. Formato D: D w.d (para doble precisión en científica) El mismo razonamiento que para el formato E, pero se reservan tres dígitos para el exponente (además del signo). 2− Descriptores de posición: Formato X: nX (salta n espacios) Formato /: / (salta a la línea siguiente) Formatos T: Tn (nos sitúa en la columna n) TRn (salta n espacios hacia la derecha) TLn (salta n espacios hacia la izquierda)

3− Alfanuméricos: Formato A: A w w! longitud de la expresión alfanumérica. Si no se especifica w, el ordenador lo calcula automáticamente en función de la longitud expresada en la declaración de variables alfanuméricas. SENTENCIAS DE PROCEDIMIENTO Y CONTROL A − PROGRAM nombre! Define nombre del programa a utilizar para ejecución. STOP `mensaje'! Final de ejecución. Mensaje en pantalla opcional. END! Indicativa de final de programa o de subprograma. Se recomienda evitar que el programa llegue a ella. B − Subprogramas: SUBROUTINE nombre (lista de argumentos) nombre! Define punto de entrada a subrutina. No se le asigna valor. lista de argumentos! nombre de variables o arrays. Es opcional. FUNCTION nombre (lista de argumentos) lista de argumentos! en este caso obligatoria (al menos uno). RETURN! Devuelve control desde subprograma a programa principal. END! Indicativo de final. CALL nombre (lista de argumentos)! Llamada a subrutina. nombre! Nombre de la subrutina que debe ejecutarse. lista de argumentos! constantes, variables o arrays que coinciden en número y tipo, aunque no en nombre, con la lista de argumentos de la sentencia SUBROUTINE correspondiente. Nombre (lista de argumentos)! Llamada a función. En realidad no es una sentencia, sino que actuará como un valor del tipo definido para dicho nombre y por tanto ocupará, dentro del programa, las posiciones y tareas

RETURN

END

SENTENCIAS DE CONTROL DE FLUJO

Estructuras de selección: IF (condición o expresión lógica) THEN

... ELSE IF (condición) THEN ... ELSE IF (condición) THEN ... ELSE ... ENDIF SELECT CASE (constante, variable o expresión entera, caracter o lógica) CASE (valor1, valor2, ...) ... CASE (valor1, valor2, ...) ... CASE DEFAULT ... END SELECT Estructuras de repetición: DO (inicio, fin, paso) DO WHILE (expresión lógica) ...... ENDDO ENDDO EXIT! Para finalizar un bucle DO antes de agotar las repeticiones. Va a la línea siguiente

del END del bucle. CYCLE! No ejecuta las instrucciones siguientes dentro del bucle y vuelve al inicio del bucle. SENTENCIAS PARA EL CONTROL DE FICHEROS DE DATOS Básicamente necesitaremos ficheros de acceso secuencial para lectura de datos y almacenamiento de resultados, cuando el excesivo número de los mismos así lo aconseje. Por ejemplo en el trabajo con matrices la escritura de resultados en un fichero nos permitirá leerlos y escribirlos posteriormente con la presentación deseada. OPEN (UNIT = u, FILE =nombre.ext', ACCESS = acc, ...)! apertura. u! número de canal que se usará posteriormente para indicar la vía de acceso a los datos. acc!SEQUENTIAL' o DIRECT' Se pueden incluir otras especificaciones: STATUS = stat stat!OLD' o `NEW' ERR = sl sl! etiqueta de la sentencia a ejecutar en caso de error en la apertura del fichero. REWIND (UNIT = u)! rebobinado del fichero. Volvemos al primer registro. BACKSPACE (UNIT = u)! retrocede un registro en un fichero secuencial. CLOSE (UNIT = u, ...) NOTA: en las condiciones de un estructura IF o DO WHILE se puede utilizar la expresión lógica EOF (número de unidad), que tomará el valor cierto cuando se alcance el final del fichero. Ejemplo: DO WHILE (.NOT. EOF(8)) FORTRAN PÁGINA 8