Beruflich Dokumente
Kultur Dokumente
FACULTAD DE INGENIRA.
PROGRAMACIN AVANZADA.
MANEJO DE CARACTERES
Una constante o literal de caracteres es una cadena de caracteres encerrada entre ' o "
print *,index(nom,'I')
print *,char(38)
print *,ichar("%")
stop
end
genera los registros
6
3
&
37
El argumento opcional BACK de la funcin INDEX no est soportado en FORTRAN 77:
index('abcde','c') ! devuelve el valor 3
! back=.true. implica una bsqueda hacia atrs
index("Matematicas",'a',back=.true) ! regresa el valor 10
index('Gauss','xyz') ! devuelve el valor 0
La funcin LGE prueba si una cadena de caracteres es lxicamente mayor o igual que otra, de
acuerdo a la secuencia de los caracteres ASCII. Con LGT se prueba si una cadena es lxicamente
mayor que otra. Similarmente, LLE prueba si una cadena es lxicamente menor o igual que otra y
LLT determina si una cadena es menor lxicamente que otra.
Por lo tanto, el programa
program lexico
! 'raul' es mayor o igual que 'raul'?
print *,lge('raul','raul')
! 'ana' es mayor lxicamente que 'pedro'?
print *,lgt('ana','pedro')
! 'FORTRAN' es menor o igual que 'fortran'?
print *,lle('FORTRAN','fortran')
! 'MARIA' es lxicamente menor que 'JULIA'?
print *,llt('MARIA','JULIA')
end program lexico
arroja los resultados
7
EJEMPLO
EJEMPLO
EJEMPLO EJEMPLO EJEMPLO
EJEMPLO123
Las funciones ACHAR, IACHAR, LEN_TRIM, ADJUSTL, ADJUSTR, REPEAT y TRIM no son parte
de FORTRAN 77. Cuando en la funcin SCAN el argumento opcional BACK est ausente o
presente con el valor .false., el resultado es la posicin del carcter ms a la izquierda en su
primer argumento que aparece tambin en el segundo argumento. Con BACK=.true., el valor de la
funcin es la posicin del carcter ms a la derecha en el primer argumento que tambin aparece
en el segundo. La funcin VERIFY trabaja de manera muy similar, pero con la diferencia de que el
resultado es la posicin del carcter ms a la izquierda en su primer argumento que aparece
tambin en el segundo argumento. Con BACK=.true., el valor de la funcin es la posicin del
carcter ms a la derecha en el primer argumento que tambin aparece en el segundo. La funcin
VERIFY trabaja de manera muy similar, pero con la diferencia de que el resultado es ahora la
posicin del carcter del primer argumento que no est en el segundo. SCAN y VERIFY no estn
incluidas en el estndar FORTRAN 77. El siguiente segmento de programa
print *,scan('POLITECNICO',"FI")
print *,scan('POLITECNICO','I',back=.true.)
print *,verify('POLITECNICO','POB')
print *,verify('POLITECNICO',"ICONO",.true.)
end
escribe
4
9
3
6
Otros programas que muestran el uso de cadenas de caracteres son:
character *5 nombre_corto
character (len=10) nombre_largo
real::a=10.0
! se truncan los cuatro caracteres ms a la derecha
nombre_largo='abcdefghijklmn'
write(6,70)nombre_largo
nombre_corto=nombre_largo
! 227 es la clave ASCII de ''
write(6,80)a,achar(227),nombre_corto
70 format(1x,a15)
80 format(1x,f8.2,2x,a1,2x,a5)
stop
end
con resultados
abcdefghij
10.00 abcde
12345678901234567890 y
program principal
implicit none
character (len=20)::titulo
read *,titulo
call subrutina_uno(titulo)
end
subroutine subrutina_uno(linea)
implicit none
! la longitud del argumento fingido linea se supone igual a la del argumento actual titulo
character (len=*) linea
print '(1x,a20)',linea
return
end
program prueba_caracteres
implicit none
character(len=50),dimension(30)::direcciones
..
call proceso(direcciones)
.. end program prueba_caracteres
subroutine proceso(datos)
implivit none
! datos es un arreglo de tamao supuesto
character (len=50),dimension(*)::datos