PDF de programación - 2.3.2 Tipos de Datos Estructurados

Imágen de pdf 2.3.2 Tipos de Datos Estructurados

2.3.2 Tipos de Datos Estructuradosgráfica de visualizaciones

Publicado el 25 de Junio del 2021
682 visualizaciones desde el 25 de Junio del 2021
61,5 KB
4 paginas
Creado hace 20a (14/03/2004)
2.3.2 Tipos de Datos
Estructurados

Arreglos, Registros, Strings y
Uniones

Tipo Arreglo

l Es un tipo estructurado consistente en un conjunto

ordenado de elementos que se identifican por su
posición relativa mediante un índice.

l Existe un tipo asociado a los elementos y al índice.
l Índice se escribe entre:

l paréntesis redondo (Basic) o
l cuadrado (Pascal, C, C++y Java).

l Verificación de rango del índice mejora fiabilidad

(Pascal y Java lo hacen).

Arreglos Multidimensionales

Inicialización de Arreglos

l Pascal permite sólo dos dimensiones

l ANSI C y C++

TYPE

matriz = ARRAY [subindice, subindice] OF real;

char *mensaje = “Hola mundo\n”;
char *dias[] = {“lu”, ”ma”, “mi”, “ju”, “vi”, “sa”, “do”};

l C y C++

real matriz [DIM1][DIM2];

l Java

int[] edades = { 7, 12, 18, 21, 25 };

l Pascal no lo permite

Operadores con Arreglo

Operadores con Arreglo

l Pascal y C y no tienen soporte especial (sólo

selector con subíndice [])

l C++ permite definir una clase arreglo por el
usuario y operadores tales como subíndice,
asignación, inicialización, etc.

l Java define los arreglos como tipos

especiales de objetos. Permite uso de
subíndice, cálculo del largo y otros métodos.

l C/C++ no tiene chequeo de rango para los
índices. Tampoco permite averiguar el largo
de un arreglo.

l Pascal provee chequeo de rango
l Java provee chequeo de rango y permite

conocer el largo del arreglo.

int[] arr = {1,2,3,4,6,7,2,3};
for(int i=0;i<arr.length ;i++)
{

...

}

1

Implementación de Arreglos

Arreglos Asociativos

l La memoria es un arreglo unidimensional de celdas:

l Un arreglo es una abstracción del lenguaje
l Un arreglo debe ser mapeado a la memoria

l Ejemplo: dirección de lista[k]
dir(lista[0]) + (k)*tamaño
dir(lista[bajo]) + (k-bajo)*tamaño

l Arreglos bidimensionales se almacenan

como fila de columnas, o viceversa
l Puede influir en la forma más eficiente de

recorrido.

l Arreglo no ordenado de elementos que son

accedidos por una clave

l Cada elementos corresponde a un par ordenado

(clave, dato)

l PERL provee esta estructura con el nombre de

hash:

%dias = (

1 => “Enero”,

12 => “Diciembre”

);
print $ dias{7};

Arreglos Asociativos

Arreglos Asociativos

l C++ provee mapas y multimapas a travé de

l Hashing

la STL (Standard Template Library)
l Mapas: una clave, un valor.
l Multimapas: un clave, múltiples valores.

l Java provee interfaces para diccionarios e

implementaciones de tablas hash.

l Ubicación de un elemento dentro del arreglo por una

función matemática sobre la clave.

l Los arreglos son casos especiales, donde la clave es el

índice y la función matemática es la identidad.

l Permite que las claves sean estructuras más complejas.

Tipo Registro

l Permite composición heterogénea de

elementos de datos
Cada elemento se identifica por un nombre
(campo o miembro)
l Introducido por COBOL (data division)
l En C equivale a struct
l Concepto de clase en O-O soporta registros (e.g.

C++ y Java)

clave

f(clave )

posición

Ejemplo:
Registros en C y C++ (struct)

struct empleado_t {

struct {

char primer[10];
char paterno[10];
char materno[10];

} nombre;
int sueldo;

}

empleado_t

pelao, guaton;

guaton.sueldo = 550000;
strcpy( pelao.nombre.primer, “Juan”);

2

Ejemplo: Registros en Pascal

Cadena de Caracteres (String)

TYPE
empleado_t =
RECORD

nombre :
RECORD
primer: PACKED ARRAY [1.10] OF char;
paterno: PACKED ARRAY [1.10] OF char;
materno: PACKED ARRAY [1.10] OF char;

END {nombre};

sueldo : integer

END;

VAR
pelao, guaton : empleado_t;

BEGIN

pelao.sueldo := 550000;

l Principalmente para la comunicación máquina-

usuario y para manipulación de textos
l Mejora la facilidad de escritura

l ¿Es una cadena un tipo primitivo?

l Algunos lenguajes lo proveen como tipo (Java y

Perl)

l Otros sólo como arreglo de carácteres (C, C++ y

Pascal)

l ¿Puede el largo variar dinámicamente?

Strings: Operaciones Básicas

Ejemplo de String en C

l Asignación
l Comparación
l Concatenación
l Largo
l Transformación (e.g. de string a entero)

char str[20];


if (strcmp(str,”Hola”){


else {


}

Strings: Calce de Patrones
(Pattern matching)

l Perl hace uso de expresiones regulares

l Ejemplo:
l /[A-Za-z][A-Za-z\d]+/ permite calzar un

identificador

l /^(\s+)\ s+(s+)\ s+(\s+)$/ permite calzar tres

palabras

Diseño de String

l Diseño de string considera:
l Largo estático (Pascal y Java)
l Largo dinámico limitado (e.g. C y C++)
l Largo dinámico (Perl )

l Último es el más flexible, pero es más

costoso de implementar y ejecutar.

3

Tipo Union

Ejemplo: C y C++

l Permite almacenar diferentes tipos de datos en

diferentes tiempos en una misma variable.

l Reserva espacio de memoria igual al mayor

miembro definido.

l Todos los miembros comparten la memoria y

comienzan desde la misma dirección.

l Su uso es en general poco seguro.
l Java no provee este tipo de estructura

union direccion {

char dominio[20];
int IP[4];

};

IP

Dominio

4
  • Links de descarga
http://lwp-l.com/pdf19346

Comentarios de: 2.3.2 Tipos de Datos Estructurados (0)


No hay comentarios
 

Comentar...

Nombre
Correo (no se visualiza en la web)
Valoración
Comentarios...
CerrarCerrar
CerrarCerrar
Cerrar

Tienes que ser un usuario registrado para poder insertar imágenes, archivos y/o videos.

Puedes registrarte o validarte desde aquí.

Codigo
Negrita
Subrayado
Tachado
Cursiva
Insertar enlace
Imagen externa
Emoticon
Tabular
Centrar
Titulo
Linea
Disminuir
Aumentar
Vista preliminar
sonreir
dientes
lengua
guiño
enfadado
confundido
llorar
avergonzado
sorprendido
triste
sol
estrella
jarra
camara
taza de cafe
email
beso
bombilla
amor
mal
bien
Es necesario revisar y aceptar las políticas de privacidad