Cadenas
Caractersticas
Una cadena (string) es un conjunto de 0 o ms caracteres.
Entre estos caracteres puede estar incluido el blanco.
Las cadenas de caracteres se delimitan con dobles comillas
en la mayora de los lenguajes.
Hola mundo
Las cadenas de caracteres se almacenan en posiciones
contiguas de memoria.
La longitud de una cadena es el nmero de caracteres de la
misma. Si hubiese algn carcter especial para sealar el fin
de cadena, no se considerara en la longitud.
Caractersticas
Si una cadena tiene longitud 0, la llamamos cadena vaca
pero esto no quiere decir que no tenga ningn carcter, por
que puede haber algn carcter especial no imprimible que
forme parte de la cadena.
Antes de usar la cadena, hay que declarar la longitud
mxima que puede tener y ese es el espacio que se reserva
en memoria para almacenar la cadena, siempre en
posiciones contiguas.
La longitud real de la cadena durante la ejecucin puede
variar aunque siempre tiene que ser menor que el mximo de
la cadena.
Caractersticas
Puesto que la cadena no tiene porque ocupar la longitud
mxima, para determinar que parte ocupa realmente esa
cadena, se pueden utilizar diferentes mtodos.
Pascal lo que hace es reservar los 2 primeros bytes de la
zona de memoria en que guardamos la cadena para indicar
el primero la longitud mxima que puede tener la cadena y el
segundo la longitud actual.
10
10
Caractersticas
En C++ una cadena es un arreglo de caracteres, o valores de tipo char,
terminados con el carcter nulo \0.
char saludo[10];
H
\0
Caractersticas
En Java una cadena es un objeto tipo String y se
declara de la siguiente manera:
String c1;
c1 = new String();
String c2 = new String (Hola mundo);
String c3 = Juana;
Primitivas de cadenas
Leer (cadena). Lee una cadena desde el teclado.
Escribir (cadena). Escribe el contenido una cadena.
Funciones de cadena en C++ (string.h)
gets(cadena)
Lee una cadena desde el teclado
strlen(cadena)
Devuelve la longitud de una cadena
strcpy(orig, dest)
Copia la cadena orig a dest, la copia de caracteres se
detendr cuando sea copiado el carcter nulo, strcpy
devuelve el puntero dest
strcmp(cad1, cad2)
Compara dos cadenas, si cad1 > cad2 el resultado ser >0,
si cad1 < cad2, el resultado ser <0, si son iguales, el
resultado ser 0.
Funciones de cadena en C++
strcat(dest, orig):
Concatena orig al final de dest. La longitud de la cadena
resultante ser strlen(dest) + strlen(orig). strcat devuelve un
puntero a la cadena concatenada.
strncpy(dest, orig, maxlong)
Copia maxlong caracteres de la cadena orig a dest. Si hay
ms caracteres se ignoran, si hay menos se rellenar con
caracteres nulos. La cadena dest no se terminar con nulo si
la longitud de orig es maxlong o ms. La funcin strncpy
devuelve el puntero dest.
Longitud de una cadena
Funcin longitud (cadena)
largo 0
Mientras (cadena[largo]< > \0) hacer
largo largo+1
Fin mientras
Retornar largo
Fin funcin
Comparacin de cadenas
Las cadenas se pueden comparar entre si porque lo que se
compara son los valores ASCII asociados a cada carcter.
En el caso de que se comparen 2 cadenas de diferente
longitud tal que la cadena de menor longitud tiene N caracteres
y estos N caracteres coinciden con los N primeros caracteres
de la cadena ms larga, se considera mayor la cadena ms
larga.
PEPE > PAPA
PEPES > PEPE
Comparacin de cadenas
Vamos a disear una funcin de comparacin de las cadenas
cad1 y cad2 que devuelva:
0 si cad1=cad2
Un positivo si cad1 > cad2
Un negativo si cad1 < cad2
Comparacin de cadenas
Funcin comparacion (c1,c2)
i0
Mientras (c1[i]=c2[i]) y (c1[i]< > \0) y (c2[i] < > \0)
i i+1
Fin mientras
Si (c1[i]=\0 y c2[i]=\0) entonces
retornar 0
Sino
retornar(ascii (c1[i])- ascii (c2[i]))
Fin si
Fin comparacion
Buscar una subcadena
Vamos a disear una funcin para buscar una subcadena en
otra cadena y que devuelva:
La posicin inicial si es encontrado
-1 si no lo encuentra
Buscar una subcadena
Funcion Buscar(c1, c2)
i0
pos -1
Mientras (c1[i] < > '\0') hacer
j0
Si (c1[i] < > c2[j]) entonces
i i+1
Sino
pos i
Mientras (c2[j] < > '\0') hacer
Si (c1[i] < > c2[j]) entonces
pos -1
Fin si
ii+1
jj+1
Fin mientras
Fin si
Fin mientras
retornar pos;
Fin Funcin
Concatenacin
Consiste en unir varias cadenas en una sola,
manteniendo el orden de los caracteres que se unen.
C1 = Hola
C2 = mundo
concatenar(C1,C2) Hola mundo
Se devuelve en C1 la concatenacin C1&C2.
Extraer subcadenas
Extrae parte de una cadena.
Se pueden usar los siguientes procedimientos, la subcadena
se extrae en cad2:
Procedimiento extraer(cad1, inicio, longitud, cad2)
Si inicio es negativo, o es mayor que longitud, se devuelve
la cadena nula.
Si inicio + longitud es mayor que el tamao de la cadena,
devuelve desde inicio hasta de fin de la cadena.
Procedimiento extraer(cad1, inicio, fin, cad2)
Si fin es menor que inicio, devuelve la cadena nula.
Si fin es mayor que la longitud de la cadena, se devuelve
desde inicio hasta el fin de la cadena.
Extraer subcadenas
Procedimiento extrae(cad1, inicio, cad2)
Extrae en cad2 desde el inicio hasta el final de la cadena.
Procedimiento izquierda(cad1, n, cad2)
Extrae en cad2 n caracteres a la izquierda de cad1.
Procedimiento derecha(cad1, n, cad2)
Extrae en cad2 n caracteres a la derecha de cad1.
Insercin
Consiste en insertar una cadena dentro de otra a partir de
una determinada posicin.
Procedimiento insertar (cad1, cad2, pos)
Inserta cad2 en cad1 a partir de pos
cad1 = Pepe
cad2= Nuria
insertar (cad1,cad2,3) cad1 = PeNuriape
Si pos es mayor que la longitud de cad1 o pos es menor
que 0, no se inserta nada.
Borrar una subcadena
Consiste en borrar de una cadena una subcadena que forma
parte de ella. Hay que dar la posicin de inicio y final de la
subcadena que se desea borrar.
Procedimiento Borrar (cad1, inicio, fin)
Si fin es menor que inicio, o inicio es mayor que la longitud
de la cadena, no se borra nada.
cad1=Casa azul
Borrar (cad1,3,5)
cad1=Caul
Intercambio
Consiste en substituir la aparicin de una subcadena dentro
de una cadena, por otra subcadena. Para eso la primera
subcadena tiene que aparecer en la otra.
Procedimiento intercambio (cad1, scad2, scad3)
cad1 = Casa azul
scad2=asa
scad3=asita
cad1=Casita azul
Si cad2 no est en cad1, no se cambia nada.
Conversin de cadenas a nmeros
Es una funcin que se le pasa una cadena caracteres
numricos y devuelve el nmero asociado.
Funcin valor(cadena)
cadena = 234
n valor (cadena)
n toma el valor 234
Conversin de nmeros a cadenas
Es un procedimiento al que se le pasa un nmero y lo
convierte a una cadena.
Procedimiento conv_cad (num, cadena)
num = 234
conv_cad (num, cadena) devuelve 234