Las cadenas de caracteres son secuencias de caracteres con longitudes que varían desde 1 hasta los 255 caracteres. El tipo identificador de las cadenas es String. Cuando declaramos una variable de tipo string será posible introducir hasta 255 caracteres en ella, pero también es factible declarar cadenas más cortas agregando al momento de la declaración la longitud de la variable, por ejemplo:
VAR Mensaje : String[120]; {Longitud maxima = 120 caracteres} |
La comparación de cadenas es una operación muy común en Turbo Pascal; estas comparaciones se realizan con base en el orden del código ASCII, por ejemplo la cadena 'Prueba' es menor a la cadena 'prueba' ya que el valor del código ASCII de P es 80 y el de p es 112.
Así también podemos diferenciar las cadenas con respecto a su tamaño: 'Hola' es menor a 'Bienvenido'
Existe un caso especial de una cadena, que es cuando no tiene ningún caracter en ella, en ese momento decimos que es una cadena nula o vacía. Se recomienda ampliamente inicializar todos los valores de las cadenas a cadenas nulas al inicio del programa, ya que podrían contener datos extraños e indeseables.
Es posible leer cada elemento de una cadena por separado, por ejemplo, si en la variable Calle almacenamos la cadena 'Hidalgo' es posible asignar a otra cadena el valor de Calle[x] donde x es el caracter de la cadena que se quiere leer, así también es posible visualizar el caracter en pantalla usando la instrucción WriteLn. Ejemplo:
PROGRAM Caracter; VAR Calle : String; Letra : String; BEGIN Calle := 'Hidalgo'; WriteLn(Calle[2]); {Visualiza el segundo caracter de Calle} Letra := Calle[1]; {Guarda en Letra el primer caracter de Calle} WriteLn(Caracter) END. |
Para conocer la longitud de una cadena utilizamos la función Length, la longitud es la cantidad de caracteres que contiene la cadena en un momento determinado.
Su sintaxis es:
Length (cadena);
La función regresa un valor entero.
PROGRAM
Funcion_Length; VAR Cadena : String; BEGIN Cadena := 'Prueba de longitud'; WriteLn ('Longitud de la cadena: ', Length (Cadena)); END. |
El programa imprime en la pantalla un mensaje con la longitud de la cadena almacenada en memoria, en este caso específico 18.
En ocasiones es necesario combinar dos o más cadenas de caracteres en una sola, para lograr ésto utilizamos los siguientes métodos.
Es una de las formas más sencillas de unir dos cadenas y se maneja exactamente como una suma, la única limitante es que en caso de ser mayor la longitud resultante de la suma que la longitud que pueda manejar la variable en que se almacenará se truncarán los caracteres sobrantes. Ejemplo:
Cadena1 := 'Buenos
'; Cadena2 := 'dias '; Cadena3 := Cadena1 + Cadena2; WriteLn (Cadena3); |
Se imprimirá en la pantalla: 'Buenos dias'. (Notese que este ejemplo es solo una sección del programa, para ejecutarlo es necesario completar la estructura).
La función concat produce los mismos resultados que la concatenación, es posible incluir cualquier número de cadenas que se necesiten concatenar.
La suma de las cadenas no deberá sobrepasar la longitud que la variable, a la cual se asignará dicha suma, puede manejar. Ejemplo:
Cadena := Concat (Cad1, cad2, cad3);
Laa función Pos nos sirve para localizar una determinada cadena dentro de otra, en otras palabras para verificar si una cadena es subcadena de otra segunda.
Los parámetros que requiere son: la cadena que se buscará y la cadena donde se buscará la primera:
Pos (Cadena1, Cadena2);
Cuando encuentra la cadena la función devuelve su posición inicial, en caso de que no la encuentre devuelve el valor de 0.
Ejemplo:
Cadena := 'Domingo
Lunes Martes Miercoles Jueves Viernes Sabado'; WriteLn(Cadena); WriteLn(Pos('Lunes', Cadena)); {Muestra 9} WriteLn(Pos('Jueves', Cadena)); {Muestra 32} WriteLn(Pos('Ayer', Cadena)); {Muestra 0} |
La función copy regresa una subcadena de una variable o constante dada como parámetro. Su sintaxis es:
Copy (Cadena, Inicio, Cantidad);
Donde Cadena es la fuente de la subcadena, Inicio es la posición desde la cual se obtendrá la subcadena y Cantidad es el número de caracteres que se extraerán.
Los valores de Inicio y Cantidad deben ser de tipo entero.
Ejemplo:
Cadena :=
"Nuevos horizontes"; WriteLn (Copy(Cadena, 8, 10)); {Visualiza: horizontes} |
El procedimiento Insert sirve para insertar una cadena dentro de otra en alguna posición determinada. Sintaxis:
Insert (Cadena1, Cadena2, Posición)
Donde Cadena1 es la que se insertará, Cadena2 es donde se insertará y Posición es el lugar donde se insertará. El parámetro Posición debe ser de tipo entero.
Este procedimiento elimina un determinado número de caracteres de una cadena. Su sintaxis es:
Delete (Cadena, Inicio, Número)
Cadena es la variable en la cual se eliminarán los caracteres, Inicio es la posición del primer caracter a eliminar y Número es la cantidad de caracteres que se borrarán.
La función UpCase regresa la letra mayuscula correspondiente al caracter dado como parámetro. Es muy común trabajando con cadenas que se quiera convertir una que contiene un número a su valor numérico, para poder utilizarlo en operaciones matemáticas, así como convertir un número a su equivalente en una cadena.
Esto es más fácil de entender si consideramos que no es lo mismo el valor 75 y el valor '75', en el primer caso es un número mientras que en el segundo es un par de caracteres ASCII.
Para lograr estos cambios de tipo en Turbo Pascal utilizamos los procedimientos siguientes:
El procedimiento Str obtiene una cadena a partir de un valor numérico. Su sintaxis es:
Str(Valor, Cadena)
Donde valor es el número a convertir y Cadena es la variable donde se almacenará la cadena ya convertida.
Este procedimiento convierte una cadena en un valor de tipo numérico, el problema con esta función es que si la cadena no esta formada exclusivamente de números siguiendo las reglas para el tipo de datos que se vallan a obtener se generará un error. Sintaxis:
Val (Cad, Num, Código)
Cadena contiene la cadena que será procesada, Num es la variable de tipo numérico donde se guardará el valor de la cadena y Código es una variable de tipo entero (Integer) que contendrá el valor de 0 si no hubo errores y un valor diferente en caso de que no se haya podido convertir la cadena, el valor de Código representa la posición de la cadena donde ocurrio el error.