23
UNIDAD 4 ESTRUCTURAS Y UNIONES Programación Primavera 2010

UNIDAD 4 ESTRUCTURAS Y UNIONESgalia.fc.uaslp.mx/~rmariela/programacion/unidad41.pdfContenido Definición de estructura Procesamiento de una estructura Tipos de datos definidos por

  • Upload
    others

  • View
    18

  • Download
    1

Embed Size (px)

Citation preview

Page 1: UNIDAD 4 ESTRUCTURAS Y UNIONESgalia.fc.uaslp.mx/~rmariela/programacion/unidad41.pdfContenido Definición de estructura Procesamiento de una estructura Tipos de datos definidos por

UNIDAD 4

ESTRUCTURAS Y UNIONESProgramación

Primavera 2010

Page 2: UNIDAD 4 ESTRUCTURAS Y UNIONESgalia.fc.uaslp.mx/~rmariela/programacion/unidad41.pdfContenido Definición de estructura Procesamiento de una estructura Tipos de datos definidos por

Contenido

Definición de estructura

Procesamiento de una estructura

Tipos de datos definidos por el usuario (typedef)

Estructuras y apuntadores

Paso de estructuras a una función

Uniones

Enumeraciones

Page 3: UNIDAD 4 ESTRUCTURAS Y UNIONESgalia.fc.uaslp.mx/~rmariela/programacion/unidad41.pdfContenido Definición de estructura Procesamiento de una estructura Tipos de datos definidos por

Definición de Estructuras

� Una estructura es una colección de una o mas variables, de tipos posiblemente diferentes, agrupadas bajo un solo nombre

Las estructuras nos ayuda a organizar datos � Las estructuras nos ayuda a organizar datos complejos ya que nos permite el manejo de una grupo de datos como si fueran una unidad

� Las estructuras son comúnmente conocidas como registros.

Page 4: UNIDAD 4 ESTRUCTURAS Y UNIONESgalia.fc.uaslp.mx/~rmariela/programacion/unidad41.pdfContenido Definición de estructura Procesamiento de una estructura Tipos de datos definidos por

Definición de estructura

� Cada uno de los datos que componen la estructura

es denominado campo y se le identifica con un

nombre único.

� Ejemplo:� Ejemplo:

� Empleado en una compañía tiene varios datos

asociado a el tales como

� Nombre

� Nivel

� Salario

� Domicilio

Page 5: UNIDAD 4 ESTRUCTURAS Y UNIONESgalia.fc.uaslp.mx/~rmariela/programacion/unidad41.pdfContenido Definición de estructura Procesamiento de una estructura Tipos de datos definidos por

Ejemplo

� Por cada alumno de una universidad se requiere

almacenar la siguiente información:

� Matricula (entero)

� Nombre (cadena de caracteres)� Nombre (cadena de caracteres)

� Carrera (cadena de caracteres)

� Promedio (real)

� Domicilio (cadena de caracteres)

Alumno

Matricula Nombre Carrera Promedio Domicilio

Campos

Page 6: UNIDAD 4 ESTRUCTURAS Y UNIONESgalia.fc.uaslp.mx/~rmariela/programacion/unidad41.pdfContenido Definición de estructura Procesamiento de una estructura Tipos de datos definidos por

Declaración de la Estructura

� La estructura se declara utilizando la palabra reservada struct seguida de la lista de campos entre llaves

� Ejemplo:struct alumno{

int matricula;char nombre[30];char carrera[30];float promedio;char domicilio[30];

};

Page 7: UNIDAD 4 ESTRUCTURAS Y UNIONESgalia.fc.uaslp.mx/~rmariela/programacion/unidad41.pdfContenido Definición de estructura Procesamiento de una estructura Tipos de datos definidos por

Acceso a campos

� Para acceder a cada uno de los campos que componen la estructura debemos utilizar el operador punto

El acceso se realiza de la siguiente manera� El acceso se realiza de la siguiente manera

� nombre_variable.campo

� Ejemplo:struct alumno A;gets (A.nombre );

Page 8: UNIDAD 4 ESTRUCTURAS Y UNIONESgalia.fc.uaslp.mx/~rmariela/programacion/unidad41.pdfContenido Definición de estructura Procesamiento de una estructura Tipos de datos definidos por

Inicialización de estructuras

� Las estructuras pueden ser inicializadas de la

siguiente manera

