Cadenas (String)
Turbo Pascal proporciona el tipo string para el procesamiento de cadenas (secuencias
de caracteres ).
La definici�n de un tipo string debe especificar el n�mero m�ximo de caracteres que
puede contener, esto es, la m�xima longitud para las cadenas de ese tipo. La
longitud se especif�ca por una constante entera en el rango de 1 a 255.
El formato para definir un tipo string es :
= string [limite_superior];
Las variables de cadena se declaran en la secci�n Var o Type.
Declaraci�n en Var:
Var
nombre : string[30];
domicilio : string[30];
ciudad : string[40];
Declaraci�n en Type:
Type
cad30 : string[30];
cad40 : string[40];
Var
nombre : cad30;
domicilio : cad30;
ciudad : cad40;
Una Vez declaradas las variables se pueden realizar asignaciones u operaciones
de lectura/escritura.
nombre := 'Egrid Lorely Castro Gonzalez' ;
domicilio := 'Altamirano #220';
ciudad := 'La Paz B.C.S.';
El contenido de la cadena se debe encerrar entre ap�strofes. Si se desea que
figure un ap�strofe en una cadena, es preciso doblarlo en la cadena. Los
procedimientos de Entrada/Salida son de la siguiente forma :
ReadLn (nombre);
WriteLn('Hola ',nombre);
Longitud de una cadena
Las variables de tipo cadena pueden ocupar la m�xima longitud definida, m�s
un octeto que contiene la longitud actual de la variable. Los caracteres que
forman la cadena son numerados desde 1 hasta la longitud de la cadena.
Ejemplo:
Var
nombre : string[10];
begin
nombre := 'Susana';
end.

