Publicado el 22 de Agosto del 2018
1.303 visualizaciones desde el 22 de Agosto del 2018
924,7 KB
70 paginas
Creado hace 15a (14/11/2009)
2.2 y 2.3 Datos Estructurados y Arreglos en Pascal
TIPOS ESTRUCTURADOS: En Pascal, se pueden definir , a partir de los datos simples, otros tipos
más complejos conocidos como tipos estructurados.
Cuando se declara una variable como de un tipo estructurado, se puede manipular la estructura completa, o
bien trabajar con los datos individuales que la forman.
A continuación, se describirán los diferentes tipos estructurados que pueden manejarse en Pascal.
• Cadenas (String)
• Arreglos (Array)
• Registros (Record)
• Conjuntos (Set)
• Archivos
TIPO CADENAS (strings) : 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 :
<identificador> = string [limite_superior];
Las variables de cadena se declaran en la sección Var o Type.
Declaración en Var:
Var
: string[30];
nombre
domicilio : string[30];
ciudad : string[40];
: string[30];
: string[40];
Declaración en Type:
Type
cad30
cad40
Var
nombre
: cad30;
domicilio : cad30;
ciudad : cad40;
Una Vez declaradas las variables se pueden realizar asignaciones u operaciones de lectura/escritura.
:= 'Egrid Lorely Castro Gonzalez' ;
nombre
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);
Página 25 de 25
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 :
1. Longitud física : Es la cantidad de memoria que ocupa realmente, está se establece en tiempo de
compilación y nunca cambia
2. 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';
resultado
El
de
'Instituto Tecnológico'.
la
asignación
en
la
variable
nombre
será
la
cadena
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'
'A' < 'B'
'2' > '1'
'm' > 'l'
Página 28 de 28
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'}
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
Delete
Insert
Str
Val
Función
Concat
Copy
Length
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)
Cadena original o fuente
S
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.
Página 29 de 28
Ejemplo :
Cad := 'Tecnológico'
Delete(cad,1,5)
Resulta la cadena 'lógico'
Procedimiento Insert
Insert inserta una subcadena en una cadena.
Formato :
Insert (cad1, s, posición)
cadena a insertar
cad1
s
posición carácter a partir del cual se inserta
cadena donde 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 :
Ejemplos :
Str (valor,s)
Valor expresíon númerica
s
cadena
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)
cadena
S
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
Página 30 de 28
Ejemplo:
Var
: real;
: string[10];
cad
num1,codigo : integer;
num2
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:
S1,S2...cadenas o variables de
caracteres (expresión tipo cadena)
Concat (S1,S2,...,Sn)
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)
cadena (fuente)
s
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)
Página 29 de 29
La función Lenght proporciona la longitud lógica de una cadena de caracteres y devuelve un valor entero.
Formato :
Ejemplo :
Length (s)
s expresión tipo cadena
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'}
Arreglos (array)
Un arreglo está formado por un número fijo de elementos contíguos de un mismo tipo. Al tipo se le llama
tipo base del arreglo. Los datos individuales se llaman elementos del arreglo.
Para definir un tipo estructurado arreglo, se debe especificar el tipo base y el número de elementos.
Un array se caracteríza por :
1. Almacenar los elementos del array en posiciones de memoria contínua
2. Tener un único nombre de variable que representa a todos los elementos, y éstos a su vez se
diferencían por un índice o subíndice.
3. Acceso directo o aleatorio a los el
Comentarios de: 2.2 y 2.3 Datos Estructurados y Arreglos en Pascal (0)
No hay comentarios