Download Entradas y salidas I/O

Document related concepts

Precisión simple en coma flotante wikipedia , lookup

Printf wikipedia , lookup

Ordenador decimal wikipedia , lookup

Transcript
READ (*, *)
WRITE(*; *)
Formato libre
Format → se utiliza para especificar la forma en que las variables son
impresas o leídas en un programa.
WRITE(*, 100) i, resultado
100 FORMAT( ‘ El resultado de la iteración ’, i3, ‘ es ‘ , f7.3 )
100 → Es el nivel (nombre de la sentencia)
Format → como se va a imprimir esa sentencia
I3 y f7.3 → describen como se imprimen i y resultado
‘ El resultado de la iteración ’→ Frase explicativa
I3 → usa 3 lugares para escribir, significa que va a escribir un número
entero de a lo sumo 3 dígitos
F7.3 → usa 7 lugares para escribir este número con 3 decimales a la
derecha del punto.
El resultado de la iteración 21 es 3.142
El resultado de la iteración
21 es
formateado
3.141593
formato libre
Distinta formas de incluir los formatos:

WRITE(* ,100) i, x
100 FORMAT(1X, i6, F10.2)
! sentencia FORMAT

CHARACTER (20) : : forma
forma= ‘(1X, i6, F10.2)’
WRITE(* , forma) i, x
! Formato con character variable

WRITE(* , ‘(1X, i6, F10.2)’) i, x
! Formato con character constante
Los descriptores están separados por comas
Las impresoras o las pantallas generalmente usan 132 caracteres de ancho y
72 lineas de largo
1 2
El primer carácter no se imprime se lo conoce como caracter de control y
especifica el espaciamiento vertical por línea de acuerdo con la tabla
133
Ej:
caracter de control
acción
1
Salta a una nueva página
Blanco
Simple espacio
0
Doble espacio
+
sin espaciamiento
(sobreimprime)
WRITE(*,100)
100 format (‘1’,’ Escribe en el tope de una nueva pagina’)
WRITE(*,110)
110 format (‘0’,’ Doble espaciamiento vertical’)
WRITE(*,120)
120 format (‘ ’,’ ======================’)
Escribe en el tope de una nueva pagina
Doble espaciamiento vertical
=======================
! ATENCIÓN
Ej WRITE ( *, ‘(I3)’) n
Si el número que voy a imprimir es 123 y no está en el primer lugar un caracter
de control, toma al 1 y salta a una nueva página.
100 FORMAT(‘1’, I3)
100 FORMAT(‘1’, ‘contador = ’, I3)
100 FORMAT(‘1contador = ’, I3)
Descriptores del formato
1. Describen la posición vertical de una línea de texto
2. Describen la posición horizontal de una línea de texto
3. Describen la el formato de salida de un valor particular
4. Controla la repetición de una porción del formato
Símbolo
significado
c
Número de columna
d
Número de dígitos a la derecha del punto
decimal para la entrada o salida de in real
m
Número mínimo de dígitos a ser
mostrados
n
Número de espacios para saltear
r
Factor de repetición→ número de veces a
usar un grupo de descriptores
w
Ancho del campo→ número de caracteres
a usar para la entrada o salida
SALIDA DE NÚMEROS ENTEROS
Descriptor I
El descriptor de los números enteros es la I. Su formato en general
repetición ←rIw
o
ancho del campo
rIw.m → número de dígitos que
que imprime
Esto significa que el ultimo digito del valor entero ocupará la columna más a la
derecha del campo.
Si el valor a imprimir es mayor que el campo asignado, en lugar de imprimir
parte del número imprime *.
 w≥ m
• Si el número a imprimir es mas pequeño que m agrega 0 a la izquierda.
• Si el número a imprimir es mas mayor que m este es ignorado.
• m puede ser 0 !!!! Esto es no se pueden escribir dígitos. Si el número a
imprimir es 0 pone blancos, si es otro dígito usa Iw
 Si el número a imprimir es negativo hay que agregar un espacio mas en el
ancho. Si es positivo el signo no se imprime.
Ej
El factor de repetición es el número de veces que el descriptor tiene que
repetirse
Ej 1
3I4 es equivalente a I4, I4, I4
Ej 2
INTEGER : : a = 3, b = -5, c =128
WRITE( *,”(3i4.2)”) a, b, c
SALIDA DE NÚMEROS REALES
Descriptor F
El descriptor de los números reales es la F. Su formato en general
repetición ←rFw.d → número de dígitos posteriores al punto decimal
ancho del campo
Cuando se imprime un número real hay que tener en cuenta que la parte entera
ocupa w - (d+1). Si el valor de la parte entera supera el espacio asignado
todas las posiciones se completan con *. Si se trabaja con números negativos
w ≥ (d+2)
 cuando el número decimal contiene mas decimales de los que serán
impresos el valor será redondeado.
Ej: el 1.73 con un formato de F3.1 un lugar se usa para el punto
un lugar para el decimal y un lugar para el entero → 1.7. Si fuera 1.76 imprime
1.8.
 Si el número tiene menos decimales que los considerados con el descriptor
los espacios serán completados con 0.
Ej:
1.73 con formato F5.3 imprime 1.730
Ej:
Ej:
REAL :: a = 12.34, b = -0.945, c = 100.0
WRITE(*,"(3F6.2)") a, b, c
Descriptor E
Los números reales pueden ser impresos en notación exponencial usando el
descriptor E. Su formato en general
repetición ←rEw.d → número de dígitos posteriores al punto decimal
ancho del campo
El descriptor E se utiliza con un numero entre 0.1 y1.0 y una potencia de 10
Ej:
el número 4096.0 → 0.4096 x 104 y se escribe con el descriptor
E → 0.4096 E+04
Cuando se utiliza la notación científica se tienen que tener en cuenta los
siguientes lugares :
 3 para el signo de la mantisa, el 0 y el punto
 1→ para la E
 3 para el signo del exponente y 2 para el exponente.
En general:
w≥d+7
Ej
REAL : : a = 1.2346E6, b = 0.001, c = -77.7E10, d = -77.7E10
REAL : : a = 1.2346E6, b = 0.001, c = -77.7E10, d = -77.7E10
WRITE (*, 200) a, b, c, d
FORMAT( ‘ ‘, 2E14.4, E13.6, E 11.6 )
200
5
1
0
0 . 1 2 3 5 E+ 0 7
1
5
2
0
2
5
3
0
3
5
4
0
4
5
0 . 1 0 0 0 E- 0 2 - 0 . 7 7 7 0 0 0 E+ 1 2 * * *
5
0
5
5
* * * * * * * *
Descriptor ES
Es exactamente como el descriptor E solo que la mantisa va entre 1 y 10
En general:
rESw.d
Ej
200
REAL : : a = 1.2346E6, b = 0.001, c = -77.7E10
WRITE (*, 200) a, b, c
FORMAT( ‘ ‘, 2ES14.4, E12.6)
5
1
0
1 . 2 3 5 E+ 0 6
1
5
2
0
2
5
3
0
3
5
4
0
1 . 0 0 0 E- 0 3 * * * * * * * * * * *