Manejo de Carácteres

8
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:

description

Como manejar los caracteres en Fortran y su funcion

Transcript of Manejo de Carácteres

Page 1: Manejo de Carácteres

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 2016Calificación:

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

Page 2: Manejo de Carácteres

'ESIQIE' "Programas FORTRAN"

El número de caracteres encerrados entre ' o entre " es la longitud de la constante.

Las variables de caracteres son declaradas con la proposición CHARACTER.

character(kind=1,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),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 concatenación

print *,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 ==,/=, <,<=,> y >=.

La función de biblioteca LEN determina la longitud de una constante, variable o expresión de tipo

CHARACTER. INDEX determina la posición inicial de una subcadena dentro de una cadena de

caracteres. 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. El código de caracteres empleado

tanto por ICHAR como por CHAR es dependiente del procesador, aunque generalmente es el

código

ASCII. Por ejemplo, el programa

character(len=6)::nom='ESIQIE'

print *,len(nom)

Page 3: Manejo de Carácteres

print *,index(nom,'I')

print *,char(38)

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','c') ! devuelve el valor 3

! back=.true. implica una búsqueda hacia atrás

index("Matematicas",'a',back=.true) ! regresa el valor 10

index('Gauss','xyz') ! devuelve el valor 0

La función LGE prueba si una cadena de caracteres es léxicamente mayor o igual que otra, de

acuerdo a la secuencia de los caracteres ASCII. Con LGT se prueba si una cadena es léxicamente

mayor que otra. Similarmente, 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.

Por lo tanto, el programa

program lexico

! ¿'raul' es mayor o igual que 'raul'?

print *,lge('raul','raul')

! ¿ 'ana' es mayor léxicamente que 'pedro'?

print *,lgt('ana','pedro')

! ¿ 'FORTRAN' es menor o igual que 'fortran'?

print *,lle('FORTRAN','fortran')

! ¿ 'MARIA' es léxicamente menor que 'JULIA'?

print *,llt('MARIA','JULIA')

end program lexico

arroja los resultados

Page 4: Manejo de Carácteres

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, IACHAR devuelve su correspondiente clave

numérica. LEN_TRIM funciona de manera similar a LEN; determina la longitud de una cadena,

pero sin tomar en cuenta los espacios después del último carácter diferente de un espacio. La

función ADJUSTL justifica una cadena a la izquierda, 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. ADJUSTR justifica la cadena a la derecha, 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. REPEAT concatena copias de una

cadena. La función

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) ! justificación a la izquierda

print *,adjustr(muestra) ! justificación a la derecha

muestra_repetida=repeat(muestra,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 *,muestra_sin_espacios

end

tendría los resultados

<

107

Page 5: Manejo de Carácteres

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 función SCAN el argumento opcional BACK está ausente o

presente con el valor .false., 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. Con BACK=.true., 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. La función VERIFY trabaja de manera muy similar, 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. Con BACK=.true., 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. La función

VERIFY trabaja de manera muy similar, 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. SCAN y VERIFY no están

incluidas en el estándar 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 más a la derecha

nombre_largo='abcdefghijklmn'

write(6,70)nombre_largo

Page 6: Manejo de Carácteres

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 tamaño supuesto

character (len=50),dimension(*)::datos