Curso de Fortran - Entradas y salidas con formatos

4 - Entradas y salidas con formatos

[editar]
Curso gratis creado por Anónimo.
04 de Noviembre de 2005
INSTRUCCION CON FORMATO DE ENTRADA. SENTENCIA "READ"

-Este tipo de instrucciones no es muy potente porque sólo est n pensadas
 para introducir y sacar datos. La unidad est ndar en el teclado est 
 denominado como un asterisco (*).

-La lectura mediante la instrucción READ se realiza con la siguiente
 sintaxis:

-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 que
 puede ser uno de los siguientes:
-Constante entera (Que referencia otra sentencia).
 -Variable car cter.
 -Array de caracteres.
 -Expresión car cter (Entre par‚ntesis y apóstrofes).
 -Variable entera (Con una etiqueta FORMAT).

-Dentro de la lista de descriptores podemos encontrarnos las siguientes
 opciones:

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

- UNIT=  Entero.

-Formato, en el que podr n colocarse los siguientes par metros:

-Etiqueta, asignada a la sentencia especial que ser  FORMAT.
  -Variable, entera a la que previamente se le halla asignado
   una Etiqueta v lida.
  -Expresión, de tipo cadena que contenga los códigos de los
   formateos entre par‚ntesis que estar n cerrados entre unas
   comillas.
  -Variable o array, de caracteres a los cuales se le hallan
   asignado 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úmero
  relativo al registro siendo su estructura o sintaxis:

-REC=Número registro.

-Código chequeador, de la operación al cual deposita el resultado
  de 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 y
  que contiene la siguiente sintaxis:

-ERR=Etiqueta.

-Si se admiten UNIT y FMT, sus correspondientes valores deber n estar
 en el primer y segundo lugar de la instrucción READ respectivamente.
Los dos primeros formatos se han de usar obligatoriamente, mientras que
 los otros par metros sólo se usar n para ficheros externos. Un ejemplo
 de 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 por
 el usuario con la combinación CTRL+Z.

INSTRUCCION CON FORMATO DE SALIDA. SENTENCIA "WRITE"

-Para este tipo de instrucciones nos encontramos dos formatos que est n
 diferenciados:

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

-El primer formato siempre se utilizar  cuando el dispositivo de salida
 est‚ predefinido por el sistema, mientras que el segundo formato se
 usar  para una salida a una unidad espec¡fica.

-La lista de descriptores que se podr  usar ser n los mismos que en la
 instrucción READ. UNIT y FMT podr n no figurar si se pone primero el
 nú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 un
 reconocimiento 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 podr 
 referenciar tambi‚n con una variable entera a la cual se ha asignado
 una etiqueta con ASSIGN.

-La lista de códigos puede estar vac¡a si la lista de sentencias de E/S
 est  vac¡a con un salto de l¡nea.

-Esta sentencia no es ejecutable, puede escribirse en cualquier parte y
 conviene agruparlas todas al principio o al final del programa.

-La Lista de código de formato podr  contener uno o varios de los
 siguientes tipos:

-Códigos num‚ricos o de datos (Repetibles) entre los cuales
   tenemos:

-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 cuales
  tenemos:

-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 num‚ricos siempre hay que diferenciar tres
 partes 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 num‚ricos 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ón
  decimal 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 la
 sintaxis:

-Iw.

-Transfiere datos enteros desde el soporte externo a variables, tantos
 caracteres como valor tenga w contando d¡gitos, blancos y signos y
 asocia 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 soporte
 externo con un valor w de ancho ajust ndose a la derecha y si es
 negativo se coloca un signo delante del d¡gito m s significativo.

-Si el número de caracteres es mayor que el ancho de salida el campo de
 salida se llena de asteriscos.

-Si se utiliza un coeficiente de repetición n deber  ser una constante
 entera sin signo mayor que cero con la sintaxis:

-nIw.

-Si se quiere indicar el número m¡nimo de d¡gitos que aparecer n en la
 salida 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 que
 se deber  aumentar el formato en una unidad.

-Si en la salida se colocan menos d¡gitos que en el formato indicado
 se suprimir n 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 car cter del código, w ser  la longitud total
 del campo incluyendo los blancos, signos, puntos y d¡gitos, y d ser 
 el número de decimales de la parte real.
Si no se introduce un punto decimal se sitúan los decimales de forma
 autom tica. El código F permite ser un código repetible con lo que su
 sintaxis ser  la siguiente:
-nFw.d.

-Se pueden introducir números reales en notación exponencial, siendo el
 exponente que sigue al número real de dos formas:

