PDF de programación - Tema 5 - Estructuras de datos

Imágen de pdf Tema 5 - Estructuras de datos

Tema 5 - Estructuras de datosgráfica de visualizaciones

Publicado el 12 de Diciembre del 2018
242 visualizaciones desde el 12 de Diciembre del 2018
281,1 KB
26 paginas
Creado hace 3a (18/11/2016)
Índice

• Estructuras de datos en Memoria Principal

– Vectores

– Matrices

– Cadenas de caracteres

– Estructuras

• Estructuras de datos en Memoria Externa

– Ficheros

Tema: Estructuras de Datos

2

Estructuras

• Una estructura es un tipo de datos que permite agrupar bajo

un mismo nombre elementos, denominados miembros (o

componentes o elementos o campos), que pueden ser de

distintos tipos de datos y que están relacionados entre sí.

• Una

estructura

puede

tener

cualquier número de

miembros, cada uno de los cuales tiene un nombre único.

• Una estructura es un tipo de datos definido por el

programador, que se debe declarar antes de utilizar.

Tema: Estructuras de Datos

3

Estructuras. Declaración

• La forma de declarar una estructura es:

struct <nom_estructura>
{

[tipo_dato_miembro1] [nom_miembro1];
[tipo_dato_miembro2] [nom_miembro2];

[tipo_dato_miembron] [nom_miembron];

};

• En la declaración se indica el nombre y el formato de la

estructura de datos. No se han creado variables.

• Es decir, únicamente, se declara un nuevo tipo de datos

(una plantilla para futuras variables).

Tema: Estructuras de Datos

4

Estructuras. Declaración

• Ejemplo de declaración de estructuras:

struct amigo{

struct empleado{

char nombre[10];
char apellido[20];
char telefono[9];

};

};

char nombre[10];
char apellido1[10];
char apellido2[10];
float sueldo;

struct fecha{

int dia, mes, anyo;

};

struct venta{

int referencia;
int cantidad;

};

Tema: Estructuras de Datos

5

Estructuras. Definición

• Para declarar variables de una estructura definida existen

dos formas:
– nombrándolas después de la llave de cierre de la declaración:

struct <nom_estructura>
{

[tipo_dato_miembro1] [nom_miembro1];

[tipo_dato_miembron] [nom_miembron];

} lista _nomb_variable;

– indicando el tipo de la estructura creada seguida por las variables

correspondientes:

struct nom_estructura lista_nomb_variable;

Tema: Estructuras de Datos

6

Estructuras. Definición

• Ejemplo:

– Se puede poner:
struct venta{

int referencia;
int cantidad;

} mayor_venta, ventaHoy;

– O bien, por separado:

struct venta{

int referencia;
int cantidad;

venta define la forma de la
estructura, su tipo.

mayor_venta, ventaHoy
son variables de la estructura.

};
. . .
struct venta mayor_venta, ventaHoy;

Tema: Estructuras de Datos

7

Estructuras. Acceso a los campos

• Para acceder a los campos o los miembros de una

estructura la sintaxis es:

nomb_var_estructura . nomb_miembro

• El punto proporciona el camino directo al miembro

correspondiente.

• Un miembro de un struct, debe ser tratados según al tipo

de datos al que pertenezcan.

Tema: Estructuras de Datos

8

Estructuras. Acceso a los campos

• Ejemplo:

– Si tenemos declaradas las variables:

struct venta{

int referencia;
int cantidad;

} mayor_venta, ventaHoy;

– Ejemplo de como se puede acceder a los miembros:

mayor_venta.referencia = 35;
mayor_venta.cantidad = 300;
scanf(“%d”, &ventaHoy.referencia);
printf(“La cantidad es: %d”, mayor_venta.cantidad);

Tema: Estructuras de Datos

9

Estructuras. Inicialización

• Se puede inicializar una estructura de dos formas:

– como parte de la definición:
nom_estructura

struct

