Sie sind auf Seite 1von 6

UNIVERSIDAD NACIONAL AUTNOMA DE MXICO.

FACULTAD DE INGENIRA.
PROGRAMACIN AVANZADA.

MANEJO DE CARACTERES

ALUMNO: GARCIA MARMOLEJO CESAR ALEJANDRO.


ORTIZ LUCAS PILAR
SANCHEZ GARCIA JORGE ALBERTO
NOMBRE DE LA PROFESORA: ADRIANA ALEJANDRA ENRQUEZ SOLS.
Fecha de entrega: 3 de marzo 2016
Calificacin:

Una constante o literal de caracteres es una cadena de caracteres encerrada entre ' o "

'ESIQIE' "Programas FORTRAN"


El nmero de caracteres encerrados entre ' o entre " es la longitud de la constante.
Las variables de caracteres son declaradas con la proposicin CHARACTER.
character(kind=1,len=10) var ! clase 1 y longitud 10
character(len=30)::direccin ! kind=1 es el default
character clave ! len=1 es el default
character(kind=5),dimension(100)::codigo postal
En FORTRAN 77 no se puede especificar la clase y la longitud se declara con un *
character *40 alumno
Es posible manejar subcadenas de caracteres, como en el programa
program sub_cadenas
character(len=10)::var;character(len=13) suma
car='FORTRAN 90'
! car(5:6) es una subcadena con los caracteres RA
print *, car(3:6)
print *,car(1:1)
print *,car(4:10)
suma="abc"//car ! // es un operador de concatenacin
print *,suma
end program sub_cadenas
cuyos resultados son:
RA
F
La operacin de concatenacin se ejecuta despus de las sumas y restas y antes de los
operadores de relacin ==,/=, <,<=,> y >=.
La funcin de biblioteca LEN determina la longitud de una constante, variable o expresin de tipo
CHARACTER. INDEX determina la posicin inicial de una subcadena dentro de una cadena de
caracteres. La funcin CHAR genera el carcter correspondiente a su argumento entero mientras
que ICHAR devuelve el nmero asociado con el carcter dado. El cdigo de caracteres empleado
tanto por ICHAR como por CHAR es dependiente del procesador, aunque generalmente es el
cdigo
ASCII. Por ejemplo, el programa
character(len=6)::nom='ESIQIE'
print *,len(nom)

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

arroja los resultados


T
F
T
F
ACHAR es una funcin que devuelve el carcter de la secuencia ASCII que corresponde a su
argumento entero. Dado un carcter del cdigo ASCII, IACHAR devuelve su correspondiente clave
numrica. LEN_TRIM funciona de manera similar a LEN; determina la longitud de una cadena,
pero sin tomar en cuenta los espacios despus del ltimo carcter diferente de un espacio. La
funcin ADJUSTL justifica una cadena a la izquierda, removiendo los espacios colocados antes del
primer carcter diferente de un espacio en la cadena original e insertando los espacios necesarios
para rellenar la cadena. ADJUSTR justifica la cadena a la derecha, removiendo los espacios
colocados despus del ltimo carcter diferente a un espacio en la cadena original e insertando
los espacios necesarios al principio de la cadena. REPEAT concatena copias de una cadena. La
funcin
TRIM omite los espacios al final de la cadena. Entonces, el programa
character (len=10)::muestra
character (len=30)::muestra_repetida
character (len=10)::muestra_sin_espacios
muestra="EJEMPLO"
print *,achar(60)
print *,iachar('k')
print *,len_trim(muestra)
print *,adjustl(muestra) ! justificacin a la izquierda
print *,adjustr(muestra) ! justificacin a la derecha
muestra_repetida=repeat(muestra,3) !concatenacin de tres
print *,muestra_repetida
! omisin de los espacios al final de la cadena
muestra_sin_espacios=trim(muestra)//'123'
print *,muestra_sin_espacios
end
tendra los resultados
<
107

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

Das könnte Ihnen auch gefallen