Entrada/Salida : I/O FORTRAN 90/95 MC. Pope ITD
Entrada y Salida (I/O) Fortran proporciona dos tipos de declaraciones para entrada y salida de datos en un programa. I/O.- Por lista dirigida y lista formateada La declaración mas simple de salida dirigida tiene la forma: Print *, lista de salida Write ( *, * ) lista de salida La declaración mas simple de entrada dirigida tiene la forma : Read *, lista de entrada o Read ( *, * ) lista de entrada
I/O.- Por lista formateada. La I/O de información por lista dirigida es poco elegante y algunas veces ineficiente. Por lo tanto, es mejor trabajar con proposiciones I/O con formato dirigido, para esto en las proposiciones I/O se hace referencia a preposiciones no ejecutables Format mediante las cuales el programador puede planear y controlar como y donde visualizar los resultados, ya sea en la pantalla o en el papel dela impresora. La declaración de salida formateada mas simple es: Print formato especifico, lista de salida El formato especifico puede tener alguna de las siguientes formas 1.- * (un asterisco). Esta forma corresponde a la salida por lista dirigida P. E. Print*, x ; Print*, ‘ dame el valor de x ’ 2.- Una constante o variable cadena (Character) donde se especifica el formato de salida, o la salida se especifica mediante caracteres alfanuméricos que consiste en un descriptores de formato separados por comas y encerrados en paréntesis. Ej. Print ‘ (I3)’, N 3.- Una etiqueta que relaciona la salida con una proposición Format P.E. Print 100 Para usar la proposición Format, es necesario conocer los descriptores de edición.
Descriptores de Edición mas Usados Letra Tipo de cantidad Forma F Real Fw.d E Forma exponencial de un numero real Ew.d I Entera Iw A Carácter Aw L Lógica Lw Donde w = tamaño de campo d = posiciones a la derecha del punto decimal
Format La proposición Format es no ejecutable y especifica cómo deben estructurarse los datos. Forma general de la proposición Format nnn Format (nX, rFw.d, rEw, rIw) Donde nnn representa una etiqueta de uno a cinco dígitos y los elementos entre paréntesis (descriptores de edición) expresan la especificación del formato. La proposición Format no se representa en los diagramas de flujo. Ejemplo: 300 Format (2 F6.2, 3X, I5) Descriptor de edición I (entero) con un ancho de campo de 5 columnas Descriptor de edición X (blancos) saltar 3 columnas Descriptor de edición F (real) con un ancho de campo de 6 columnas. Los dos últimos dígitos estarán a la derecha del punto decimal Indica el número de veces que la especificación se repite Etiqueta de la proposición Format. Debe corresponder al número en la proposición Read, Print o Write
Control vertical de salida ‘ ‘ Avanza una línea antes de iniciar la salida ‘ 0 ‘ Se adelanta dos renglones antes de iniciar la salida ‘ 1 ‘ Avanza el papel a la primera línea de la siguiente pagina ‘ + ‘ Evita el avance del papel a la siguiente línea / Por cada Slash se avanza una línea o bien se inicia la lectura de un nuevo registro en un archivo
Program Entrada_Salida Implicit none Character Nombre*20 Integer :: a Logical :: Signo Real :: b, c, D, x1, x2 100 Format (2x,A20/) 101 Format (3x,'Si el valor lógico del signo & es F hay raíces reales, si es T & hay raíces complejas', L10/) 102 Format (1x, 25 ( ’ * ’ )/) 103 Format (5x,'a =',I3,5x,'b =', F7.2,5x,'c =', F7.2//) 104 Format (5x,'Raiz x1 =', F7.2,5x, Raíz x2 =',F7.2//) Print*, 'Nombre del Programador' Read*, Nombre Print*, 'Introducir a, b, c' Read*, a, b, c D = b**2 - 4*a*c Signo = D < 0 Print 101, Signo If (Signo) Stop x1 = (-b + Sqrt (D))/(2*a) x2 = (-b - Sqrt (D))/(2*a) Print 102 Print 100, Nombre Print 102 Write (*, 103) a, b, c Write (*, 104) x1, x2 End Program Entrada_Salida