Obs�rvese que el primer byte no es el car�cter '6' si no el n�mero 6 en
binario (0000 0110) y los �ltimos bytes de la cadena hasta 10 (7-10)
contienen datos aleatorios.
Una cadena en Turbo Pascal tiene dos longitudes :
Longitud f�sica : Es la cantidad de memoria que ocupa realmente, est� se
establece en tiempo de compilaci�n y nunca cambia
Longitud l�gica : Es el n�mero de caracteres almacenados actualmente en la
varible cadena. Este dato puede cambiar durante la ejecuci�n del programa.
Es posible acceder a posiciones individuales dentro de una variable cadena,
mediante la utilizaci�n de corchetes que dentro de ellos se especif�ca el
n�mero indice dentro de la cadena a utilizar as� para el ejemplo anterior
se tiene :
nombre[1] ==> 'S'
nombre[2] ==> 'u'
nombre[3] ==> 's'
nombre[4] ==> 'a'
nombre[5] ==> 'n'
nombre[6] ==> 'a'
Operaciones entre cadenas
Las operciones b�sicas entre cadenas son : asignaci�n, comparaci�n y
concatenaci�n. Es posible asignar una cadena a otra cadena, incluso aunque
sea de longitud f�sica m�s peque�a en cuyo caso ocurrir�a un truncamiento
de la cadena.
Ejemplo:
Var
nombre : String[21];
.
.
.
nombre := 'Instituto Tecnol�gico de La Paz';
El resultado de la asignaci�n en la variable nombre ser� la cadena
'Instituto Tecnol�gico'.
Las comparaciones de las cadenas de caracteres se hacen seg�n el orden de
los caracteres en el c�digo ASCII y con los operadores de relaci�n.
'0' < '1' '2' > '1' 'A' < 'B' 'm' > 'l'
Reglas de comparaci�n de cadenas
Las dos cadenas se comparan de izquierda a derecha hasta que se encuentran
dos caracteres diferentes. El orden de las dos cadenas es el que corresponde
al orden de los dos caracteres diferentes. Si las dos cadenas son iguales
pero una de ella es m�s corta que la otra, entonces la m�s corta es menor
que la m�s larga.
Ejemplo :
'Alex' > 'Alas'
{puesto que 'e' > 'a'}
'ADAN' < 'adan'
{puesto que 'A' < 'a'}
'Damian' < 'Damiana'
{'Damian' tiene menos caracteres que 'Damiana'}
'El gato' < 'Los gatos'
{puesto que (blanco) < 's'}
Otra operaci�n b�sica es la concatenaci�n. La concatenaci�n es un proceso
de combinar dos o m�s cadenas en una sola cadena. El signo + se puede usar
para concatenar cadenas ( al igual que la funci�n concat ), debiendo
cuidarse que la longitud del resultado no sea mayor que 255.
Ejemplos :
'INSTITUTO '+'TECNOLOGICO'='INSTITUTO TECNOLOGICO'
'CONTAB'+'.'+'PAS'= 'CONTAB.PAS'
Se puede asignar el valor de una expresi�n de cadena a una variable cadena,
por ejemplo :
fecha := 'lunes';
y utilizar la variable fecha en :
frase:='El pr�ximo '+fecha+' inician las clases';
Si la longitud m�xima de una cadena es excedida, se pierden los caracteres
sobrantes a la derecha. Por ejemplo, si fecha hubiera sido declarada del
tipo string[7], despu�s de la asignaci�n contendr�a los siete primeros
caracteres de la izquierda (CENTENA).
PROCEDIMIENTOS Y FUNCIONES DE CADENA INTERNOS
Turbo Pascal incorpora las siguientes funciones y procedimientos para el
tratamiento de cadenas.
Procedimientos y funciones de cadena
Procedimiento Funci�n
Delete Concat
Insert Copy
Str Length
Val Pos
Procedimiento Delete
Delete borra o elimina una subcadena de una cadena contenida en otra
cadena de mayor longitud.
Formato :
Delete (s, posici�n, n�mero)
S Cadena original o fuente
Posici�n Expresi�n entera que indica la posici�n
del primer car�cter a suprimir.
N�mero Cantidad de caracteres a suprimir.
Si posici�n es mayor que la longitud de la cadena, no se borra ning�n
car�cter. Si n�mero especif�ca m�s caracteres que los existentes desde
la posici�n inicial hasta el final de la cadena, s�lo se borran tantos
caracteres como est�n en la cadena.
Ejemplo :
Cad := 'Tecnol�gico'
Delete(cad,1,5)
Resulta la cadena 'l�gico'
Procemiento Insert
Insert inserta una subcadena en una cadena.
Formato :
Insert (cad1, s, posici�n)
cad1 cadena a insertar
s cadena donde se inserta
posici�n car�cter a partir del cual se inserta
Ejemplo:
cad:= 'M�xico '
Insert (' lindo y querido',cad,7)
Resulta 'M�xico lindo y querido'
Procedimiento Str
Este procedimiento efect�a la conversi�n de un valor n�merico en una
cadena.
Formato :
Str (valor,s)
Valor expres�on n�merica
s cadena
Ejemplos :
Numero := 235.55;
Str(Numero,cadena);
Write(cadena);
Resulta la cadena '2.355000000E+02'
Numero := 12345;
Str(Numero,cadena);
Write(cadena);
Resulta la cadena '12345'
Numero := 12345;
Str(Numero+1000:10,cadena);
Write(cadena);
Resulta la cadena ' 13345'
Procedimiento Val
Este procedimiento convierte una cadena en variable n�merica. Para que
esta conversi�n sea efectiva, el contenido de la cadena de caracteres
debe corresponderse a las reglas de escritura de n�meros: no debe de
existir ning�n blanco en la primera o �ltima posici�n.
Formato:
Val (S, variable, c�digo)
S cadena
Variable variable de tipo entero o real
c�digo si la conversi�n ha podido ser
efectuada toma el valor cero; en
caso contrario contiene la primera
posici�n del primer car�cter de la
cadena S que impide la conversi�n
y en ese caso variable no queda definida
Ejemplo:
Var
cad : string[10];
num1,codigo : integer;
num2 : real;
begin
cad:='22.25';
Val(cad,num2,codigo);
if codigo=0 then
WriteLn(num2:2:2)
{Produce 22.25}
else
WriteLn(codigo);
cad:='12x45';
Val(cad,num1,codigo);
if codigo=0 then
WriteLn(num1)
else
WriteLn(codigo)
{Produce 3}
end.
Funci�n Concat
Adem�s del uso de '+' para la concatenaci�n, Turbo Pascal tiene la funci�n
concat que permite concatenar una secuencia de caracteres.
Formato:
Concat (S1,S2,...,Sn)
S1,S2...cadenas o variables de
caracteres (expresi�n tipo cadena)
Ejemplo :
Var
cad1,cad2 : string[20];
destino : string[50];
begin
cad1:='Hola como ';
cad2:='Estas ';
destino:=Concat(cad1,cad2,', estoy bien')
end.
Esto produce una cadena destino igual a 'Hola como estas, estoy bien'
Funci�n Copy
Esta funci�n devuelve una cadena de caracteres (subcadena) extra�da de
una cadena.
Formato:
Copy(s,posici�n,n�mero)
s cadena (fuente)
posici�n primer car�cter a extraer (tipo entero)
n�mero total de caracteres a extraer (tipo entero)
Si posici�n es mayor que la longitud de S, se devuelve una cadena vac�a;
si n�mero especif�ca m�s caracteres que los indicados desde posici�n,
s�lo se devuelve el resto de la cadena.
Ejemplo:
cad := 'Instituto Tecnol�gico de La Paz';
cad2 := Copy(cad,26,6);
Write(cad2);
Lo que produce la cadena 'La Paz' contenida en cad2.
Funci�n Lenght (longitud)
La funci�n Lenght proporciona la longitud l�gica de una cadena de
caracteres y devuelve un valor entero.
Formato :
Length (s)
s expresi�n tipo cadena
Ejemplo :
Var
cad : string[20];
begin
cad:='Hola';
WriteLn(Length ('Hola como estas'));
{devuelve el valor 15}
WriteLn(Length (''));
{devuelve cero (cadena vac�a)}
WriteLn(Length (cad));
{devuelve el valor 4}
WriteLn(Ord(cad[0]))
{devuelve el valor 4}
end.
Funci�n Pos
Esta funci�n permite determinar si una cadena est� contenida en otra.
En este caso, la funci�n devuelve la posici�n donde comienza la cadena
buscada en la cadena fuente, si la cadena no existe, se devuelve el
resultado 0.
Formato :
Pos (cadena buscada, cadena fuente)
Ejemplo:
cad:= 'uno dos tres cuatro cinco seis';
WriteLn(Pos('dos',cad));
{Resulta 5 que es la posici�n de 'd'}
WriteLn(Pos('ocho',cad));
{Resulta 0 no existe la cadena 'ocho'}
|