Cadenas y Sting
Cadenas y Sting
Cadenas y Sting
Concepto:
Una cadena o cadena de caracteres nos es más que una serie de caracteres manipulados como
una unidad. Si asemejamos una cadena al lenguaje castellano sería como una palabra, que es
un conjunto de sílabas y vocales en donde cada una de estas viene a ser una carácter.
Se puede acceder a cada uno de los elementos de este conjunto refiriéndose a la posición que
ocupan, empezando por el 0. Es decir:
Puedes acceder a la J con nombre[0]
Puedes acceder a la u con nombre[1]
Puedes acceder a la a con nombre[2]
Puedes acceder a la n con nombre[3]
Declaración
Una cadena se la define de la siguiente manera
char cadena[20];
Inicialización
cadena = "Hola" ;
Cualquier valor que se le asigne a una cadena va entre comillas dobles " ", como en el ejemplo
anterior "Hola" esta entre comillas dobles.
Una cadena siempre finaliza con el carácter de fin de cadena ‘\0’, que siempre se añade al final
automáticamente, en el ejemplo anterior se añade al final de “Hola” el carácter de fin de
cadena.
También podemos considerar a una cadena como un arreglo de caracteres, y se puede
inicializar de la siguiente manera:
Entrada/Salida
La entrada/salida desde un terminal se puede realizar en modo carácter; para ello bastará asignar —a
través del correspondiente
dispositivo— una cadena de caracteres a una variable tipo cadena. Así, por ejemplo, si A, B, C y D se
han declarado como variables tipo cadena
var cadena : A, B, C, D
las instrucciones
leer(A, B)
escribir(C, D)
asignarán a A y B las cadenas introducidas por el teclado y visualizarán o imprimirán en el
dispositivo de salida las
cadenas que representan las variables C y D.
Subcadenas
Otra operación —función— importante de las cadenas es aquella que permite la extracción de una
parte específica
de una cadena: subcadena. La operación subcadena se representa en dos formatos por:
Búsqueda
Una operación frecuente a realizar con cadenas es localizar si una determinada cadena forma parte
de otra cadena
más grande o buscar la posición en que aparece un determinado carácter o secuencia de caracteres de
un texto.
Estos problemas pueden resolverse con las funciones de cadena estudiadas hasta ahora, pero será
necesario diseñar
los algoritmos correspondientes. Esta función suele ser interna en algunos lenguajes y la definiremos
por índice o posición, y su formato es
La función indice en su forma más general realiza la operación que se denomina coincidencia de
patrones
(patter-matching). Esta operación busca una cadena patrón o modelo dentro de una cadena de texto.
Esta operación utiliza un cursor o puntero en la cadena de texto original y va comprobando los
sucesivos valores
de ambas cadenas: si son distintos, produce un 0, y si no proporciona la posición del primer carácter
coincidente.
La función indice (posicion) al tomar también un valor numérico entero se puede utilizar en
expresiones
aritméticas o en instrucciones de asignación a variables numéricas.
Concatenación
La concatenación es la operación de reunir varias cadenas de caracteres en una sola, pero
conservando el orden de
los caracteres de cada una de ellas.
El símbolo que representa la concatenación varía de unos lenguajes a otros. Los más utilizados son:
+ // & o
En nuestro libro utilizaremos & y en ocasiones +. El símbolo & evita confusiones con el operador
suma. Las cadenas
para concatenarse pueden ser constantes o variables.
'MIGUEL'&'DE'&'CERVANTES' == 'MIGUELDECERVANTES'
Puede comprobar que las cadenas, en realidad, se “pegan” unas al lado de las otras; por ello, si al
concatenar
frases desea dejar blancos entre ellas, deberá indicarlos expresamente en alguna de las cadenas. Así,
las operaciones
'MIGUEL '&'DE '&'CERVANTES
'MIGUEL'&' DE'&' CERVANTES
producen el mismo resultado
'MIGUEL DE CERVANTES'
lo que significa que la propiedad asociativa se cumple en la operación de concatenación.
Desigualdad
Los criterios para comprobar la desigualdad de cadena son utilizados por los operadores de relación
<, <=, >=, < >
y se ajustan a una comparación sucesiva de caracteres correspondientes en ambas cadenas hasta
conseguir dos caracteres
diferentes. De este modo, se pueden conseguir clasificaciones alfanuméricas
'GARCIA' < 'GOMEZ'
ya que las comparaciones sucesivas de caracteres es:
G-A-R-C-I-A G = G, A < O, ...
G-O-M-E-Z
una vez que se encuentra una desigualdad, no es preciso continuar; como se observa, las cadenas no
tienen por qué
tener la misma longitud para ser comparadas.
Longitud
Estas listas contienen elementos con caracteres empaquetados —2/elemento— y enlazados cada uno
con el siguiente
por un puntero (la cadena de caracteres es 'MADONA').