Entrada y salida en FORTRAN



Documentos relacionados
LECTURA Y ESCRITURA DESDE ARCHIVOS (FILE)

Sobre la lectura y escritura de datos en FORTRAN.

Programación II. Juan Ignacio Rodríguez Hernández. Escuela Superior de Física y Matemáticas Instituto Politécnico Nacional

LEER Y ESCRIBIR ARCHIVOS O FICHEROS EN C. FOPEN, FCLOSE, MODOS DE ACCESO READ, WRITE Y APPEND (CU00536F)

E/S Formatos de Entrada y Salida en Fortran

7. Manejo de Archivos en C.

Tutorial de Introducción a la Informática Tema 0 Windows. Windows. 1. Objetivos

La ventana de Microsoft Excel

ENTORNO DE TRABAJO DE WORD 2007

TEMA 5: HOJAS DE CÁLCULO. Edición de hojas de cálculo con OpenOffice Calc

Objetivos de la práctica: - Practicar uso de ficheros: abrir, cerrar y tratamiento de información contenida en el fichero.

En cualquier caso, tampoco es demasiado importante el significado de la "B", si es que lo tiene, lo interesante realmente es el algoritmo.

A continuación, se detalla el uso de los accesorios más comunes:

ESCUELA DE ADMINISTRACIÓN

Manual Impress Impress Impress Impress Impress Draw Impress Impress

CASO PRÁCTICO DISTRIBUCIÓN DE COSTES

2.1.- EJEMPLO DE UN PROGRAMA FORTRAN

PROCESO DE SOLICITUD EN SÉNECA DE UN GRUPO DE TRABAJO.

Modulo 1 El lenguaje Java

Introducción a Microsoft Word

Para cerrar Excel, puedes utilizar cualquiera de las siguientes operaciones:

Manual de OpenOffice Impress

Práctica 0. Emulador XENON de la computadora CESIUS

Microsoft Office XP Excel XP (I)

MANUAL DE USUARIO DE SKYDRIVE

Instituto Mar de Cortés Elaborar Documentos en Procesador de Texto

Módulo 8: Ofimática básica. Unidad didáctica 4: Introducción y modificación de datos. Access

1.- MENU DE CONTROL O MENU VENTANA: permite cerrar la ventana cambiarla de tamaño y pasar a otra ventana

NORMA (SEPA) 22/11/2013

Apuntes de ACCESS. Apuntes de Access. Campos de Búsqueda:

Ficheros Electrónicos

Programación: QBASIC

Planilla de cálculo. Módulo II - OpenOffice.org Calc

6.1. Conoce la papelera

Curso Internet Básico - Aularagon

Para ingresar a la aplicación Microsoft PowerPoint 97, los pasos que se deben seguir pueden ser los siguientes:

MATERIAL 2 EXCEL 2007

GENERAR DOCUMENTOS HTML USANDO LENGUAJE PHP. EJERCICIO RESUELTO EJEMPLO SENCILLO. (CU00733B)

Sea el siguiente programa de nombre "c0p1" para copiar archivos (por simplicidad se ha eliminado todo control de errores): Se pide:

promedio = nint((notas(1) + notas(2) + notas(3) + & notas(4) + notas(5) + notas(6)) / 6.0) print *, 'Su promedio es', promedio

PRÁCTICA C INTRODUCCIÓN AL PAQUETE COMPUTACIONAL ELECTRONICS WORKBENCH 4.0

Recursos de Aprendizaje

Índice general de materias LECCIÓN 7 74

MANEJANDO FICHEROS Y CARPETAS

EDWIN KÄMMERER ORCASITA INGENIERO ELECTRÓNICO

INSTRUCTIVO DEL COMANDO MAKE

Sistemas de ficheros en Servidores de Información multimedia

Para crear formularios se utiliza la barra de herramientas Formulario, que se activa a través del comando Ver barra de herramientas.

Operación de Microsoft Word

Base de datos en Access

!!!!!!!! !!!!! Práctica!4.! Programación!básica!en!C.! ! Grado!en!Ingeniería!!en!Electrónica!y!Automática!Industrial! ! Curso!2015H2016!

UNIDAD 5. ESTRUCTURAS DINÁMICAS Y ESTÁTICAS DE ALMACENAMIENTO DE DATOS.

