You are on page 1of 6

UNIVERSIDAD NACIONAL AUTÓNOMA DE MÉXICO.

FACULTAD DE INGENIRÍA.
PROGRAMACIÓN AVANZADA.

MANEJO DE CARACTERES

ALUMNO: GARCIA MARMOLEJO CESAR ALEJANDRO.
ORTIZ LUCAS PILAR
SANCHEZ GARCIA JORGE ALBERTO
NOMBRE DE LA PROFESORA: ADRIANA ALEJANDRA ENRÍQUEZ SOLÍS.
Fecha de entrega: 3 de marzo 2016
Calificación:

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

character(len=13) suma car='FORTRAN 90' ! car(5:6) es una subcadena con los caracteres RA print *. La función CHAR genera el carácter correspondiente a su argumento entero mientras que ICHAR devuelve el número asociado con el carácter dado. como en el programa program sub_cadenas character(len=10)::var.> y >=. aunque generalmente es el código ASCII.car(1:1) print *. car(3:6) print *.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. INDEX determina la posición inicial de una subcadena dentro de una cadena de caracteres. La función de biblioteca LEN determina la longitud de una constante.<=./=.len=10) var ! clase 1 y longitud 10 character(len=30)::dirección ! kind=1 es el default character clave ! len=1 es el default character(kind=5).suma end program sub_cadenas cuyos resultados son: RA F La operación de concatenación se ejecuta después de las sumas y restas y antes de los operadores de relación ==. Por ejemplo. el programa character(len=6)::nom='ESIQIE' print *.len(nom) . character(kind=1.'ESIQIE' "Programas FORTRAN" El número de caracteres encerrados entre ' o entre " es la longitud de la constante. <. variable o expresión de tipo CHARACTER.car(4:10) suma="abc"//car ! // es un operador de concatenación print *. Las variables de caracteres son declaradas con la proposición CHARACTER. El código de caracteres empleado tanto por ICHAR como por CHAR es dependiente del procesador.

de acuerdo a la secuencia de los caracteres ASCII.'pedro') ! ¿ 'FORTRAN' es menor o igual que 'fortran'? print *.back=. el programa program lexico ! ¿'raul' es mayor o igual que 'raul'? print *.lgt('ana'.'fortran') ! ¿ 'MARIA' es léxicamente menor que 'JULIA'? print *.llt('MARIA'.lge('raul'.true) ! regresa el valor 10 index('Gauss'.'a'.index(nom. implica una búsqueda hacia atrás index("Matematicas".lle('FORTRAN'.'I') print *. Similarmente.true.char(38) print *.'xyz') ! devuelve el valor 0 La función LGE prueba si una cadena de caracteres es léxicamente mayor o igual que otra.'c') ! devuelve el valor 3 ! back=.'raul') ! ¿ 'ana' es mayor léxicamente que 'pedro'? print *.ichar("%") stop end genera los registros 6 3 & 37 El argumento opcional BACK de la función INDEX no está soportado en FORTRAN 77: index('abcde'.print *. Por lo tanto.'JULIA') end program lexico arroja los resultados . LLE prueba si una cadena es léxicamente menor o igual que otra y LLT determina si una cadena es menor léxicamente que otra. Con LGT se prueba si una cadena es léxicamente mayor que otra.

achar(60) print *.3) !concatenación de tres print *.muestra_repetida ! omisión de los espacios al final de la cadena muestra_sin_espacios=trim(muestra)//'123' print *. el programa character (len=10)::muestra character (len=30)::muestra_repetida character (len=10)::muestra_sin_espacios muestra="EJEMPLO" print *. La función TRIM omite los espacios al final de la cadena. removiendo los espacios colocados antes del primer carácter diferente de un espacio en la cadena original e insertando los espacios necesarios para rellenar la cadena.adjustl(muestra) ! justificación a la izquierda print *. determina la longitud de una cadena. La función ADJUSTL justifica una cadena a la izquierda. REPEAT concatena copias de una cadena. ADJUSTR justifica la cadena a la derecha. pero sin tomar en cuenta los espacios después del último carácter diferente de un espacio.len_trim(muestra) print *. Entonces.adjustr(muestra) ! justificación a la derecha muestra_repetida=repeat(muestra. removiendo los espacios colocados después del último carácter diferente a un espacio en la cadena original e insertando los espacios necesarios al principio de la cadena. IACHAR devuelve su correspondiente clave numérica. LEN_TRIM funciona de manera similar a LEN.muestra_sin_espacios end tendría los resultados < 107 .iachar('k') print *.arroja los resultados T F T F ACHAR es una función que devuelve el carácter de la secuencia ASCII que corresponde a su argumento entero. Dado un carácter del código ASCII.

el valor de la función es la posición del carácter más a la derecha en el primer argumento que también aparece en el segundo. ADJUSTR.true.verify('POLITECNICO'.70)nombre_largo .verify('POLITECNICO'. La función VERIFY trabaja de manera muy similar. IACHAR. Cuando en la función SCAN el argumento opcional BACK está ausente o presente con el valor .7 EJEMPLO EJEMPLO EJEMPLO EJEMPLO EJEMPLO EJEMPLO123 Las funciones ACHAR.'I'. SCAN y VERIFY no están incluidas en el estándar FORTRAN 77..true."ICONO".) print *..false. el valor de la función es la posición del carácter más a la derecha en el primer argumento que también aparece en el segundo.. el resultado es la posición del carácter más a la izquierda en su primer argumento que aparece también en el segundo argumento. ADJUSTL.scan('POLITECNICO'.back=.true.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."FI") print *. La función VERIFY trabaja de manera muy similar. Con BACK=. Con BACK=.'POB') print *. pero con la diferencia de que el resultado es la posición del carácter más a la izquierda en su primer argumento que aparece también en el segundo argumento. REPEAT y TRIM no son parte de FORTRAN 77.. LEN_TRIM. pero con la diferencia de que el resultado es ahora la posición del carácter del primer argumento que no está en el segundo. El siguiente segmento de programa print *.scan('POLITECNICO'.0 ! se truncan los cuatro caracteres más a la derecha nombre_largo='abcdefghijklmn' write(6.

80)a.nombre_corto=nombre_largo ! 227 es la clave ASCII de 'ð' write(6.nombre_corto 70 format(1x.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..2.a20)'.achar(227).linea return end program prueba_caracteres implicit none character(len=50).00 ð abcde 12345678901234567890 y program principal implicit none character (len=20)::titulo read *.dimension(30)::direcciones .2x.a1. call proceso(direcciones) .dimension(*)::datos .2x..f8.a15) 80 format(1x.a5) stop end con resultados abcdefghij 10. end program prueba_caracteres subroutine proceso(datos) implivit none ! datos es un arreglo de tamaño supuesto character (len=50).