Docsity
Docsity

Prepara tus exámenes
Prepara tus exámenes

Prepara tus exámenes y mejora tus resultados gracias a la gran cantidad de recursos disponibles en Docsity


Consigue puntos base para descargar
Consigue puntos base para descargar

Gana puntos ayudando a otros estudiantes o consíguelos activando un Plan Premium


Orientación Universidad
Orientación Universidad


Tema07-estructuras-2dpp, Apuntes de Informática

Asignatura: MTP 1, Profesor: , Carrera: Ingeniería Técnica de Informática de Gestión, Universidad: UJAEN

Tipo: Apuntes

Antes del 2010

Subido el 19/12/2007

helena_vv
helena_vv 🇪🇸

3.9

(14)

59 documentos

1 / 9

Toggle sidebar

Esta página no es visible en la vista previa

¡No te pierdas las partes importantes!

bg1
1
Tema 7. Otras
Estructuras de Datos
Tema 7. Otras Estructuras de Datos 2
Objetivos
Saber crear nuevos tipos de datos
Conocer la estructura de datos registro y sus
operaciones básicas
Utilizar los distintos tipos y estructuras de datos
Identificar la estructura de datos adecuada para
un problema determinado
Implementar los registros mediante las
estructuras en C
pf3
pf4
pf5
pf8
pf9

Vista previa parcial del texto

¡Descarga Tema07-estructuras-2dpp y más Apuntes en PDF de Informática solo en Docsity!

Tema 7. Otras

Estructuras de Datos

Tema 7. Otras Estructuras de Datos 2

Objetivos

‡ Saber crear nuevos tipos de datos

‡ Conocer la estructura de datos registro y sus

operaciones básicas

‡ Utilizar los distintos tipos y estructuras de datos

‡ Identificar la estructura de datos adecuada para

un problema determinado

‡ Implementar los registros mediante las

estructuras en C

Tema 7. Otras Estructuras de Datos 3

Tema 7. Otras Estructuras de Datos

‡ Tipos definidos por el usuario

‡ Registros

„ Concepto y declaración

„ Representación interna

„ Manejo de registros

„ Registros jerárquicos

‡ Arrays de registros

‡ Registros con campo array

‡ Implementación en C

Tema 7. Otras Estructuras de Datos 4

Definición de nuevos tipos de datos

‡ La mayoría de los lenguajes permiten la creación de nuevos tipos de
datos a partir de los ya existentes simplemente asociándoles un
nombre
‡ Para definir nuevos tipos de datos se especifican después de la
sección de declaración de constantes
TIPO

nom_tipo1 = tipo …………………………………………………… ………………………… nom_tipoN = tipoN

‡ Ejemplos

TIPOS NUMERO = ENTERO LETRA = CARACTER VECTOR=ARRAY[10] DE ENTEROS VARIABLES VARIABLES NUM:NUMERO NUM:ENTERO L:LETRA L:CARACTER V:VECTOR V:ARRAY[10] DE ENTEROS

Tema 7. Otras Estructuras de Datos 7

Representación interna

‡ Para almacenar un registro se reserva un espacio de memoria cuyo tamaño

total es la suma del espacio de almacenamiento requerido para el almacenamiento de cada uno de sus campos de manera individual

‡ Este espacio de memoria se organiza internamente de manera que los m primeros bytes corresponden al primer campo del registro, los n siguientes al segundo, y así sucesivamente para cada uno de los campos del registro

‡ Dos registros no van a ser del mismo tipo si, a pesar de tener los mismos campos, éstos no están declarados en el mismo orden (si tienen los campos declarados en un orden distinto, no va a coincidir su representación interna)

‡ Ejemplo

empleado (39 bytes)

nombre (31 bytes) edad (2 bytes) casado (1 byte)

sexo (1 byte) salario (4 bytes)

Tema 7. Otras Estructuras de Datos 8

Manejo de un registro

