Академический Документы
Профессиональный Документы
Культура Документы
Tema 7.
7 Cadenas de caracteres
1
Datos alfanuméricos
Dos tipos
p de datos definidos para
p trabajar
j con
información no numérica ni booleana:
● Carácter.
● Cadena.
Para tratarlos es necesario convertir la información no
numérica con la que trabaja el ordenador.
● Asignación de un código numérico a cada carácter.
carácter
● Esa asignación se puede realizar de distintas formas.
● No todos los caracteres están disponibles siempre.
● Al conjunto de caracteres con los que puede trabajar un
ordenador se le denomina juego de caracteres.
2
El juego de caracteres
3
El juego de caracteres (II)
Juego
g de caracteres ASCII extendido.
● Soluciona estas restricciones permitiendo la representación de
caracteres regionales.
● Utiliza los 8 bits para representar todos los caracteres.
9 Los caracteres de 32 al 126 utilizan los caracteres imprimibles ASCII
estándar, así cómo los códigos de control 8 a 13.
9 Los códigos superiores a 127 se utilizan para representar los
caracteres ampliados.
ampliados
● Existen distintas codificaciones para esos caracteres ampliados:
9 Página de códigos 437 (para las versiones en inglés de MS-DOS).
9 Página de códigos 850 (para las versiones de Europa occidental de
MS-DOS)
4
El juego de caracteres (III)
5
Cadenas de caracteres
6
Cadenas de caracteres (II)
Constante de cadena.
● U
Una serie
i de
d caracteres
t delimitados
d li it d por ell separador
d ded cadenas
d que
puede ser la comilla simple o doble.
Carácter nulo.
● El carácter correspondiente
p al código
g 0.
9 Es un carácter válido aunque no imprimible.
9 Es distinto del espacio en blanco.
o El espacio en blanco tiene un código ASCII 32.
Cade
Cadena
a nula.
ua
● Cadena que sólo contiene un carácter nulo.
9 Tiene longitud 0.
Subcadena.
● Un fragmento de una cadena principal
principal.
● Puede estar formado por una parte de la cadena, por toda la cadena o
por ningún carácter de la cadena (se trataría de una subcadena nula).
7
Variables de tipo cadena
8
Variables de tipo cadena (II)
Cadenas estáticas.
● Define su longitud en tiempo
de compilación, es decir en la
declaración de la variable.
● Son las cadenas qque utiliza C
o Pascal.
Declaración en Pascal
9 Las cadenas estarían
formadas por un array de
var
caracteres que se trata de
cad : string[9];
g[ ];
forma especial
especial.
...
o En Pascal, el tamaño se
limita a 255 caracteres y el cad := 'hola';
elemento 0 del array
contendría el número de Declaración en C
caracteres
caracteres.
o En C la longitud máxima char car[9];
está indefinida y el último char *nombre;
carácter sería el carácter
nulo (\0). ...
cad = “hola”;
nombre = “Pepe”;
9
Variables de tipo cadena (III)
10
Variables de tipo cadena (IV)
En el lenguaje
g j algorítmico
g UPSAM la forma de
almacenamiento no es importante.
● No hay que declarar el tamaño.
● Es posible tratar la cadena:
9 Como un conjunto de caracteres mediante el nombre de la variable.
9 Los caracteres individuales como si fueran elementos de un array.
9 Ejemplo:
Ej l Escribir
E ibi la l cadena
d 'HOLA' all revés:
é
var
cadena : c
entero : i
...
c Å 'HOLA'
desde i Å 4 hasta 1 incremento -1 hacer
escribir(c[i])
fin desde
fin_desde
...
11
Operaciones con cadena
12
Operaciones con cadena (II)
Concatenación.
● Consiste
C i t en unir
i dos
d cadenas
d para obtener
bt otra
t cadena.
d
9 En el lenguaje UPSAM se utiliza el operador + o, preferiblemente, el operador &.
● Se pueden utilizar acumuladores de caracteres de forma similar a los
acumuladores numéricos.
//Lee caracteres hasta pulsar la tecla Intro y devuelve una
//cadena con la unión los caracteres leídos.
cadena función LeerCadenaCarácterACarácter()
var
cadena
d : cad
d
carácter : car
inicio
cad Å '' //Se inicializa la cadena a nulo
leer(car)
mientras carácter(13) <> car hacer //Mientras que car no sea Intro
cad Å cad & car
leer(car)
fin_mientras
devolver(cad)
fin_función
13
Funciones de cadena
14
Función longitud()
15
Función longitud() (II)
Ejemplos:
longitud('Hola') Devuelve 4
longitud('Hola' & 'Adios') Devuelve 9
16
Función longitud() (III)
//Verifica
// ifi si
i se h
ha i
introducido
d id algún
l ú carácter
á di
distinto
i d
de nulo
l
//en alguna operación de entrada.
repetir
leer(cad)
hasta_q
que longitud(cad)
g ( ) <> 0
17
Función posición()
18
Función posición() (II)
Ejemplos:
j p
//Validar una entrada de usuario.
//Pide caracteres hasta que el usuario introduce una s o una n.
...
repetir
escribir('¿Desea continuar (S/N)?')
leer(opción)
hasta_que posición('SsNn',opción) <> 0
...
19
Función subcadena()
20
Función subcadena() (II)
21
Otras funciones de cadena
insertar.
● Devuelve una cadena en la que se inserta una subcadena dentro de
la cadena principal a partir de una posición determinada.
insertar(cadenaPrincial, posición, subcadenaAInsertar)
9 insertar(‘Miguel Saavedra', 8, 'de Cervantes') devuelve
la cadena 'Miguel de Cervantes Saavedra'.
● Si el lenguaje utilizado no dispone de esta función se puede
implementar utilizando las funciones básicas.
básicas
cadena función Insertar(valor cadena : c; valor entero : p; valor cadena : sc)
inicio
si p <= 0 entonces
devolver(c)
si_no
devolver(subcadena(c,1,p-1) & sc & subcadena(c,p))
fin_si
fin función
fin_función
22
Otras funciones de cadena (II)
Borrar.
● Devuelve una cadena en la que se ha eliminado una subcadena
a partir de una posición dada y de una longitud determinada.
9 borrar(cadenaPrincipal, posiciónInicio, longitud)
9 borrar('La Casa Blanca', 4, 5) devolvería la cadena 'La
Blanca'.
● Si el lenguaje utilizado no dispone de esta función se puede
implementar con las funciones básicas.
cadena función Borrar(valor cadena : c ; valor entero : p,n)
inicio
si (p <= 0) o (n <= 0) entonces
devolver(c)
si_no
devolver(subcadena(c,1,p-1) & subcadena(c, p+n))
fin si
fin_si
fin_función
23
Otras funciones de cadena (III)
Cambiar.
● Sustituye
S tit lla primera
i aparición
i ió de
d una subcadena
b d por otra.
t
cambiar(cadenaPrincipal,cadenaBuscada,cadenaASustituir)
9 cambiar('La Casa Blanca', 'Casa', 'Cabaña') devolverá la cadena
'La Cabaña Blanca'.
9 Si la cadena buscada no se encuentra devuelve la cadena principal.
principal
● Si el lenguaje utilizado no dispone de esta función, se puede implementar
mediante las funciones básicas.
cadena función Cambiar(valor cadena:c,borrada,sustituida )
var
entero : p
inicio
p Å posición(c,borrada)
si
i p = 0 entonces
t
devolver(c)
si_no
devolver(Insertar(Borrar(c,p,longitud(borrada)),p,sustituida)
fin_si
_
fin_función
24
Funciones de conversión
Función valor().
● Recibe como argumento una expresión de cadena y la convierte en un valor
numérico.
9 Si la conversión no es posible devuelve 0.
Función aCadena().
● Recibe como argumento una expresión numérica y la convierte en una cadena.
cadena
25
Funciones de conversión (II)
Función aCarácter().
● Devuelve el carácter correspondiente al código numérico que se
pasa como argumento según el juego de caracteres utilizado.
Función código().
g ()
● Devuelve el código numérico asociado al carácter que se pasa
como argumento.
26
Ejercicios
27
Ejercicios (II)
28