struct alumno A = {120,”Maria”,”Contabilidad”,8.9, struct alumno A = {120,”Maria”,”Contabilidad”,8.9, “Niño Artillero 120”};

Alumno

Matricula

120

Nombre

Maria

Carrera

Contabilidad

Promedio

8.9

Domicilio

Niño Artillero 120

Page 9: UNIDAD 4 ESTRUCTURAS Y UNIONESgalia.fc.uaslp.mx/~rmariela/programacion/unidad41.pdfContenido Definición de estructura Procesamiento de una estructura Tipos de datos definidos por

Ejemplo

struct fecha{

int day;

int month;

int year;

fecha

day};

struct fecha today;

today.day = 13;

today.month = 4;

today.year = 2010;

day

month

year

Page 10: UNIDAD 4 ESTRUCTURAS Y UNIONESgalia.fc.uaslp.mx/~rmariela/programacion/unidad41.pdfContenido Definición de estructura Procesamiento de una estructura Tipos de datos definidos por

Ejemplo

struct alumno{

int matricula;

char nombre[30];

struct fecha birth;

alumno

}

struct alumno A={120,”Hugo”,4,12,1970};

printf("%d/%d/%d\n",

A.birth.day,

A.birth.month,

A.birth.year);

matricula nombre fecha

día mes año

Page 11: UNIDAD 4 ESTRUCTURAS Y UNIONESgalia.fc.uaslp.mx/~rmariela/programacion/unidad41.pdfContenido Definición de estructura Procesamiento de una estructura Tipos de datos definidos por

Ejercicio

� Declare una estructura

que contenga los

siguientes datos de

una cuenta bancaria

� inicialice los datos

para que contenga

� 0589465

� Ahorros

� Numero de cuenta

� tipo de cuenta

� nombre del titular

� Saldo

Ahorros

� Martin Jiménez

� 1085.25

� Incremente el saldo en

2000.00 pesos

Page 12: UNIDAD 4 ESTRUCTURAS Y UNIONESgalia.fc.uaslp.mx/~rmariela/programacion/unidad41.pdfContenido Definición de estructura Procesamiento de una estructura Tipos de datos definidos por

Typedef

� La palabra reservada typedef nos permite definir alias o sinónimos para tipos de datos existentes.

� Ejemplo:

typedef struct{int day;int month;int year ;existentes.

� Al crear estos alias podemos utilizar nombres mas cortos para los tipos de datos que estamos definiendo.

int year ;} date;

date hoy;

Page 13: UNIDAD 4 ESTRUCTURAS Y UNIONESgalia.fc.uaslp.mx/~rmariela/programacion/unidad41.pdfContenido Definición de estructura Procesamiento de una estructura Tipos de datos definidos por

Ejercicio

� Utilizando typedef define la siguiente estructura de los empleados de una empresa

� Nombre de empleado

� Departamento en la

� Primero deberás definir la estructura del domicilio con los siguientes datos

� Domicilio� Calle

� Numero� Departamento en la empresa

� Sueldo

� Domicilio� Calle

� Numero

� Código Postal

� Localidad

� Numero

� Código Postal

� Localidad

Page 14: UNIDAD 4 ESTRUCTURAS Y UNIONESgalia.fc.uaslp.mx/~rmariela/programacion/unidad41.pdfContenido Definición de estructura Procesamiento de una estructura Tipos de datos definidos por

Arreglo de Estructuras

� Un arreglo de estructuras se define de la siguiente manera

typedef struct{char name[30];

int matricula;

� Para acceder a los campos de cada registro usamos el operador punto de la siguiente forma

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

{

printf("Nombre del alumno:");

gets (lista[i].nombre);int matricula;

float promedio

}alumno;

alumno lista[50];

gets (lista[i].nombre);

printf("Matricula: ");

scanf("%d",&lista[i].matricula);

printf("Promedio: ");

scanf("%f",&lista[i].promedio);

fflush(stdin);

}

Page 15: UNIDAD 4 ESTRUCTURAS Y UNIONESgalia.fc.uaslp.mx/~rmariela/programacion/unidad41.pdfContenido Definición de estructura Procesamiento de una estructura Tipos de datos definidos por

Ejemplo

� Realice un programa que lea 10 registros de alumnos.

� Cada registro deberá contener los siguientes datos

� Nombre del alumno

Matricula� Matricula

� Promedio

� El programa deberá llenar los 10 registros y mostrar los datos

� Después deberá ser capaz de buscar un alumno por número de matricula y desplegar sus datos

Page 16: UNIDAD 4 ESTRUCTURAS Y UNIONESgalia.fc.uaslp.mx/~rmariela/programacion/unidad41.pdfContenido Definición de estructura Procesamiento de una estructura Tipos de datos definidos por

Lectura

void lectura(alumno lista[], int n)

{

int i;

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

{

printf("Registro No. %d\n",i);

printf("Nombre del alumno: "); gets(lista[i].nombre);

printf("Matricula: ");scanf("%d",&lista[i].matricula);

printf("Promedio: ");scanf("%f",&lista[i].promedio);

fflush(stdin);

}

}

Page 17: UNIDAD 4 ESTRUCTURAS Y UNIONESgalia.fc.uaslp.mx/~rmariela/programacion/unidad41.pdfContenido Definición de estructura Procesamiento de una estructura Tipos de datos definidos por

Impresión

void imprime(alumno lista[], int n)

{

for(int i = 0; i < size; i++)

{

printf (" Nombre del alumno : %s \ n",lista [ i ]. nombre );printf (" Nombre del alumno : %s \ n",lista [ i ]. nombre );

printf("Matricula:%d\n",lista[i].matricula);

printf("Promedio:%2.2f\n",lista[i].promedio);

}

}

Page 18: UNIDAD 4 ESTRUCTURAS Y UNIONESgalia.fc.uaslp.mx/~rmariela/programacion/unidad41.pdfContenido Definición de estructura Procesamiento de una estructura Tipos de datos definidos por

busqueda

int busqueda (alumno lista [], int n, int mat)

{

for( int i = 0; i < n; i ++)for( int i = 0; i < n; i ++)

if( lista [i]. matricula == mat)

return i;

return -1;

}

Page 19: UNIDAD 4 ESTRUCTURAS Y UNIONESgalia.fc.uaslp.mx/~rmariela/programacion/unidad41.pdfContenido Definición de estructura Procesamiento de una estructura Tipos de datos definidos por

Programa Principal#include <stdio.h>

#include <stdlib.h>

#define size 10

typedef struct{

char nombre[30];

int matricula;

float promedio;

} alumno;

void lectura(alumno lista[], int n);

void imprime ( alumno lista [], int n);void imprime ( alumno lista [], int n);

int busqueda(alumno lista[], int n, int mat);

int main()

{

int i,mat;

alumno lista[size];

printf("Proporciona los siguientes datos\n");

lectura(lista,size);

printf("Los datos leidos fueron\n");

imprime(lista,size);

Page 20: UNIDAD 4 ESTRUCTURAS Y UNIONESgalia.fc.uaslp.mx/~rmariela/programacion/unidad41.pdfContenido Definición de estructura Procesamiento de una estructura Tipos de datos definidos por

Programa Principal

printf("Proporciona una matricula para ser buscada ");

scanf("%d",&mat);

i = busqueda(lista,size,mat);

if (i != -1)

{

printf (" Registro No. %d \ n",i );printf (" Registro No. %d \ n",i );

printf("Nombre del alumno: %s\n",lista[i].nombre);

printf("Matricula: %d\n",lista[i].matricula );

printf("Promedio: %2.2f\n",lista[i].promed io);

}

else

printf("La matricula no esta dada de alta\n");

system("pause");

return 0;

}

Page 21: UNIDAD 4 ESTRUCTURAS Y UNIONESgalia.fc.uaslp.mx/~rmariela/programacion/unidad41.pdfContenido Definición de estructura Procesamiento de una estructura Tipos de datos definidos por

Ejemplo 2

� Modifique la función de escritura para evitar

matriculas duplicadas

Page 22: UNIDAD 4 ESTRUCTURAS Y UNIONESgalia.fc.uaslp.mx/~rmariela/programacion/unidad41.pdfContenido Definición de estructura Procesamiento de una estructura Tipos de datos definidos por

Lectura

void lectura(alumno lista[], int n)

{

int mat,i=0;

while(i < n)

{

printf("Registro No. %d\n",i);

printf("Matricula: ");scanf("%d",&mat);

if (busqueda(lista,i,mat)== -1)

{

lista[i].matricula = mat;

printf("Nombre del alumno: "); gets(lista[i].nombre) ;

printf("Promedio: ");scanf("%f",&lista[i].promedio );

fflush(stdin); i++;

}

else printf("Este dato ya se encuentra registrado\n");

}

}

Page 23: UNIDAD 4 ESTRUCTURAS Y UNIONESgalia.fc.uaslp.mx/~rmariela/programacion/unidad41.pdfContenido Definición de estructura Procesamiento de una estructura Tipos de datos definidos por

Ejercicio

� Escribe una programa que utilice una estructura para

representar a los números complejos

� Un número complejo tiene parte real e imaginaria

iyxa +=� Declare una estructura que permita el manejo de ambos

números. Estos números son reales.

� Realice una función que realice la suma de números

imaginarios.

� La suma se realiza de la siguiente manera

iyxa +=

);()( syirxba +++=+