SALIDAS LGICAS Descriptor L Las salidas lgicas r
- Slides: 14
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 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 → 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 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 , 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, ‘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 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, 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 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 = 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) 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 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 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
- 3 salidas de don quijote
- Deployment descriptor
- Rgeister
- Segmentation bases and descriptors
- Irq table
- The 80386 supports following descriptor tables
- Lenguajes descriptores de arquitectura
- Virtual address descriptor
- Sol001
- The effective privilege level is
- Cpt surgical package
- Common status
- Transaction processing system architecture
- Packet descriptor
- Call gate descriptor