Fundamentos de Programación I
Fundamentos de Programación I
Tema 7 Cadenas de caracteres
Tema 7. Cadenas de caracteres
Luís Rodríguez Baena (
[email protected])
Universidad Pontificia de Salamanca (campus Madrid)
Escuela Superior de Ingeniería y Arquitectura
1
Datos alfanuméricos
Dos tipos de datos definidos para trabajar con
p
p
información no numérica ni booleana:
● Carácter.
● Cadena.
j
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
● Asignación de un código numérico a cada 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
● Al conjunto de caracteres con los que puede trabajar un
ordenador se le denomina juego de caracteres.
Universidad Pontificia de Salamanca (Campus Madrid)
Luis Rodríguez Baena, Escuela Superior de Ingeniería y Arquitectura, 2011
2
2
El juego de caracteres
El juego de caracteres ASCII (American Standard Code
j g
(
for Information Interchange).
● Utiliza un byte de información.
Se utilizan 7 bits para representar el carácter.
p
p
● Sólo es posible representar 128 caracteres, del 0 al 127.
Del carácter 0 a 32: caracteres de control (retorno de carro,
tabulación, final de archivo, carácter nulo, etc.).
á
48 l 57 l
D l
d l 0 l 9
Del carácter 48 al 57 los dígitos del 0 al 9.
Del carácter 65 al 90 los caracteres alfabéticos en mayúsculas.
Del carácter 97 al 122 los caracteres alfabéticos en minúsculas.
El resto de posiciones lo ocupan caracteres especiales como el
El resto de posiciones lo ocupan caracteres especiales como el
dí
i
espacio en blanco, la coma, el punto, operadores aritméticos, etc.
● Los caracteres alfabéticos están restringidos a los que se utilizan
en el idioma inglés.
g
Universidad Pontificia de Salamanca (Campus Madrid)
Luis Rodríguez Baena, Escuela Superior de Ingeniería y Arquitectura, 2011
3
3
El juego de caracteres (II)
Juego de caracteres ASCII extendido.
g
● Soluciona estas restricciones permitiendo la representación de
caracteres regionales.
● Utiliza los 8 bits para representar todos los caracteres.
Los caracteres de 32 al 126 utilizan los caracteres imprimibles ASCII
estándar, así cómo los códigos de control 8 a 13.
Los códigos superiores a 127 se utilizan para representar los
caracteres ampliados
caracteres ampliados.
● Existen distintas codificaciones para esos caracteres ampliados:
Página de códigos 437 (para las versiones en inglés de MS-DOS).
Página de códigos 850 (para las versiones de Europa occidental de
Página de códigos 850 (para las versiones de Europa occidental de
MS-DOS)
Universidad Pontificia de Salamanca (Campus Madrid)
Luis Rodríguez Baena, Escuela Superior de Ingeniería y Arquitectura, 2011
4
4
El juego de caracteres (III)
El juego de caracteres EBCDIC (Extended BinaryCodedDecimal
InterchangeCode).
● Desarrollado en los años 60 por IBM.
● Utiliza 8 bits por carácter: 256 caracteres posibles.
● Distribuye los caracteres de forma distinta: minúsculas, mayúsculas y
ú
ú
dígitos.
Juego de caracteres Unicode.
Puede utilizar hasta cuatro bytes para almacenar cada carácter
● Puede utilizar hasta cuatro bytes para almacenar cada carácter.
● Asigna un número a cada posible carácter de cada idioma.
Cubre casi todas las escrituras actuales (escrituras orientales, braille, cheroke…).
● Admite distintas codificaciones UTF-7 UTF-8 UTF-16 y UTF-32
● Admite distintas codificaciones UTF 7, UTF 8, UTF 16 y UTF 32.
El sistema de archivos NTFS de Windows utiliza UTF-16.
El juego de caracteres Unicode ISO-8859-1 o Latin-1 es el utilizado en Europa
Occidental.
i
E
ASCII
En sus primeros 127 caracteres se corresponde con el código ASCII.
l ódi
127
d
t
Universidad Pontificia de Salamanca (Campus Madrid)
Luis Rodríguez Baena, Escuela Superior de Ingeniería y Arquitectura, 2011
5
5
Cadenas de caracteres
Dato de tipo carácter.
● Un único carácter del juego de caracteres utilizado.
En algunos lenguajes se asimila a un dato de tipo entero correspondiente al
código numérico del carácter.
● Una constante de tipo carácter estaría formada por un carácter encerrado
entre comillas.
Por ejemplo, 'C', '~', '1'.
La función aCarácter() devuelve el carácter correspondiente al código que
o Por ejemplo, aCarácter(13) devolvería el carácter correspondiente al retorno de
pasamos entre paréntesis.
á
í
carro.
Datos de tipo cadena.
● Un conjunto de caracteres del juego de caracteres que se esté utilizando.
● El lenguaje algorítmico UPSAM considera compatibles las cadenas y los
caracteres.
Es posible asignar cadenas a caracteres o viceversa, se pueden comparar datos
de tipo cadena con datos de tipo carácter, etc.
o Esto no ocurre en otros lenguajes como Java o C.
Universidad Pontificia de Salamanca (Campus Madrid)
Luis Rodríguez Baena, Escuela Superior de Ingeniería y Arquitectura, 2011
6
6
Cadenas de caracteres (II)
Constante de cadena.
t
i d
Carácter nulo.
● Una serie de caracteres delimitados por el separador de cadenas que
U
puede ser la comilla simple o doble.
it d
d li
d
d
l
d
● El carácter correspondiente al código 0.
g
p
Es un carácter válido aunque no imprimible.
Es distinto del espacio en blanco.
o El espacio en blanco tiene un código ASCII 32.
Cadena nula.
Cade a u a
● Cadena que sólo contiene un carácter nulo.
Tiene longitud 0.
Subcadena.
● Un fragmento de una cadena principal.
Un fragmento de una cadena 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).
Universidad Pontificia de Salamanca (Campus Madrid)
Luis Rodríguez Baena, Escuela Superior de Ingeniería y Arquitectura, 2011
7
7
Variables de tipo cadena
Las cadenas se consideran un tipo de dato estándar.
● La declaración de una variable de tipo cadena se realizaría
p
utilizando la palabra reservada cadena.
cadena : nombre, apellidos
var
var
En el lenguaje algorítmico UPSAM no es necesario especificar la
longitud de la cadena.
longitud de la cadena.
Dependiendo de la forma de almacenamiento en
á
memoria las cadenas pueden ser:
● Estáticas.
● Semiestáticas.
● Dinámicas.
Universidad Pontificia de Salamanca (Campus Madrid)
Luis Rodríguez Baena, Escuela Superior de Ingeniería y Arquitectura, 2011
8
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 que utiliza C
q
o Pascal.
Las cadenas estarían
formadas por un array de
caracteres que se trata de
forma especial
forma especial.
o En Pascal, el tamaño se
limita a 255 caracteres y el
elemento 0 del array
contendría el número de
caracteres
caracteres.
o En C la longitud máxima
está indefinida y el último
carácter sería el carácter
nulo (\0).
Declaración en Pascal
var
...
cad : string[9];
g[ ];
cad := 'hola';
Declaración en C
...
char car[9];
char *nombre;
cad = “hola”;
nombre = “Pepe”;
Universidad Pontificia de Salamanca (Campus Madrid)
Luis Rodríguez Baena, Escuela Superior de Ingeniería y Arquitectura, 2011
9
9
Variables de tipo cadena (III)
Cadenas semiestáticas (o semidinámicas).
)
(
● Cadenas de longitud variable con un tamaño máximo.
Su tamaño no se establece en la declaración: aumenta o disminuye
según las necesidades.
● BASIC utiliza este modelo: presenta cadenas de longitud variable
con un tamaño máximo de 32.767 caracteres.
Cadenas estáticas.
● Cadenas de longitud totalmente variable.
Se almacenen en forma de lista enlazada y los caracteres estarían
dispersos por la memoria.
Universidad Pontificia de Salamanca (Campus Madrid)
Luis Rodríguez Baena, Escuela Superior de Ingeniería y Arquitectura, 2011
10
10
Variables de tipo cadena (IV)
En el lenguaje algorítmico UPSAM la forma de
g j
g
almacenamiento no es importante.
● No hay que declarar el tamaño.
● Es posible tratar la cadena:
● Es posible tratar la cadena:
Como un conjunto de caracteres mediante el nombre de la variable.
Los caracteres individuales como si fueran elementos de un array.
Ej
Ejemplo: Escribir la cadena 'HOLA' al revés:
'HOLA'
ibi
d
l
é
l
l
E
var
cadena : c
entero : i
...
c 'HOLA'
desde i 4 hasta 1 incremento -1 hacer
fin desde
fin_desde
...
escribir(c[i])
Universidad Pontificia de Salamanca (Campus Madrid)
Luis Rodríguez Baena, Escuela Superior de Ingeniería y Arquitectura, 2011
11
11
Operaciones con cadena
Instrucciones de asignación y entrada/salida.
● Funcionan igual que con cualquier otro tipo de dato estándar.
á
Operaciones de relación.
● Comparan el código de los caracteres que forman el carácter o la cadena.
La expresión 'A' < 'B' compara el código de la A (65) con el de la B (66).
)
p
p
g
(
)
(
o La expresión sería verdadera porque 65 < 66.
Es importante saber el orden de la codificación del juego de caracteres que se esté
utilizando.
o En ASCII
– 1º Dígitos
– 1º Dígitos.
– 2º Mayúsculas ordenadas de menor a mayor.
– 3º Minúsculas ordenadas de menor a mayor.
– 4º Caracteres especiales y regionales (ñ, Ñ, vocales acentuadas, etc.).
● La comparación de cadenas compara uno por uno y de izquierda a derecha los
ódi
códigos de cada uno de los caracteres de las cadenas de la operación.
El proc
Comentarios de: Tema 7. Cadenas de caracteres - Fundamentos de Programación I (0)
No hay comentarios