Documentos de Académico
Documentos de Profesional
Documentos de Cultura
la
o la sentencia:
155
Formatos y archivos
o la sentencia:
Formatos y Archivos
SMBOLO
SIGNIFICADO
nmero de columna
mnimo n de dgitos
n de espacios saltados
anchura
del
campo:
n
caracteres de entrada/salida
de
157
Formatos y archivos
[r]Iw[.m]
[r]Iw
Ejemplos de salida:
DESCRIPTOR VALOR INTERNO SALIDA
I4
452
452
I2
6234
**
I5
-52
-52
I4.3
003
I2.0
Ejemplos de entrada:
DESCRIPTOR CAMPO ENTRADA VALOR LEDO
I4
I2
-1
-1
I4
-123
-123
I3
12
12
I2
123
12
[r]Fw.d
158
Formatos y Archivos
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 VALOR LEDO
F6.3
49.225
49.225
F6.2
49.225
49.23
F7.1
-1525.1
-1525.1
159
Formatos y archivos
[r]Ew.d
Los mismos criterios que operan sobre un dato real con formato F
se aplican a ese dato real con formato exponencial.
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.83E2
0.8300E+02
Ejemplos de entrada:
DESCRIPTOR CAMPO ENTRADA VALOR LEDO
E11.2
43.258E+03
0.43E+05
E11.5
43.258E+03
0.43258E+05
E11.3
0.43E-02
0.430E-02
160
Formatos y Archivos
[r]ESw.d
Los mismos criterios que operan sobre un dato real con formato F
se aplican a ese dato real con formato cientfico.
Ejemplos de salida:
DESCRIPTOR VALOR INTERNO SALIDA
ES8.2
83.456
8.35E+01
ES7.2
83.456
*******
ES10.3
8.3974
8.397E+00
E11.4
0.83ES2
8.3000ES+01
Ejemplos de entrada:
DESCRIPTOR CAMPO ENTRADA VALOR LEDO
ES11.2
43.258E+03
4.33ES+04
ES11.5
43.258E+03
4.32580ES+04
ES11.3
0.43E-02
4.300ES-01
Tab la 7 .9: Fo r matos de lect ura de rea les e n fo rmato c ien tf ico
[r]Lw
161
Formatos y archivos
Ejemplos de salida:
DESCRIPTOR VALOR INTERNO SALIDA
L5
.FALSE.
L4
.TRUE.
L1
.TRUE.
L2
.FALSE.
Ejemplos de entrada:
DESCRIPTOR CAMPO ENTRADA VALOR LEDO
L5
.TRUE.
L2
F1
.FALSE.
L4
XT
ERROR
[r]A[w]
162
Formatos y Archivos
Ejemplos de salida:
DESCRIPTOR
VALOR
LONGITUD
DE
LA
SALIDA
INTERNO VARIABLE CARACTER
ABCDEF
ABCDEF
A8
ABCDEF
ABCDEF
A4
ABCDEF
ABCD
Ejemplos de entrada:
DESCRIPTOR
CAMPO
ENTRADA
LONGITUD DE
VARIABL
CARACTER
LA
ABCDEFGH
ABCDEF
ABCDEFGH
ABCDEFGH
A8
ABCDEFGH
EFGH
A4
ABCDEFGH
ABCD
VALOR
LEDO
nX
Tc
163
Formatos y archivos
/[/][]
INTEGER:: a,b,c,d
READ (*,30) a,b,c,d
30 FORMAT (2I2,//, 2I2)
Si los datos de entrada son:
123
456
789
Se leen a, b, c, d con los valores 1, 2, 7 y 8, respectivamente.
Ejemplo:
164
Formatos y Archivos
OPEN (lista_open)
165
Formatos y archivos
INTEGER:: error_de_apertura
OPEN(UNIT=12,FILE=datos,STATUS=OLD,ACTION=READ,&
IOSTAT=error_de_apertura)
INTEGER:: error_de_apertura
OPEN(UNIT=9,FILE=resultado,STATUS=NEW,ACTION=WRITE
,&IOSTAT=error_de_apertura)
CLOSE (lista_close)
[UNIT= ]unidad
REWIND unidad
BACKSPACE unidad
166
Formatos y Archivos
Ejemplos:
REWIND 10
BACKSPACE 30
WRITE
([UNIT
=]
unidad,
error_de_escritura][,]) lista_de_variables
formato[,IOSTAT
167
Formatos y archivos
INTEGER:: error_de_escritura
INTEGER:: error_de_lectura
168
Formatos y Archivos
PROGRAM temperaturas
! Lee una serie de temperaturas de un archivo y
! calcula el valor medio
IMPLICIT NONE
CHARACTER (LEN=20):: archivo
INTEGER:: cuenta, error_de_apertura, error_de_lectura
REAL:: temperatura, suma, media
! Abrir archivo como unidad 15
WRITE( *, *)
ACTION=READ,&
END DO
! Calcular temperatura media
media = suma/ REAL(cuenta)
WRITE (*, *) temperatura media:
169
Formatos y archivos
170
EJERCICIOS RESUELTOS
Objetivos:
171
Formatos y archivos
PROGRA M c ap 7_1
IM PL IC IT NON E
I N T E GER : : n
WR ITE( *,8) 'NU M ERO, RA IZ CUADRADA , RA IZ CUB ICA'
8 FOR MAT (1X, A)
WR IT E ( * ,10 ) (n ,SQRT (REAL( n)) ,R EAL (n) ** (1 .0 /3 .0) ,n= 1 ,10 0)
1 0 FOR MAT (1 X, I5 , 4 X, F8 .3 , 8 X, F8 .3)
E ND PROGRA M ca p7_ 1
PROGRA M c ap 7_2
IM PL IC IT NON E
INT EGER :: m=- 123 ,n=9 877 ,l= 889 ,i= 77
R EA L : : r=8 9 .12 6 , s=1 4 .53 2
CHARAC TER (LEN= 6):: pal= 'abcdef '
W R IT E( * ,1 0 0 ) ' En t e r o s ' , m ,n , l , i
1 00 F OR MA T ( 1 X /1 X ,T 10 ,A / ,1 X ,I4 , 1 X , I 4 ,1 X, I 3 , 1 X , I 1 )
WR IT E( * ,15 0)
c ab e' ,r
re lle na
c on
ce ro s' ,r ,'n o
1 50 FORMAT (1 X/1 X,T 10 ,A /,1 X,A ,1 X,F5 .2 /,1 X,A ,1 X,F7 .4 /,1 X,A ,1X,F 4 .2)
WR IT E( * ,20 0)
c i ent if i co ' ,s
' fo rmat o
2 00 F ORMAT (1 X/1 X,A ,1 X,F5 .2 /,1 X,A ,1 X,E9 .2 /,1 X,A ,1X,ES9 .2)
WR IT E( * ,25 0) 'C ara ct ere s' ,'w =6= L EN(p a l)' ,pa l,&
'w = 8. L a va r ia b le s e a j ust a a la d er ech a de l ca mp o' ,p a l ,&
'w =4. Se mu est ra n los 4 p r imero s c ara cter es de la va r ia b le' ,pal
2 50 F OR MA T ( 1 X / ,T 10 ,A / , 1X ,A ,1 X ,A / ,1 X ,A, 1 X ,A 8 / , 1 X,A ,1 X ,A4 )
172
Formatos y archivos
3 00 FOR MA T ( 1 X / ,1 X ,A / ,1 X ,4 I 5 ,2F 6 .2 ,A 7 )
E ND PROGRA M ca p7_ 2
Clase
Nota
[8.5,10]
[5,8.5)
[0,5)
PROGRA M c ap 7_3
IM PL IC IT NON E
CHARAC TER (LEN= 18) :: nombre
R EAL : : no ta
INTEGER
c lase ,er ror _d e_a pe rtu ra ,er ro r_d e_ lectu ra,e rr or _d e_e sc r itu ra
::
O PEN (6 0 ,F IL E='c ap7 _3 in.txt' ,STA TU S='O LD' ,AC T ION= 'REA D' ,&
IO STAT=e rr o r_d e_a pe rt ura )
I F ( er ro r_ de _a per t u ra> 0 ) S TO P ' c ap 7_3 i n .tx t N O A B IER T O'
O P EN (7 0 ,F I L E='c ap7 _3 out .t xt',S TA TU S='N EW' ,AC T ION= 'WR ITE' ,&
IO STAT=e rr o r_d e_a pe rt ura )
I F ( er ro r_ de _a per t u ra> 0 ) S TO P ' c ap 7_3 out. t x t N O A B I E R T O'
WR IT E( 70 ,9 ,IOSTAT=e rr or _d e_e sc r itu ra) 'A LUMN O' ,'C LA SE'
WR IT E( 70,'( 1 X,A6,T 20,A 5)') '======','====='
IF (er ro r_ de _es cr it ura> 0) STO P ' er ro r de e sc r itu ra'
9 FOR MAT (1 X ,A 6 ,T20 ,A 5)
DO
R EAD(6 0 ,* ,IO STA T=e rr or _d e_ le ctu ra) nomb re ,not a
e xt e rn o: IF ( er ro r_ de _ lec t u ra > 0 ) TH EN
WR IT E(* ,*) ' er ro r d e lec tu ra'
EXIT
EL SE IF (e rr or _d e_ le ctu ra < 0 ) TH EN
173
Formatos y archivos
174
Formatos y archivos
PROGRA M c ap 7_4
IM PL IC IT NON E
CHARAC TER (LEN= 15), D IMENSION ( 5) :: nomb
CHARAC TER (LEN= 15)::nombm,nombp
R EAL , D I MEN S ION(5 ) :: not a
R EA L : : m ej o r ,p eo r , me d ia clas e ,m e d ia
INT EGER :: i,n ,er ro r_d e_ ape rt ur a ,e rr or _de _ lec tu ra ,s uf ic ient es ,nu m
O PEN (1 0 ,F IL E='c ap7 _4 in.txt' ,STA TU S='O LD' ,AC T ION= 'REA D' ,&
IO STAT=e rr o r_d e_a pe rt ura )
I F ( er ro r_ de _a per t u ra> 0 ) S TO P ' c ap 7_4 i n .tx t N O A B IER T O'
END DO
! . .CA LCULO D E L P EOR D E LA CL AS E . .
p eo r= n ota( 1)
n o mb p= n omb( 1)
DO i= 2,n
175
Formatos y archivos
O P EN (2 0 ,F I L E='c ap7 _4 out .t xt',S TA TU S='N EW' ,AC T ION= 'WR ITE' ,&
IO STAT=e rr o r_d e_a pe rt ura )
I F ( er ro r_ de _a per t u ra> 0 ) S TO P ' c ap 7_4 out. t x t N O A B I E R T O'
WR IT E( 20 ,'( 1 X ,A , I3 ,A)' ) 'HA Y' , nu m,' ALU MNO S CON S UF IC I ENT E '
WR IT E( 20 ,'( 1 X,A ,F4 .1 )') ' LA NO TA M ED IA D E LA CLA SE ES:' ,me d ia
W R IT E( 20 ,'( 1 X ,3A ,F 4.1) ' )
e s: ' , peo r
'El
p eo r
a l umn o
e s:
' , no m bp ,' y
176
su
n ot a
Formatos y archivos
c ont ad or=0
DO i= 1,n
IF (nota( i) >= 5.AND.nota( i) < 6) TH EN
c ont ad or =co nta dor +1
E N D IF
END DO
s uf ic ient es= co nta dor
END FUNCTION suf icientes
5.25
5.9
177
Formatos y archivos
EJERCICIOS PROPUESTOS
1) Programa que escriba en un archivo con nombre cap7_1p_out.txt
los 100 primeros nmeros naturales, generados por el propio
programa.
2) Programa que abra el archivo del ejercicio anterior, calcule el
cuadrado de cada nmero y lo escriba en un archivo con nombre
cap7_2p_out.txt. Cmo se escribira todo en el mismo archivo?
Para
comodidad
del
usuario,
copiar
cap7_1p_out.txt
en
cap7_2p_inout.txt antes de ejecutar el programa.
3) Programa que escriba las temperaturas de los das de una semana en
un archivo con nombre cap7_3p_out.txt.
4) Programa que lea las temperaturas de los das de la semana del
ejercicio anterior y escriba en otro archivo con nombre
cap7_4p_out.txt:
1200.95
SI
Roberto Iglesias
1800.59
NO 10
...
Se desea saber:
178
Formatos y archivos
179
BIBLIOGRAFA
1) Stephen J. Chapman. Fortran 90/95 for Scientists and Enginners.
2 n d Edition, International Edition, McGraw-Hill, 2004.
2) Michael Metcalf, John Reid, Malcolm Cohen. Fortran 95/2003
explained. Oxford University Press, 2005.
3) L.R. Nyhoff, S.C. Leestma. Introduction to
Engineers and Scientists. Prentice Hall, 1997.
Fortran
90
for
Lenguaje
de
programacin
Fortran
90.
181