-Constante entera con signo + o -.

-Car cter E o D seguido de un signo y una constante entera.

-Los caracteres de las variables reales se ajustan a la derecha del
 campo de anchura. El punto decimal se genera con d posiciones a la
 derecha.
En la salida no se producen ceros a la izquierda a no ser que la
 mantisa sea menor que uno, con lo que habr  un cero a la izquierda del
 punto decimal.
Si la parte fraccionaria tiene m s anchura que d habr  un redondeo del
 valor antes de ajustarse y si el dato no cabe en w se producir  una
 salida de w asteriscos.
Entre los ejemplos que se pueden citar para este formato estar n:
CODIGO NUMERICO "E"

-Este formato lee o escribe datos reales en simple o doble precisión en
 notación exponencial. E es el código del exponente, w el ancho del
 campo 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 decimal
 el punto decimal de la mantisa y el exponente que tendr  tres d¡gitos
 de forma que la representación ser  del tipo:

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

-Si el punto no figura en la entrada, la parte decimal ser n los d
 d¡gitos m s a la derecha de la mantisa. Si aparece el punto decimal
 en 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 punto
 decimal en la entrada.

-Para la salida han de reservarse una posición para el punto decimal y 
 el d¡gito cero que precede al punto decimal si hay posición para ‚l. Si
 la 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 las
 posiciones para la salida se muestran asteriscos.
-En Función del desplazamiento del punto decimal se calcula el exponente
 y la mantisa se puede redondear, pudi‚ndose omitir el cero antecedente
 al 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 de
 d¡gitos del exponente ser¡a:

-Ew.dEe.

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


CODIGO NUMERICO "D"

-Describe números reales en simple o doble precisión en forma
 exponencial 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 el
 código E. Normalmente se utiliza este código para enfatizar que el
 número que se trata es de doble precisión.
El exponente para la salida cambia la letra E por la letra D y tiene
 la siguiente sintaxis:
-D(+/-)nn.

-Este código num‚rico es repetible siendo su sintaxis:

-nDw.d.

CODIGO NUMERICO "G"

-Se utiliza este código para entrada y salida de datos de simple y doble
 precisión siendo sus sintaxis m s generales las siguientes:

-Gw.d.
 -Gw.dEe.

-La entrada de datos reales tiene el mismo significado que los códigos
 F, E y D.

-En la salida actúa como formato F cuando el valor de salida est  en el
 rango entre 0.1 y 10d, mientras que actúa como formato E cuando el
 número es m s peque¤o de 0.1 o mayor que 10
d.

-Si actúa como formato F entonces los últimos cuatro caracteres ser n
 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 cuando
 el formato es distinto, habr  disyunción entre el formato del teclado
 y el establecido en el programa.

-Siempre se da prioridad al formato introducido por teclado.
Entre los ejemplos que se pueden citar para este formato estar n:

CODIGO DE DATOS "P"

-Es un factor de escala y sirve para ver los valores exponenciales con
 un entero delante del punto decimal, aplicable sólamente a los códigos
 F, 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 valor
 externo carece de exponente con lo que se expresar  mediante la
 relación:

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

-El factor de escala afecta a los códigos de formato que aparecen a
 continuación hasta encontrar otro factor de escala.
