SALIDAS LGICAS Descriptor L Las salidas lgicas r

  • Slides: 14
Download presentation
SALIDAS LÓGICAS Descriptor L Las salidas lógicas : r. Lw Los valores de una

SALIDAS LÓGICAS Descriptor L Las salidas lógicas : r. Lw Los valores de una variable lógica son. TRUE. o. FALSE. La salida de estas opciones son T y F, que se escriben justificadas a la derecha. Ej: LOGICAL : : salida =. TRUE. , opcion =. FALSE. WRITE(*, ”(“ “, 2 L 5)” salida, opcion IMPRESIÓN 5 10 ----|----| T F SALIDAS CHARACTER Descriptor A En general : r. A o r. Aw

r. A → el ancho del campo es igual al número de caracteres de

r. A → el ancho del campo es igual al número de caracteres de los datos r. A w → el ancho del campo es igual a w, si w es mayor que los caracteres a imprimir estos quedan justificados a la derecha. Si w es menor que los caracteres a imprimir, solo los primeros w caracteres de la variable son impresos. Ej CHARACTER(len=17) : : tex=“este es el texto” WRITE(*, 10 ) tex WRITE(*, 11 ) tex WRITE(*, 12) tex 10 FORMAT(“ “, A) 11 FORMAT(“ “, A 20) 12 FORMAT(“ “, A 6) IMPRESIÓN este es el texto este e ----|----|----|

Posicionamiento horizontal Descriptores X y T X → inserta blanco entre valores T →

Posicionamiento horizontal Descriptores X y T X → inserta blanco entre valores T → tabula a una columna En general : n. X Inserta n blancos Tc c → es el número de columna en la que se tiene que posicionar Ej CHARACTER(len=8) : : nombre = ‘José ’ CHARACTER(len=2) : : inicial = ‘J. ’ CHARACTER(len=10) : : apellido = ‘García ’ CHARACTER : : curso = ‘Climatología’ INTEGER : : anio = ‘ 2004’ WRITE(*, 100) nombre, inicial, apellido, anio, curso 100 FORMAT(1 X, A 8, 1 X, A 2, 1 X, A 10, 1 X, I 4, T 33, A 13) 5 J o s e 1 0 J. 1 5 Ga r c í a 2 0 2 5 2 0 0 4 3 0 3 5 4 0 C l i ma t o l o g í a

Observar que el curso se escribe en la columna 32 y no en la

Observar que el curso se escribe en la columna 32 y no en la 33 como indica el descriptor T. Esto sucede porque 1 X es tomado como carácter control. (en la memoria es el lugar 33 en la impresión es el lugar 32) Lo mismo imprime WRITE(*, 100) nombre, inicial, apellido, anio, curso 100 FORMAT(1 X, A 8, T 11, A 2, T 14, A 10, T 33, A 13 , T 25, I 4) En este ejemplo se salta hacia atrás. 5 J o s e 1 0 J. 1 5 2 0 Ga r c í a 2 5 3 0 2 0 0 4 3 5 4 0 C l i ma t o l o g í a ! De esta forma se puede sobreimprimir Ej WRITE(*, 100) nombre, inicial, apellido, anio, curso 100 FORMAT(1 X, A 8, T 11, A 2, T 14, A 10, T 33, A 13 , T 15, I 4) 5 J o s e 1 0 J. 1 5 G 2 0 0 4 a 2 0 2 5 3 0 3 5 4 0 C l i ma t o l o g í a

REPITIENDO GRUPOS Ej 100 FORMAT( 1 X, I 6, F 10. 2, I 6

REPITIENDO GRUPOS Ej 100 FORMAT( 1 X, I 6, F 10. 2, I 6 , F 10. 2) 100 FORMAT( 1 X, I 6, 2(I 6, F 10. 2)) 100 FORMAT( 1 X, I 6, 2(F 10. 2))) SALTANDO LÍNEAS Descriptor / / → Salta al comienzo de la línea siguiente. Varias / se usan para saltear varios renglones. No es necesario que estén separadas por comas. Ej WRITE(*, 100) indice, tiempo, profundidad, amplitud, fase 100 FORMAT(‘ 1’, T 20, ‘Resultado de la prueba número’, I 3, ///, & 1 X, ‘tiempo = ‘ , F 10. 0/, & 1 X, ‘profundidad = ‘ , F 7. 1, ‘ metros ‘, /, & 1 X, ‘amplitud = ‘, F 8. 2/ & 1 X, ‘fase =‘, F 7. 1)

Ej ! WRITE(*, 100) indice, tiempo, profundidad, amplitud, fase 100 FORMAT(‘ 1’, T 20,

Ej ! WRITE(*, 100) indice, tiempo, profundidad, amplitud, fase 100 FORMAT(‘ 1’, T 20, ‘Resultado de la prueba número’, I 3, ///, & 1 X, ‘tiempo = ‘ , F 7. 0/, & 1 X, ‘profundidad = ‘ , F 7. 1, ‘ metros ‘, /, & 1 X, ‘amplitud = ‘, F 8. 2/ & 1 X, ‘fase = ‘, F 7. 1) Notar que cada nueva línea tiene (necesita) un control de carro Resultado de la prueba numero 10 tiempo = profundidad = amplitud = fase = 300. 330. 0 metros 850. 65 30. 2

Los FORMAT en el WRITE se exploran de la siguiente manera: 1. De izquierda

Los FORMAT en el WRITE se exploran de la siguiente manera: 1. De izquierda a derecha. La primera variable se le asigna el primer descriptor, a la segunda variable el segundo y así sucesivamente. WRITE(*, 10) i, j, k, a 10 FORMAT(1 X, I 5, I 10, I 15, f 10. 2) ⇒ i → I 5, j → I 10 k → I 15 a → f 10. 2 2. Si un factor de repetición está asociado a un descriptor ese descriptor es usado el número de veces que indica el factor de repetición y luego sigue con el siguiente descriptor. WRITE(*, 10) i, j, k, a 10 FORMAT(1 X, 2 I 5, I 10, f 10. 2) ⇒ i → I 5, j → I 5 k → I 10 a → f 10. 2 3. Si un factor de repetición está asociado a un grupo de descriptores entre paréntesis ese grupo de descriptores es usado el número de veces que indica el factor de repetición y luego sigue con el siguiente descriptor o grupo de descriptores.

WRITE(*, 30) a, i, b, j, c, d 30 FORMAT(1 X, F 10. 2,

WRITE(*, 30) a, i, b, j, c, d 30 FORMAT(1 X, F 10. 2, 2(I 5, E 14. 6), f 10. 2) ⇒ a→ F 10. 2 i → I 5 b → E 14. 6 j → I 5 c → E 14. 6 d→ f 10. 2 4. La impresión para cuando el descriptor no corresponde a la variable o al fin del FORMAT, lo que ocurre primero. a) INTEGER : : m = 1 WRITE(*, 40) m 40 FORMAT(1 X, ‘ m = ‘, I 3, ‘ n = ‘, I 4, ‘ O = ‘ F 7. 2) Impresión: 5 m = 1 0 1 n 1 5 2 0 1 3. 8 k V = b) REAL : : voltaje = 13800. WRITE(*, 50) voltaje / 1000. 50 FORMAT(1 X, ‘voltaje = ‘, F 8. 1, ‘ k. V’) Impresión: 5 v o l t a j 1 0 e =

5. Cuando los descriptores del formato finalizan antes que los datos incluidos en el

5. Cuando los descriptores del formato finalizan antes que los datos incluidos en el WRITE, el programa envía la salida de la memoria a la impresora y retorna al paréntesis abierto que se encuentra a la derecha y no está precedido por un factor de repetición. a) INTEGER : : j = 1, k = 2, l = 3, m = 4, n = 5 WRITE (*, 60) j, k , l, m, n 60 FORMAT(1 X, ‘ Valor = ‘, I 3) 5 1 0 1 5 V a l o r = 1 V a l o r = 2 V a l o r = 3 V a l o r = 4 V a l o r = 5 2 0 En este caso paréntesis abierto que se encuentra a la derecha y no está precedido por un factor de repetición es el de la apertura del FORMAT

b) INTEGER : : j = 1, k = 2, l = 3, m

b) INTEGER : : j = 1, k = 2, l = 3, m = 4, n = 5 WRITE (*, 60) j, k , l, m, n 60 FORMAT(1 X, ‘ Valor = ‘, /, (1 X, ‘Nueva línea ‘, 2(3 X, I 3)) 5 1 0 1 5 2 0 V a l o r = N u e v a l Í n e a 1 2 N u e v a l Í n e a 3 4 N u e v a l í n e a 5 En este caso paréntesis abierto que se encuentra a la derecha y no está precedido por un factor de repetición es el se encuentra después de la / LECTURA CON FORMATO Los descriptores de la sentencia READ, son básicamente los de la sentencia WRITE, aunque el READ presenta algunas particularidades.

REALES Los números con punto decimal o con notación exponencial serán leídos correctamente a)