‡ El acceso a los campos de un registro se realiza a través del selector
de campo
Id_var_registro.id_campo
‡ Al cualificar los campos, no existe confusión al utilizar el mismo
nombre de campo en dos registros distintos
(persona.nombre≠empleado.nombre)
‡ Una vez que se accede a un campo de un registro se pueden realizar
las operaciones que permita el tipo de dato del campo concreto

SI fecha.dia = 1 ENTONCES ESCRIBIR(‘Primer día del mes’) FIN_SI empleado.sexo ← ’M’ {asignación} LEER(coordenada.x,coordenada.y) {lectura/escritura} ESCRIBIR(‘Posición en el plano: ‘, coordenada.x,’,’,coordenada.y)

Tema 7. Otras Estructuras de Datos 9

Registros jerárquicos

‡ Se trata de registros con campos que a su vez son registros
TIPOS
TFecha= REGISTRO
dia, mes, anno:ENTERO
FIN_REG
VARIABLES
empleado: REGISTRO
nombre:CADENA[30]
sexo:CARACTER
salario:REAL
casado:LOGICO
f_nac:TFecha
FIN_REG
El acceso sería por ejemplo empleado.f_nac.dia
VARIABLES

empleado: REGISTRO nombre:CADENA[30] sexo:CARACTER salario:REAL casado:LOGICO f_nac:REGISTRO dia:ENTERO mes:ENTERO año:ENTERO FIN_REG FIN_REG

Tema 7. Otras Estructuras de Datos 10

Arrays de registros

‡ Un array de registros es una estructura de datos compuesta por
un array cuyos componentes (celdas) son de tipo registro

Constantes Tama= Tipos empleado = REGISTRO DNI: cadena[8] nombre: cadena[40] salario: entero IRPF: real casado: lógico FIN_REG empresa = ARRAY [Tama] de empleado Variables tourSA: empresa var_emp: empleado

‡ Para acceder al empleado i
se usa

tourSA[i]

‡ Para acceder a los campos
del empleado i se usa

tourSA[i].DNI tourSA[i].nombre ……… tourSA[i].casado

Tema 7. Otras Estructuras de Datos 13

Implementación en C

‡ Para la definición de nuevos tipos se utiliza typedef

typedef tipo1 nom_tipo1;
typedef tipoN nom_tipoN;

‡ Ejemplos

typedef int NUMERO;
typedef char LETRA;
/* declaración de variables */
NUMERO num; // es equivalente a int num;
LETRA letra; // es equivalente a char letra;

Tema 7. Otras Estructuras de Datos 14

Estructuras

‡ En C los registros reciben el nombre de estructuras

‡ Definición de estructuras

struct nombre_estructura{ tipo1 campo1; …………………………………………………… ………………………… tipoN campoN; };

‡ Una vez definida la estructura hay que declarar las variables de

ese tipo de estructura que se desean utilizar

„ A continuación de la definición de la estructura pero antes del
punto y coma
„ Como una sentencia aparte

‡ Se pueden definir nuevos tipos a partir de estructuras

‡ Para acceder a cada campo de la estructura se usa el punto

Tema 7. Otras Estructuras de Datos 15

Ejemplos

struct FECHA{ int dia,mes,anno; }; typedef struct FECHA Tfecha;

TFecha fecha; struct empleado{ char[31] nombre; char sexo; int edad; float salario; int casado; }emp1;

struct empleado emp2;

typedef struct empleado EMPLEADO; EMPLEADO emp3;

¿Cuántas variables se han declarado en total?

struct punto{ float x,y; }coord; typedef struct punto PUNTO; struct pieza{ char[20] descripcion; int codigo; flot precio; }pedido; struct punto coordenada; PUNTO coordenada2;

Tema 7. Otras Estructuras de Datos 16

Implementación de estructuras

‡ Inicialización de una estructura

struct punto{ float x,y; }; struct punto PUNTO={2,4}; struct pieza{ char[20] descripcion; int codigo; float precio; }pedido={“tornillo”,5,2.3};

‡ Paso de estructuras a las funciones

„ Por valor: se pasa una copia de la estructura

„ Por referencia: se pasa un puntero a la estructura