Introducción a la Programación
Universidad Nacional de Luján
#CLASE 10: Tipo de dato String
OBJETIVO
En esta clase se avanza sobre el tipo de dato string: su concepto, la forma de declarar este tipo de
dato, su forma de acceso y manipulación así como también alguna de las funciones provistas por el
lenguaje y su utilización en diferentes situaciones.
CONTENIDOS DE LA CLASE
#10.1 El tipo de datos string
Cuando hablamos de tipos de datos simples, hicimos mención al tipo de dato caracter y lo
definimos como un único símbolo alfanumérico compuesto por letras, dígitos y símbolos
especiales. Algunos ejemplos de caracteres son los que siguen:
• Letras minúsculas y mayúsculas: 'a', 'b', 'A', 'Z', etc.
• Dígitos: '1', '2', etc.
• Caracteres especiales: '!', '@', '#', etc.
Pero el tipo de dato caracter es solo uno de los símbolos antes presentados. En cambio, un string
es un conjunto de esos caracteres, que puede variar en su longitud entre 0 y 255 posiciones.
Un tipo de dato string es una sucesión de caracteres que se almacenan en un área contigua de la
memoria y que puede ser leido o escrito. Por consiguiente, un string representa un dato de
tamaño dado que resulta de la concatenación de los caracteres que lo forman.
La declaración de este tipo de datos se realiza de la siguiente manera:
program ejemplo;
uses crt;
var
ejemplo1: string[10];
ejemplo2: string;
…
…
Introducción a la Programación
Universidad Nacional de Luján
Como se observa en las definiciones anteriores, existe dos formas de definirlo:
• Estableciendo el límite máximo, entre corchetes, de caracteres que pueden constituir
nuestra variable; en la variable ejemplo1 por ejemplo el límite máximo para nuestra
variable es 10;
• Sin establecer un límite máximo, prescindiendo de los corchetes, en cuyo caso el máximo
quedará establecido en 255.
Una vez que definimos una variable de tipo string, existen dos formas de asignarle un valor:
• Mediante la instrucción readln(): En este caso el usuario por teclado establece el
contenido de la variable; Por ejemplo: readln(frase) donde frase es una variable de tipo de
dato string;
• Mediante la asignación a una variable del tipo string del contenido utilizando comillas
simples ('); Por ejemplo: frase := 'Hoy es un día de sol';
A continuación vemos un ejemplo en Pascal que utiliza ambas variantes al mismo tiempo que
define este tipo de dato de la forma antes explicada:
Figura 49. Ejemplo de asignación de valores a una variable string
Introducción a la Programación
Universidad Nacional de Luján
#10.2 Manipulación de strings
Como dijimos al principio, un string es, básicamente, una sucesión de caracteres. Una de las
propiedades de los string que hace a este tipo de datos interesante es que esa sucesión de
caracteres está indexada, y se puede acceder a cada uno de sus caracteres de forma particular a
través de un índice o de forma integral a través del nombre de la variable.
Supongamos que contamos con una variable del tipo string:
cadena := 'Hola Mundo';
Podríamos imaginarnos a esta cadena de caracteres como un conjunto de casilleros numerados,
donde cada carácter puede ser accedido a través de su número correspondiente. Lo graficamos de
la siguiente manera:
H o l a M u n d o
1 2 3 4 5 6 7 8 9 10
De este modo, la posición 3 del string, por ejemplo, está ocupada por el caracter “l”. Ahora bien,
como se referencia esto en Pascal? Utilizando el nombre de la variable e incorporando, entre
corchetes el índice al cual queremos acceder: cadena[3]; entonces, si escribimos la instrucción
Writeln(cadena[3]), nuestro programa mostraría una “l”; y si por el contrario escribimos por
pantalla la instrucción Writeln(cadena), nuestro programa mostraría 'Hola mundo'.
De la misma forma, nosotros podríamos recorrer un string e ir accediendo a los caracteres que
componen ese string uno a uno, con una estructura iterativa, como la que sigue:
program ejemplo_recorrer_string;
var
cadena: string[10];
begin
For i:=1 to 50 do
Writeln('Posicion ', i, ': ', cadena[i]);
end.
Introducción a la Programación
Universidad Nacional de Luján
Ahora bien, hagamos un ejercicio en Pascal que nos ayudará a entender, de manera práctica las
distintas formas de acceso a una variable de tipo string y alguna de sus posibilidades que iremos
ampliando en esta clase:
Enunciado:
Ingresar por teclado una cadena de caracteres y:
• Mostrar la cadena en una única linea de texto,
• Mostrar uno a uno los caracteres que componen la cadena,
• Informar la cantidad de letras 'a' (minúsculas).
Resolución en Pascal:
Figura 50. Ejemplo de programa Pascal que utliza string's
Observamos en el programa algunas cuestiones interesantes:
• En la estructura For se utiliza una función provista por Pascal llamada length(). Esta
función permite pasarle como parámetro una cadena de caracteres y devuelve la longitud de
Introducción a la Programación
Universidad Nacional de Luján
la misma. De esta manera el programa “sabe” hasta cuando debe iterar de acuerdo a la
longitud del string.
• Es posible realizar comparaciones por igualdad (también otro tipo de comparaciones que
veremos mas adelante). Es importante hacer notar que la comparación es case sensitive, lo
cual quiere decir que encuentra diferentes la letra 'a' de la 'A'.
Previo a pasar al siguiente apartado, es importante que quede claro que expresiones como las que
siguen son equivalentes, suponiendo que ambas variables (frase1 y frase2) están declaradas como
un string[10]:
frase1 := 'Hola mundo';
frase2[1] := 'H';
frase2[2] := 'o';
frase2[3] := 'l';
frase2[4] := 'a';
frase2[5] := ' ';
frase2[6] := 'M';
frase2[7] := 'u';
frase2[8] := 'n';
frase2[9] := 'd';
frase2[10] := 'o';
Las variables frase1 y frase2 contienen el mismo texto, el cual puede ser asignado carácter a
carácter o de una sola vez.
Introducción a la Programación
Universidad Nacional de Luján
#10.3 Operadores relacionales y funciones provistas por el lenguaje
Los operadores relacionales que venimos utilizando para comparar valores numéricos, también son
válidos para la comparación de strings, pero merecen una consideración especial. A continuación
se explica la lógica de cada uno de ellos:
OPERADOR EXPLICACIÓN
Si las cadenas que se comparan son de igual longitud y contienen los mismos
símbolos, en el mismo orden, el resultado es verdadero. Ahora bien, si tienen
“=”
distinta longitud y se le ha asignado distinta cantidad de simbolos, la
comparación es falsa.
“<>” Es el caso opuesto al anterior.
Cada uno de ellos actúa comparando símbolo a símbolo de acuerdo a su
aparición en el código ASCII (se adjunta una tabla ASCII para su
verificación), hasta poder determinar un resultado para el operador. De esta
“>, <, >=, <=”
forma, es válido comparar el string 'pepe' contra 'pipo'; el resultado, en este
caso será que 'pipo' es mayor que 'pepe' debido a que la letra 'i' aparece luego
que la 'e'.
Asimismo, existe un conjunto de funciones predefinidas para operar sobre tipos de datos string. A
continuación se presentan las principales:
TIPO DE DATO TIPO DE DATO
FUNCIÓN (SINTAXIS) DESCRIPCIÓN
ARGUMENTO RESULTADO
Retorna una porción de la
Cadena: string
cadena que comienza en
Copy(cadena, posicion, cantidad) posicion: integer String
posición y tiene como largo
cantidad: integer
cantidad.
Devuelve la longitud del string
Length(string) (cantidad de caracteres distinto String Integer
de nulo)
Retorna la posición de
comienzo del string_1 dentro
Pos(string_1, string_2) String Integer
del string_2
(si string_1 no existe retorna 0)
Retorna la concatenación de
Concat(string_1, string_2, …) todos los string's que pasan String String
como parámetro.
Introducción a la Programación
Universidad Nacional de Luján
Ejercicios propuestos
1. Ingresar por teclado una cadena de caracteres, validando que no exceda los 50 caracteres.
Informar si la cadena ingresada forma un palíndrome.
2. Ingresar una cadena de caracteres por teclado e imprimir en pantalla la cantidad de vocales
que tiene la cadena, utilizando para ello una función.
3. Ingresar una cadena de caracteres y verificar si posee todas las vocales.
4. Escribir una función que convierta una letra minúscula a mayúscula (utilizar las funciones
predefinidas chr() y ord()).
5. Escribir un procedimiento que reciba un string y lo retorne con la letra inicial de cada
palabra en mayúscula.
6. Ingresar una cadena de caracteres y desarrollar una función que ponga una letra mayúscula
luego del carácter “.”.
7. Ingresar una cadena de caracteres y un carácter. Luego, cuente y elimine todas las
apariciones en la cadena del carácter ingresado.
8. Ingresar mediante una cadena de caracteres una fecha con el formato “DD-MM-AAAA”.
Luego desarrolle un procedimiento que devuelva el día, el mes y el año por separado.
Introducción a la Programación
Universidad Nacional de Luján
ANEXO I – TABLA ASCII
Código ASCII Símbolo Significado
0 NULL (carácter nulo)
1 SOH (inicio encabezado)
2 STX (inicio texto)
3 ETX (fin de texto)
4 EOT (fin transmisión)
5 ENQ (enquiry)
6 ACK (acknowledgement)
7 BEL (timbre)
8 BS (back space o retroceso)
9 HT (tabulador horizontal)
10 LF (salto de linea)
11 VT (tabulador vertical)
12 FF (form feed)
13 CR (retorno de carro)
14 SO (shift Out)
15 SI (shift In)
16 DLE (data link escape)
Introducción a la Programación
Universidad Nacional de Luján
Código ASCII Símbolo Significado
17 DC1 (device control 1)
18 DC2 (device control 2)
19 DC3 (device control 3)
20 DC4 (device control 4)
21 NAK (negative acknowledgement)
22 SYN (synchronous idle)
23 ETB (end of trans. block)
24 CAN (cancel)
25 EM (end of medium)
26 SUB (substitute)
27 ESC (escape)
28 FS (file separator)
29 GS (group separator)
30 RS (record separator)
31 US (unit separator)
32 (espacio en blanco)
33 ! (signo de admiracion)
34 " (comillas dobles)
35 # (numeral)
36 $ (signo pesos)
37 % (por ciento)
38 & (anpersand)
39 ' (comilla simple)
40 ( (abre parentesis)
41 ) (cierra parentesis)
42 * (asterisco)
43 + (signo mas)
44 , (coma)
45 - (signo menos)
46 . (punto)
Introducción a la Programación
Universidad Nacional de Luján
Código ASCII Símbolo Significado
47 / (barra inclinada)
48 0 (cero)
49 1 (uno)
50 2 (dos)
51 3 (tres)
52 4 (cuatro)
53 5 (cinco)
54 6 (seis)
55 7 (siete)
56 8 (ocho)
57 9 (nueve)
58 : (dos puntos)
59 ; (punto y coma)
60 < (mayor que )
61 = (igual que)
62 > (menos que)
63 ? (cierra signo interrogacion)
64 @ arroba
65 A (letra A mayuscula)
66 B (letra B mayuscula)
67 C (letra C mayuscula)
68 D (letra D mayuscula)
69 E (letra E mayuscula)
70 F (letra F mayuscula)
71 G (letra G mayuscula)
72 H (letra H mayuscula)
73 I (letra I mayuscula)
74 J (letra J mayuscula)
75 K (letra K mayuscula)
76 L (letra L mayuscula)
77 M (letra M mayuscula)
Introducción a la Programación
Universidad Nacional de Luján
Código ASCII Símbolo Significado
78 N (letra N mayuscula)
79 O (letra O mayuscula)
80 P (letra P mayuscula)
81 Q (letra Q mayuscula)
82 R (letra R mayuscula)
83 S (letra S mayuscula)
84 T (letra T mayuscula)
85 U (letra U mayuscula)
86 V (letra V mayuscula)
87 W (letra W mayuscula)
88 X (letra X mayuscula)
89 Y (letra Y mayuscula)
90 Z (letra Z mayuscula)
91 [ (abre corchetes)
92 \ (barra invertida)
93 ] (cierra corchetes)
94 ^ (circunflejo)
95 _ (guion bajo)
96 ` (acento grave)
97 a (letra a minuscula)
98 b (letra b minuscula)
99 c (letra c minuscula)
100 d (letra d minuscula)
101 e (letra e minuscula)
102 f (letra f minuscula)
103 g (letra g minuscula)
104 h (letra h minuscula)
105 i (letra i minuscula)
106 j (letra j minuscula)
107 k (letra k minuscula)
108 l (letra l minuscula)
Introducción a la Programación
Universidad Nacional de Luján
Código ASCII Símbolo Significado
109 m (letra m minuscula)
110 n (letra n minuscula)
111 o (letra o minuscula)
112 p (letra p minuscula)
113 q (letra q minuscula)
114 r (letra r minuscula)
115 s (letra s minuscula)
116 t (letra t minuscula)
117 u (letra u minuscula)
118 v (letra v minuscula)
119 w (letra w minuscula)
120 x (letra x minuscula)
121 y (letra y minuscula)
122 z (letra z minuscula)
123 { (abre llaves)
124 | (barra vertical)
125 } (cierra llaves)
126 ~ (tilde)
127 DEL (borrar o delete)