nom_variable={

valor miembro1,

valor miembron};

Ejemplo: struct venta ventaHoy = {

145,
3 };

/*referencia*/
/*cantidad*/

– en la sección de código del programa, por ejemplo:

printf(“Introd. la referencia y la cantidad vendida: ”);

scanf(“%d%d”, &ventaHoy.referencia, &ventaHoy.cantidad);

Tema: Estructuras de Datos

10

Estructuras. Ejemplo

Para inicializar una variable del siguiente tipo:

struct ejem{

int x[3];
int y[5];
char nombre[10];

};

Se puede poner, en la declaración:

struct ejem ejemplo1={{2,3,4}, {1,3,5,7,9}, “una cosa”};

O bien mediante lecturas, por ejemplo:

for (i=0;i<3;i++)

scanf(“%d”, &ejemplo1.x[i]);

for (i=0;i<5;i++)

scanf(“%d”, &ejemplo1.y[i]);

gets(ejemplo1.nombre);

Tema: Estructuras de Datos

11

Ejercicio

• Dada la siguiente declaración de estructura en un programa
C, que representa los datos de un empleado de una empresa:

struct empleado{

char nombre[10];
char apellido1[10];
char apellido2[10];
float sueldo;

};

Inicializar mediante lecturas una variable emp1 de tipo
struct empleado, se introduce un dato en cada línea. A
continuación mostrar en pantalla los datos almacenados en la
estructura.

Tema: Estructuras de Datos

12

Estructuras. Asignación de datos

• Una estructura se puede asignar a otra, exactamente igual
que cualquier tipo de datos simple de los que hemos visto
(int, float, char)

Ejemplo:

struct venta{

int referencia;
int cantidad;

}
struct venta mayor_venta, venta1, venta2;

mayor_venta = venta1;
venta1 = venta2;

Tema: Estructuras de Datos

14

Estructuras Anidadas

• Un miembro de una estructura puede ser de un tipo de datos

básico (char, int …), pero también puede ser un array o

cualquier otro dato estructurado.

• Cuando un miembro de un struct es de tipo struct, se dice

que tenemos una estructura anidada.

• Para acceder a un miembro anidado se usa el operador

miembro, el punto (.), tantas veces como sea necesario para

alcanzarlo.

Tema: Estructuras de Datos

15

Estructuras. Ejemplo

Ejemplo de estructuras anidadas:

struct fecha{

int dia, mes, anyo;

};
struct amigo{

char nombre[10];
char apellido[20];
char telefono[9];
struct fecha fechaNac;

} amigoClase;

Cómo acceder a:

- Inicial del nombre: amigoClase.nombre[0]

- Mes de la fecha de nacimiento: amigoClase.fechaNac.mes

Tema: Estructuras de Datos

16

Estructuras. Ejemplo

Dadas las siguientes definiciones de estructuras, indicar como se
accede a los miembros de libro1:

struct fecha{

int dia;
int mes;
int anio;

};

struct Ficha{

a) Asignarle 5 al mes de compra
b) Escribir el primer carácter del
título
c) Si el libro está prestado que
escriba el autor

char titulo[40];
char autor[30];
struct fecha fcompra;
int prestado;

//1=está prestado, 0=no está prestado

} libro1;



Tema: Estructuras de Datos

17

Estructuras. Arrays de estructuras

Es bastante frecuente usar conjuntamente estructuras y
arrays, Por ejemplo un array de libros de una biblioteca:

struct fecha{

int dia;
int mes;
int anio;

};
struct Ficha{

char titulo[40];
char autor[30];
struct fecha fcompra;
int prestado;

};
struct Ficha biblio[100];

Reserva espacio de
memoria para 100
variables de tipo
estructura Ficha

Tema: Estructuras de Datos

18

Estructuras. Arrays de estructuras

Por ejemplo un array de libros de una biblioteca:

struct fecha{

int dia;
int mes;
int anio;

};
struct Ficha{

Ejemplo:
para escribir el título del segundo libro:

O la inicial del autor del tercer libro:

y el año de compra del primer libro:

char titulo[40];
char autor[30];
struct fecha fcompra;
int prestado;

} libro1;
struct Ficha biblio[100];

Escribir todos los títulos:

Asignar libro1 al primer libro de la
biblioteca:

Tema: Estructuras de Datos

19

Ejercicio

• Diseñar los tipos de datos necesarios para trabajar con una lista de
ventas (struct venta) de un empleado de una tienda. El máximo
número de ventas que puede realizar es de 60. Para cada venta se
guarda la referencia del producto y la cantidad vendida.

Tema: Estructuras de Datos

20

Estructuras. Funciones

• Paso de estructuras como parámetros a funciones.

– Parámetros de entrada (no se quiere modificar los valores de la

estructura dentro de la función),

• hay que definir el parámetro formal como en la declaración de una

variable struct

• En la llamada a la función, hay que indicar como parámetro real el

nombre de la variable estructura.

– Parámetros de salida o de entrada/salida (la función pueda

modificar la estructura),

• hay que definir el parámetro formal como un puntero a la estructura
(struct nomb_estructura *nomb_parametro). En este caso, en el código
de la función, hay que utilizar el operador ->, en lugar del
operado . para acceder a los miembros de la estructura.

• En la llamada a la función, hay que indicar como parámetro real una

dirección de memoria a la estructura que se desea modificar.

Es decir casi de la misma forma que con las variables simples

Tema: Estructuras de Datos

21

Estructuras. Funciones. Ejemplo

• Paso de parámetros de entrada

#include <stdio.h>
struct listin{
int codigo;
char nombre[25];
char telefono[9];

Se puede observar que:

la declaración de la estructura tiene que ser

global para poder declarar parámetros

estructura en funciones

};
void escribir (struct listin uno);
void main()
{

struct listin amigo;
scanf("%d %s", &amigo.codigo, &amigo.nombre);
gets(amigo.telefono);
escribir(amigo);

//de otra forma

}
void escribir (struct listin uno)
{

printf("\n%d %s %s", uno.codigo, uno.nombre, uno.telefono);

}

Tema: Estructuras de Datos

22

Estructuras. Funciones. Ejemplo

• Paso de parámetros de salida o de entrada/salida

#include <stdio.h>
struct listin{
int codigo;
char nombre[25];
char telefono[9];

};
void leer (struct listin *otro);
void main()
{

Se puede observar que:

la declaración de la estructura tiene que ser

global para poder declarar parámetros

estructura en funciones

struct listin amigo;
leer(&amigo);
printf("\n%d %s %s", amigo.codigo, amigo.nombre, amigo.telefono);

}
void leer (struct listin *otro)
{

scanf("%d %s", &otro->codigo, otro->nombre);
gets(otro->telefono);

}

typedef

Sinónimo de un tipo de datos

• No es específico de struct

• Se utiliza para dar nuevos nombres a tipos de datos ya

existentes.

• La finalidad es conseguir un programa más documentado,

más fácil de leer y por lo tanto de modificar.

• Facilita también la portabilidad de programas.

• Sintaxis:

typedef tipo_datos_existente nuevo_nombre_tipo

Tema: Estructuras de Datos

24

typedef Ejemplos

• Sintaxis: typedef tipo_datos_existente nuevo_nombre_tipo

Ejemplo1:

typedef int entero; //redefinimos el tipo int
entero n1, n2;

//declaramos dos variables int

Ejemplo2:

struct fecha{
int dia;
int mes;
int anio;

};
  • Links de descarga
http://lwp-l.com/pdf14507

Comentarios de: Tema 5 - Estructuras de datos (0)


No hay comentarios
 

Comentar...

Nombre
Correo (no se visualiza en la web)
Valoración
Comentarios
Es necesario revisar y aceptar las políticas de privacidad