REALES Los números con punto decimal o con notación exponencial serán leídos correctamente a) READ (*, (3 F 10. 4) ) a, b, c 5 1 0 1 5 1. 5 2 0 2 5 0. 1 5 E+ 0 1 3 0 1 5. 0 E- 0 1 Los tres datos son leidos como 1. 5 Si se escribe un número decimal sin puntos entonces el punto decimal es supuesto con el número d indicado en el formato. b) READ(*, 3 F 10. 4) a, b, c 5 1 0 1 5 a → 0. 0015 b → 0. 0150 1 5 0 c → 1. 5000 2 5 1 5 0 0 0 3 0

CHARACTER (len=10) : : texto 1, texto 2 CHARACTER (len=5 ) : : texto

CHARACTER (len=10) : : texto 1, texto 2 CHARACTER (len=5 ) : : texto 3 CHARACTER (len=15) : : texto 4, texto 5 READ (*, ’(A)’) texto 1 READ (*, ’(A 10)’) texto 2 READ (*, ’(A 10)’) texto 3 READ (*, ’(A 10)’) texto 4 READ (*, ’(A)’) texto 5 5 1 0 1 5 2 0 2 5 3 0 A B C D E F GH I J K L MN O A B C D E F GH I J K L MN O texto 1 → ABCDEFGHIJ Porque el texto 1 tiene 10 caracteres en su definición. texto 2 → ABCDEFGHIJ Porque el texto 2 tiene 10 caracteres en su definición y en su descriptor texto 3 → FGHIJ Porque el texto 3 tiene 5 caracteres por definición y 10 por el descriptor. Toma 5 caracteres a la derecha de los 10 asignados.

texto 4 → ‘ABCDEFGHIJ-----’ (- → blancos) Porque el texto 4 tiene 15 caracteres

texto 4 → ‘ABCDEFGHIJ-----’ (- → blancos) Porque el texto 4 tiene 15 caracteres en su definición y en su descriptor texto 5 → ABCDEFGHIJKLMNO Porque el texto 5 tiene 15 caracteres en su definición y su descriptor es variable( según la longitud de la variable) Posición Horizontal T Se puede utilizar para leer el mismo dato de 2 maneras: CHARACTER(len=6) : : var Integer : : ientra READ (*, ‘(I 6, T 1, A 6)’) ientra, var Posición Vertical / Es una forma de no leer datos y saltar registros REAL : : a, b, c, d READ (*, 300) a, b, c, d 300 FORMAT(2 F 10. 2, //, 2 F 10. 2) 5 1 0 1 5 2 0 2 5 3 0 1. 0 2. 0 3. 0 4. 0 5. 0 6. 0 7. 0 8. 0 9. 0