Tipo String

Anuncio
UTN – FRRo
Algoritmos y Estructuras de Datos
Cadenas de caracteres – Tipo String
TIPO STRING:
En el Pascal estándar para el manejo de información que viene expresada por
palabras, como por ejemplo apellido, nombre, calle, etc. se usan arreglos de
caracteres
También empleamos estos arreglos cuando debemos trabajar con datos numéricos,
sobre los que no corresponde realizar operaciones como por ejemplo: número de
teléfono, DNI.
Es frecuente ver en los programas declaraciones como las siguientes:
TYPE
palabra= array[1..20] of char;
…..
VAR
nombre, calle, telefono : palabra;
o utilizando la declaración implícita de tipo el equivalente:
VAR
nombre, calle, telefono : array[1..20] of char
El uso de dicho tipo de datos para almacenar textos es tan usual que muchos
lenguajes agregan un nuevo tipo de datos, para facilitar el tratamiento de estas
cadenas de caracteres.
Turbo Pascal ofrece el tipo de dato string, con una variedad de funciones y
procedimientos específicos, que tornan muy cómodo su tratamiento
Básicamente el string es un arreglo de caracteres.
Al definirlo podemos establecer su longitud (número máximo de caracteres que va a
poder contener desde 1 hasta 255 caracteres.
Como se declara:
Se declara con la palabra clave string seguida por un par de corchetes encerrando la
máxima longitud prevista de la cadena.
Por omisión, si este número no se declara, se entiende que es 255.
TYPE
cad20 = string [20];
cad25 = string [25];
cad = string;
VAR
apellido : cad20;
nombre : cad25;
titulo: cad;
O, en forma equivalente:
VAR
apellido : string [20];
nombre : string [25];
titulo: string;
En los programas en que se declara este tipo de variables de cadena se pueden
realizar asignaciones, comparaciones, lecturas, salidas y otras operaciones en una
forma muy directa, debido a que el Turbo Pascal permite a al tipo string ciertas
funcinalidades similares a la de los tipos simples.
Pag. 1 de 4
M. Iwanow- R.Kantor
UTN – FRRo
Algoritmos y Estructuras de Datos
Cadenas de caracteres – Tipo String
Longitud de una cadena:
Se consideran dos longitudes: una lógica y una física.
La longitud lógica es la cantidad de caracteres que efectivamente están guardados en
el string.
La longitud física en bytes es igual al número de caracteres con que fue creada más
uno.
La longitud física aumenta en uno pues se agrega un primer elemento para guardar en
el la longitud lógica.
Sea por ejemplo una declaración:
VAR
flor : string[15];
Y se realiza la asignación :
flor := ‘roSa’
La longitud lógica de la variable será de 4 caracteres y la longitud física será de 16
bytes pues así fue definida.
En memoria :
4
r
o
flor
S
a
Existe un caso especial de una cadena, que es cuando no tiene ningún carácter en
ella, en ese momento decimos que es una cadena vacía o nula.
Es recomendable inicializar los valores de las cadenas a cadenas vacías o nulas al
inicio del programa, para evitar datos extraños e indeseables.
A las variables de cadena se pueden dar valores con una sentencia de asignación o
con una sentencia de lectura (read).
En ambos casos se evalúa la cadena fuente y se almacena en la variable de la cadena
destino.
Dependiendo del tamaño lógico de las cadenas fuente y destino se pueden presentar
tres casos diferentes
1)Si Las longitudes lógicas de las cadenas destino y fuente son iguales cada posición
de destino se rellena con el respectivo carácter de la cadena fuente.
2)Si la longitud física de la cadena destino es mayor que la longitud lógica de la
cadena fuente, después de la copia la cadena destino seguirá teniendo la misma
longitud física, pero ya que sólo se almacenan los caracteres de la cadena fuente, en
la primeras posiciones del arreglo, su longitud lógica será igual a la de la cadena
fuente.
3)Si la longitud física de la cadena destino es menor que la de la cadena fuente, se
almacenarán los primeros n caracteres (de izquierda a derecha) de la cadena fuente,
donde n es la longitud con que fue declarada la cadena destino.
Operaciones con Cadenas:
El Turbo Pascal ofrece algunas herramientas que facilitan el manejo del tipo de datos
string.
Pag. 2 de 4
M. Iwanow- R.Kantor
UTN – FRRo
Algoritmos y Estructuras de Datos
Cadenas de caracteres – Tipo String
Manejo de los elementos de la cadena
Es posible leer cada elemento de una cadena por separado, ya que en esencia se
trata de un arreglo de caracteres.
Si en la variable nombre almacenamos la cadena 'Pedro' es posible asignar a otra
cadena el valor de nombre[x] donde x es la posición de la cadena que se quiere leer.
Por ejemplo la instrucción : writeln(nombre[3]) mostrará el carácter ´d´
Longitud de una cadena:
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.(lógica)
Su sintaxis es:
length (cadena) y la función regresa un valor entero.
Comparación de cadenas
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 'Rosa' es menor a la cadena 'rosa' ya que el valor del código ASCII de R es
menor que el de r.
Unión de cadenas
En ocasiones es necesario combinar dos o más cadenas de caracteres en una sola,
para lograr ésto utilizamos los siguientes métodos.
Operador +
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:
cad1 := 'Buenos ';
cad2 := 'dias ';
cad3 := cad1 + c ad2;
…..
writeln (cad3);
Mostrará : 'Buenosdias '. (Notesé que este ejemplo es solo una sección del programa,
para ejecutarlo es necesario completar la estructura).
Función concat
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);
Función copy
La función copy regresa una subcadena de una cadena dada como parámetro. Su
sintaxis es:
copy (cadena, ini, canti);
Donde cadena es de tipo string, ini es la posición desde la cual se obtendrá la
subcadena y canti es el número de caracteres que se extraerán.
Ejemplo:
palabra := "Rosario";
writeln (copy(palabra, 3, 4));
Pag. 3 de 4
Mostrará: ‘sari ‘
M. Iwanow- R.Kantor
UTN – FRRo
Algoritmos y Estructuras de Datos
Cadenas de caracteres – Tipo String
Pos
La 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(pos('Lunes', cadena)); {Muestra 9}
writeln(pos('Jueves', cadena)); {Muestra 32}
writeln(pos('Ayer', cadena)); {Muestra 0}
Insert
El procedimiento Insert sirve para insertar una cadena dentro de otra en alguna
posición determinada.
Sintaxis: cadena1, cadena2, posición
Insert ()
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.
Delete
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 carácter a eliminar y número es la cantidad de caracteres que se borrarán.
Str, Val
Sucede 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.
( no es lo mismo el valor 25 y el valor '25', en el primer caso es un número mientras
que en el segundo es un par de caracteres ASCII.)
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.
val es un procedimiento que convierte una cadena en un valor de tipo numérico.
Si la cadena no esta formada exclusivamente de números siguiendo las reglas para el
tipo de datos que se desea obtener se generará un error.
Sintaxis:
val (cad, num, código)
Donde cad 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 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 ocurrió el error.
Se recomienda probar todas estas funciones y procedimientos en la máquina.
Pag. 4 de 4
M. Iwanow- R.Kantor
Descargar