Cuando se usa para el código F en la salida se produce desplazamiento
 del 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 desplaza
 el punto de la mantisa al hacer el producto por 10n, y el exponente
 se 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, VarC
  WRITE (*, '(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 ancho
 del campo y siendo su sintaxis la siguiente:

-Lw.

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

CODIGO DE DATOS "A"

-Este código transfiere datos de tipo car cter de la memoria al soporte
 externo y a la inversa, permitiendo el manejo, entrada y salida de
 cualquier variable de tipo car cter, siendo su sintaxis:

-Aw.

-Tambi‚n tiene formato repetible siendo su sintaxis:

-nAw.

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

-Si w=n todo el dato es asignado a la variable car cter.
 -Si w>n los últimos n caracteres se almacenan en la variable.
 -Si w<n los caracteres se ajustan a la izquierda rellen ndose los
  n-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-n
  primeros caracteres se rellenan a blancos.
 -Si w<n los w primeros caracteres de la cadena salen a la salida
  perdi‚ndose los restantes.

CODIGO DE POSICIONAMIENTO "X"

-Los códigos de posicionamiento determinan la posición dentro de una
 l¡nea. La posición puede ser relativa a la actual del cursor o una
 posición absoluta.
El código X salta n caracteres tanto para la salida como para la
 entrada en el medio externo siendo su sintaxis:
-nX.

-La opción n indica los caracteres a saltar a partir de la posición
 actual del cursor.
Para la entrada salta n posiciones hacia adelante desde la posición
 del cursor. Para la salida en la l¡nea o registro de salida genera n
 blancos 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 especifica
 una posición absoluta dentro del registro de entrada o salida siendo
 su sintaxis:

-Tc.

-La opción c indica la columna dentro del registro desde donde se va a
 posicionar el cursor y donde comienzan las transferencias de datos.
El tabulador Tl mueve la posición del cursor hacia la izquierda y Tr
 mueve la posición del cursor hacia la derecha con las siguientes
 sintaxis:
-Tls.
 -Trs.

-La opción s indica el número de posiciones que se han de desplazar el
 cursor 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*8
  INTEGER 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 an logo, si tenemos las siguientes instrucciones:

-100 FORMAT (T8, I5, Tl2, I4, Tl6, A6)
  CHARACTER *8 Cadena
  INTEGER VarA, VarB
  READ (*, 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 un
 registro 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 car cter
 de un nuevo registro.

-En la salida causa n-1 registros o l¡neas vac¡as y no es un código de
 tipo repetible.

CODIGOS ESPECIALES "S", "Sp" Y "Ss"

-Estos códigos sólo son v lidos para formatos de salida, para números
 y 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 especificadores
 de formato o hasta un código S o Ss.

-Estos códigos no son repetibles.

CODIGOS ESPECIALES "Bn" Y "Bz"

-Estos códigos dirigen la interpretación de los caracteres en blanco
 en los formatos num‚ricos 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 es
 v lido para entradas, siendo su sintaxis:

-wHc.

-Este código indica que habr  una salida de w caracteres que son los
 que van a aparecer en c. Los apóstrofes se consideran como cualquier
 otro car cter.

-El número de caracteres de la constante car cter determina el ancho del
 campo de salida.

CODIGO ESPECIAL ":"

-Este código provoca la terminación de la operación de salida si no hay
 m s elementos en la lista de la sentencia de salida.

-Si el código es encontrado durante una entrada de datos o si quedan
 elementos en la lista de salida es ignorado.

CODIGO ESPECIAL " "

-Este código facilita formatear la salida de datos en la pantalla. Este
 có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 car cter dentro de la
 sentencia WRITE que emplea la impresora como salida siendo sus códigos
 los siguientes:

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

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

REGISTROS MULTIPLES

-Si el número de elementos de la lista de entrada y salida es menor que
 el 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 formato
 se van asociando los códigos de datos con los datos de izquierda a
 derecha.

-Cuando se alcanza el par‚ntesis de cierre de FORMAT se empieza un nuevo
 registro repiti‚ndose los códigos a partir del par‚ntesis de apertura
 precedente.
[editar]

16 opiniones

ayuda por favor

necesito que me ayuden hacer un programa en fortran mi correo es angelicamacdonald@hotmail.com podras gracias
q desconformidad muchachos eh!!!

mira yo te digo, taba pintado y necesitaba usar fortran y esto me viene dando tremenda mano...los que anden volando que aranquen a quejarse a otro lado
q pendejos los q lean esto

no explik nada acerca de los ciclos y la secuencia logica que lleva un programa medio te dicen pero no esta nada completo
malo

en verdad no tiene mucha informacion no le hagan al buey
les faltan ejemplos

, y decir en que posición del programa declaras los complejos
1 2 3 4 | siguiente >

Cursos gratis relacionados con 'Curso de Fortran'

Completo curso de lenguaje ensamblador. El lenguaje Fortran tiene unos números y signos que utiliza... Más »
El objetivo de este curso es aprender a programar en el lenguaje Ada, desde sus... Más »
Un sistema informático utiliza ordenadores para almacenar datos, procesarlos y ponerlos a disposición de quien... Más »
Aprende a programar en Visual Basic, de forma rapida y sencilla, con tan solo 20... Más »
Mediante este pequeño pero abartcador curso ud. Podra conocer mejor las actualizaciones del C#. NET... Más »

Autor y licencia de 'Curso de Fortran'


Curso gratis de Anónimo. Extraido de: CopyLeft
Este contenido ha sido recopilado por el equipo de Wikilearning. Todo el contenido recopilado se ha obtenido respetando y comunicando en nuestro site la licencia de cada fuente.
Wikilearning tiene permiso expreso por escrito de los autores para publicar los contenidos que ha extraído de otras webs, incluyendo su uso comercial.