CONCEPTOS BASICOS. Febrero 2003 Página - 1/10

Módulo II - Word. Eliminar caracteres Selección de texto Selección de una palabra Selección de varias palabras...

PROYECTO EDUCATIVO LA CALERA

Importador Universal - Operaciones

Para ingresar a la aplicación Microsoft Word 97, los pasos que se deben seguir pueden ser los siguientes:

Dependiendo de la utilización, forma y resultado deseado, Word propone diferentes columnas:

ZCARTAS: Iniciación a la suma y resta de números enteros Introducción Actividad 1: Escenario con cartas numeradas desde -2 hasta 2...

LABORATORIO Nº 2 GUÍA PARA REALIZAR FORMULAS EN EXCEL

EMPLEO NTIC`S II SEGUNDO SEMESTRE

PRÁCTICAS DE OPENOFFICE CALC

10 En este caso indica la dirección GPIB del instrumento.

Usando el editor de texto vi

Reservas - Rooming List

Capítulo 8 Ficheros de Configuración

6-REGISTROS DEL 8086 Y DEL 80286

Este programa mueve cada motor de forma independiente, y cuando termina una línea pasa a la siguiente.

Microsoft Excel Unidad 6. La Hoja de Cálculo

NOVEDADES Y MEJORAS. datahotel versión 9.00 TRABAJAR CON I.V.A INCLUIDO

Manual de usuario para Android de la aplicación PORTAFIRMAS MÓVIL

APUNTES DE WINDOWS. Windows y sus Elementos INSTITUTO DE CAPACITACIÓN PROFESIONAL. Elementos de Windows

CLASE No. 4 MANEJO DE DOCUMENTOS

En esta unidad añadiremos información sobre EXT3 y trabajaremos con aspectos visibles que nos proporcionan estos sistemas de archivos.

USO DEL COMANDO. Fdisk. Autor :. Alejandro Curquejo. Recopilación :. Agustí Guiu i Ribera. Versión :.. 1.0

1. La nueva interfaz del programa

Curso PHP Módulo 1 R-Luis

Clase Nº 9 OPERADOR PC. P á g i n a 1 HOJA DE CALCULO MICROSOFT EXCEL

Tablas internas 1-12

Impress : Programa de presentaciones de OpenOffice.

Soporte lógico de computadoras

Tema 8: Tratamiento de datos. Ficheros

Manual para el uso del Correo Electrónico Institucional Via Webmail

Asistente Liberador de Espacio. Manual de Usuario

Contenidos. Archivos en C++ Archivos en C++ Introducción

Manual de usuario. Modulo Configurador V.1.0.1

INFORMÁTICA. Práctica 5. Programación en C. Grado en Ingeniería en Electrónica y Automática Industrial. Curso v1.0 (05.03.

DIAGRAMA DE CLASES EN UML

Tablas dinámicas. Tablas dinámicas

Sesión 3 - Movimiento Diferencial

GUÍA RÁPIDA DE TRABAJOS CON ARCHIVOS.

VAST: Manual de usuario. Autores: Francisco J. Almeida-Martínez Jaime Urquiza-Fuentes

Instructivo de Microsoft Excel 2003

para compras de menor cuantía La aplicación TeCuento se renueva para las compras menores

generar columnas de texto y números disponer texto en columnas paralelas (para traducciones por ejemplo) situar imágenes junto a textos.

Guía para realizar trabajos universitarios

COMANDOS EN LENGUAJE DE PROGRAMACIÓN BASIC

Teclado sobre una PDA para Personas con Parálisis Cerebral

Navegación en SAP ECC. Junio 2012

Bienvenido al sistema de Curriculum Digital CVDigital

Transcripción:

Entrada y salida en FORTRAN I/O desde/a un dispositivo (teclado, fichero, impresora, disco,...) Dos maneras: entrada/salida dirigida por lista. En este caso, el formato de los datos depende de sus tipos (enteros, reales, etc.) y del computador. Se dice que es una entrada/salida con formato libre. entrada/salida con formato. El programador define la manera exacta en que quiere leer/escribir los datos. lectura: sentencia READ escriture: sentencia WRITE (PRINT obsoleta...)

Salida por pantalla WRITE (*,*) lista de variables o expresiones El primer asterisco se refiere al dispositivo de salida estándar (generalmente, la pantalla) y el segundo asterisco se refiere al formato libre con que se mostrarán los elementos de la lista. La sintaxis general de una salida por pantalla con formatos es: WRITE (*, formato) lista de variables o expresiones El formato puede ser un * (salida dirigida por lista) o una expresión carácter, variable o constante, que contiene los descriptores de formato de la lista, o la etiqueta de una sentencia FORMAT, es decir, un entero entre 1 y 99999. En este último caso, debe existir además una sentencia de la forma: etiqueta FORMAT (lista de descriptores de formato)

Ejemplos de salida por pantalla

READ (*,*) lista de variables Entrada por teclado El primer asterisco se refiere al dispositivo de entrada estándar (generalmente, el teclado) y el segundo asterisco se refiere al formato libre con que se leerán las variables de la lista. READ (*, formato) lista de variables El formato tiene el mismo significado ya comentado.

Descriptores de formato Hay 4 categorías básicas de descriptores de formato, los que: Describen la posición vertical de la línea de texto. Describen la posición horizontal de los datos en una línea. Describen el formato de entrada/salida de un valor particular. Controlan la repetición de porciones de formatos. FORMAT(3I7, F5.2, A20,...) Símbolo c d m n r w Significado Número de columnas Núm. de dígitos a la derecha del punto decimal Mínimo número de dígitos Número de espacios saltados Núm. de repeticiones de un grupo de descriptores Número de caracteres o dígitos

Descriptor I de formato de número entero Sintaxis general para salida de datos enteros: [r]iw[.m] El valor se ajusta a la derecha del campo. Si el valor es demasiado grande para mostrarse con w dígitos, se muestran w asteriscos. Sintaxis general para entrada de datos enteros: [r]iw El valor puede estar en cualquier posición dentro del campo especificado. Ejemplos de salida: Descriptor Valor interno Salida I4 452 452 I2 6234 ** I5-52 -52 I4.3 3 003 I2.0 0 Ejemplos de entrada: Descriptor Campo entrada Leído I4 1 1 I2-1 -1 I4-123 -123 I3 12 12 I2 123 12

Descriptor F de formato de número real Sintaxis general para entrada/salida de datos reales: Para salida, el valor se ajusta a la derecha del campo. [r]fw.d Si d es menor que el número de dígitos decimales del número, el valor se redondea. Si d es mayor que el número de dígitos decimales del número, se añaden ceros hasta completarlo. Si el valor es demasiado grande para leerse/escribirse con w caracteres, el campo w se llena de asteriscos. Para evitar malas interpretaciones, es conveniente incluir siempre un punto decimal en cualquier valor real usado en una sentencia de lectura con formato. Ejemplos de salida: Descriptor Valor interno Salida F9.3 25.338 25.338 F5.1 0.35247 0.4 F6.2 0.089235 0.09 F8.3 732.56 732.560 F4.3-12.345 **** Ejemplos de entrada: Descriptor Campo entrada Leído F6.3 49.225 49.225 F6.2 49.225 49.23 F7.1-1525.1-1525.1

Descriptor E de formato exponencial Sintaxis general para entrada/salida exponencial es: [r]ew.d de datos reales con formato Si un número se quiere leer/escribir en formato exponencial con d cifras decimales, la anchura de campo mínima ha de ser w d+7, pues tal número se representa ±0.ddddE±ee Ejemplos de salida: Descriptor Valor interno Salida E8.2 83.456 0.83E+02 E7.2 83.456 ******* E10.3 8.3974 0.840E+01 E10.4 0.83E+2 0.8300E+02 Ejemplos de entrada: Descriptor Campo entrada Leído E11.2 43.258E+03 0.43E+05 E11.5 43.258E+03 0.43258E+05 E11.3 0.43E-02 0.430E-02

Descriptor ES de formato científico Sintaxis general para entrada/salida científico es: [r]esw.d de datos reales con formato Si un número se quiere leer/escribir en formato científico con d cifras decimales, la anchura de campo mínima w d+8, pues tal número se representa ±d.ddddes±ee Ejemplos de salida: Descriptor Valor interno Salida ES8.2 83.456 8.35ES+01 ES7.2 83.456 ******* ES10.3 8.3974 8.397ES+00 ES11.4 0.83E+2 8.3000ES+02 Ejemplos de entrada: Descriptor Campo entrada Leído ES11.2 43.258E+03 4.33ES+04 ES11.5 43.258E+03 4.32580E+04 ES11.3 0.43E-02 4.300E-03

Descriptor L de formato lógico Sintaxis general para entrada/salida de datos lógicos es: [r]lw La salida de un dato lógico es T o F y su valor se ajusta a la derecha del campo. La entrada de un dato lógico se usa muy raramente pero puede ser T o F como primer carácter no blanco situado en cualquier posición dentro de la anchura de campo dada. Ejemplos de salida: Descriptor Valor interno Salida L5.FALSE. F L4.TRUE. T L1.TRUE. T L2.FALSE. F Ejemplos de entrada: Descriptor Campo entrada Leído L5 T.TRUE. L2 F1.FALSE. L4 X T ERROR

Descriptor A de formato carácter Sintaxis general para entrada/salida de datos carácter es: [r]a[w] Si w no aparece, el descriptor A lee/escribe el dato carácter en una anchura igual a la longitud de la variable carácter. Si w aparece, el descriptor A lee/escribe el dato carácter en una anchura fija w. Si w>longitud de la variable carácter, para salida, la cadena se ajusta a la derecha del campo y, para entrada, el dato del fragmento derecho del campo se lee en la variable carácter. Si w<longitud de la variable carácter, para salida, sólo se escriben los primeros w caracteres de la cadena y, para entrada, sólo los primeros w caracteres de la cadena se ajustan a la izquierda de la variable carácter y el resto se llena con blancos. Ejemplos de salida: Descr Valor interno Long. de Salida variable A ABCDEF 6 ABCDEF A8 ABCDEF 6 ABCDEF A4 ABCDEF 6 ABCD Ejemplos de entrada: Descr Campo entrada Long. de variable Valor leído A ABCDEFGH 6 ABCDEF A ABCDEFGH 8 ABCDEFGH A8 ABCDEFGH 4 EFGH A4 ABCDEFGH 6 ABCD

Descriptores de posición horizontal y vertical Los descriptores X y T se usan para controlar el espacio horizontal y el descriptor slash / para controlar el espacio vertical. La sintaxis general de cada uno de ellos es: nx Para salida: suele emplearse para espaciar los datos. El descriptor nx salta n espacios en la línea actual. Para entrada: puede emplearse para saltar por encima de campos de entrada que no se quieren leer en la línea actual. Tc Salta directamente a la columna número c de la línea actual, puede saltar hacia derecha o izquierda. Para salida suele emplearse para espaciar los datos. Para entrada puede usarse para saltar por encima de campos de entrada que no se quieren leer o para leer varias veces unos datos. /[/][ ] Es un descriptor especial que no necesita separarse de los demás descriptores por comas, si bien puede hacerse. Para salida, con un slash se empieza una nueva. Así, una sentencia WRITE puede escribir los valores de salida separados en dos líneas. Si hay varios slashes juntos, se saltan varias líneas. Para entrada, un slash ignora la línea actual y comienza a procesar la siguiente línea.

Control de salto de línea $ suprime el cambio de línea Sólo salida a pantalla Ejemplo: WRITE(*,2) 2 FORMAT( Enter the node number:, $) READ(*,*) nudenum END >Enter the node number: 45

Ejemplos INTEGER:: numero1=345, numero2=678 REAL:: a=7.5, b=0.182 WRITE(*, (1X,T30,A) ) RESULTADOS WRITE(*, (1X,I3,2X,I3) ) numero1, numero2 WRITE(*, (1X, 2I4, F6.3/,1X,F6.3) numero1, numero2, a, b Las salidas generadas son: RESULTADOS 345 678 INTEGER:: a,b,c,d 345 678 7.500 READ (*,30) a,b,c,d 0.182 30 FORMAT (2I2,//, 2I2) Si los datos de entrada son: 1 2 3 4 5 6 7 8 9 Se leen a, b, c, d con los valores 1, 2, 7 y 8, respectivamente.

Repetición de grupos de descriptores Para repetir un grupo de descriptores de formato hay que encerrar tal grupo entre paréntesis y colocar un factor de repetición a la izquierda del mismo. Ejemplo: 30 FORMAT (1X, I4, F9.2, I4, F9.2, I4) 30 FORMAT (1X, I4, 2(F9.2, I4)) Ejemplo en http://venus.ifca.unican.es/~gserrano/pec: formatos.f90 FORMAT.pdf

Procesamiento de archivos (1) Las aplicaciones que manejan grandes cantidades de datos, es conveniente los almacenen en algún archivo en disco o algún otro dispositivo de memoria auxiliar. Para que Fortran pueda usar un archivo, debe abrirlo, asignándole una unidad. La sintaxis general para abrir un archivo es: OPEN (lista_open) donde lista_open puede incluir dos o más cláusulas separadas por comas, colocadas en cualquier orden. Las más importantes son: [UNIT= ]unidad es un número entero comprendido entre 1 y 99 que identifica al archivo. FILE = archivo es una expresión carácter que indica el nombre del archivo que se quiere abrir. [STATUS = estado_del_archivo] es una de las siguientes constantes carácter: OLD NEW REPLACE SCRATCH UNKNOWN (opción por defecto) La opción SCRATCH crea un archivo temporal que se destruye automáticamente cuando se cierra el archivo o cuando acaba la ejecución del programa. Se suele usar para guardar resultados intermedios durante la ejecución de un programa. Estos archivos no pueden tener nombre. La opción UNKNOWN implica, si existe el archivo antes de ejecutar el programa, que lo reemplaza, y si no existe, lo crea en tiempo de ejecución y lo abre.

[ACTION = accion] Procesamiento de archivos (2) es una de las siguientes constantes carácter: READ WRITE READWRITE (opción por defecto) es una variable entera que da el estado de [IOSTAT = estado_de_apertura] la operación de apertura de archivo. Aunque es una cláusula opcional, se aconseja usarla para evitar abortar un programa cuando se produce un error de apertura. Si el valor de la variable es cero, significa apertura correcta del archivo y si es un número positivo, significa que se ha producido un error al abrir el archivo. [ACCESS = acceso] es una de las siguientes constantes carácter: SEQUENTIAL (opción por defecto) DIRECT Los archivos permiten acceso directo, es decir, saltar de una línea (también llamada registro) a cualquier otra, independientemente de su situación en el archivo. Sin embargo, por razones históricas, la técnica de acceso por defecto en Fortran es secuencial, es decir, que el acceso a los registros se realiza en orden consecutivo, desde el primer registro hasta el último.

[POSITION = posicion] REWIND Procesamiento de archivos (3) ASIS (opción por defecto) Si la posición es: REWIND, el puntero de archivo se coloca en el primer registro. ASIS, el puntero de archivo se coloca en un registro dependiente del procesador. APPEND, el puntero de archivo se coloca después del último registro justo antes de la marca de fin de archivo. Ejemplos de apertura de ficheros para lectura y escritura APPEND La asociación unidad-archivo que estableció OPEN se termina con la sentencia: CLOSE (lista_close) lista_close puede incluir varias cláusulas separadas por comas, sólo el número de unidad es obligatoria: [UNIT= ]unidad Ejemplo de cierre del fichero asociado a la unidad 12

Posición en un fichero Fortran proporciona dos sentencias para ayudar a moverse en un archivo secuencial. La sintaxis general es: REWIND unidad para reposicionar un archivo al principio y BACKSPACE unidad para reposicionar un archivo al principio de la línea o registro anterior. Si el archivo está en su posición inicial, las dos sentencias anteriores no tienen efecto. Ejemplos

Escritura en un fichero La sentencia WRITE permite escribir datos en cualquier dispositivo de salida, como los archivos. La sintaxis general de salida por archivo es: WRITE ([UNIT =] unidad, formato[,iostat = err_escritura][, ]) lista_de_variables Aunque esta sentencia puede incluir varias cláusulas, a continuación se estudian las tres más importantes, de las cuales sólo las dos primeras son obligatorias. unidad : número de la unidad de salida (abierta con OPEN) formato: formato salida= *, una expresión carácter, variable o constante, o la etiqueta de una sentencia FORMAT, es decir, un entero entre 1 y 99999. En este caso, debe existir la correspondiente sentencia de especificación: etiqueta FORMAT (lista de descriptores de formato) err_escritura, indica el éxito o no de la operación de escritura. cero, significa éxito en la operación de escritura, positivo, significa que se ha producido un error en la escritura. Ejemplos

Lectura desde un fichero La sentencia READ estándar permite leer datos de cualquier dispositivo de entrada, como los archivos. La sintaxis general de entrada por archivo es: READ ([UNIT =] unidad, formato[,iostat = err_lectura][, ]) lista_de_variables Aunque esta sentencia puede incluir varias cláusulas, a continuación se estudian las tres más importantes, de las cuales sólo las dos primeras son obligatorias. unidad: número de la unidad de entrada (abierta con OPEN) formato: igual que en WRITE etiqueta FORMAT (lista de descriptores de formato) err_escritura, indica el éxito o no de la operación de lectura. cero, significa éxito en la lectura, positivo, significa error en la escritura. negaitivo, significa fin de fichero. Ejemplo

Ejemplo de acceso a fichero El nombre del fichero es variable. Para darlo hay que escribirlo con la extensión.txt. Este fichero debe estar en la misma carpeta que el programa.

Resuelto 1 1.- Escribir una tabla de raíces cuadradas y cúbicas de todos los números naturales desde 1 hasta 20.

2.- Escribir por pantalla algunas constantes y variables enteras, reales y carácter con distintos formatos. Resuelto 2

Resuelto 3 3.- Leer de un archivo con nombre cap7_3in.txt los nombres y las notas de todos los alumnos de una clase. Crear en la misma carpeta un archivo con nombre cap7_3out.txt y escribir en él los nombres de los alumnos y su clase según sus notas, de acuerdo con la siguiente clasificación: Clase Nota 1 [8.5,10] 2 [5,8.5) 3 [0,5) El archivo cap7_3in.txt debe existir en el mismo directorio donde se guarda el programa, antes de ejecutarlo.

Resuelto 4 4.- Leer de un archivo de datos en tres columnas sin conocer el número de datos. Escribir datos en un fichero de salida. PROGRAM leefile IMPLICIT NONE CHARACTER*64 :: filein, fileout REAL :: x,y,z INTEGER :: status,n, ierr REAL :: value! pregunta y lee los nombres de los ficheros: WRITE(*,*) 'Fichero entrada: ' READ(*,'(A)') filein WRITE(*,*) 'Fichero salida: ' READ(*,'(A)') fileout!abre los ficheros, uno de entrada y otro de salida OPEN(1,FILE=filein, STATUS='OLD', IOSTAT=status) IF(status.NE.0) THEN WRITE(*,*) 'ERROR ABRIENDO FICHERO', filein STOP END IF... 990.5 5.139 0.371 991.5 5.411 0.352 992.5 4.741 0.349 993.5 5.187 0.358 994.5 4.996 0.265 995.5 4.957 0.351 996.5 4.713 0.286 997.5 4.629 0.338 998.5 4.660 0.347 999.5 4.134 0.347 1000.5 4.742 0.305 1001.5 3.958 0.304 1002.5 4.303 0.355... OPEN(2,FILE=fileout,STATUS='NEW')!lee los datos del fichero de entrada, con el formato del fichero: 100 FORMAT(F6.1,1X,F6.3,1X,F6.3)!formato entrada 110 FORMAT(F6.1,1X,F8.2)!formato salida 120 FORMAT(A,1X,I4,1X,A)!formato final programa

!como no sabemos cuantos datos hay hacemos un bucle n=0!contador de datos DO READ(1,100,IOSTAT=ierr) x,y,z!ierr negativo = fin de fichero IF(ierr.LT.0) EXIT!sale del DO n=n+1!incrementa el cotador de datos leidos value=x*y*z!calcula algo WRITE(2,110) x,value!lo escribe al fichero de salida END DO!termina la lectura y los calculos WRITE(*,120) 'Terminado.',n,'datos leidos.'!cierra ficheros CLOSE(1) CLOSE(2) END PROGRAM leefile Ejemplo en http://venus.ifca.unican.es/~gserrano/pec leefile.f90 datos.dat