Академический Документы
Профессиональный Документы
Культура Документы
UNIVERSIDAD AUTNOMA DE BAJA CALIFORNIA FACULTAD DE INGENIERA (UNIDAD MEXICALI) DOCUMENTO DEL SISTEMA DE CALIDAD
PLAN DE ESTUDIO
2003-1
CLAVE ASIGNATURA
5032
NOMBRE DE LA ASIGNATURA
L !"#$% & P'("'$)$*+,! E-.'#*.#'$&$
PR/CTICA N(0
DURACIN (3ORA)
5
10 INTRODUCCIN
La capacidad para crear nuevos tipos de dato es una caracterstica importante y potente de C y libera a un programador de restringirse al uso de los tipos ofrecidos por el lenguaje. Una estructura contiene mltiples variables !ue pueden ser de tipos diferentes. La estructura es importante para la creaci"n de programas potentes tales como bases de datos u otras aplicaciones !ue re!uieran grandes cantidades de datos.
20 OBJETIVO (COMPETENCIA)
#plicar el uso de estructuras para el desarrollo de nuevos tipos de datos estructurados con las cuales se crearan programas utili$ando estructuras definidas por el usuario
30 FUNDAMENTO
Una estructura es una colecci"n de una o m%s tipos de elementos denominados miembros cada uno de los cuales pueden ser un tipo de dato diferente. Una estructura puede contener cual!uier nmero de miembros cada uno de los cuales tiene un nombre nico denominado nombre del miembro. &upongamos !ue se desea almacenar los datos de una colecci"n de discos compactos 'C() de msica. Nombre Tipo de dato #rtista #rray de caracteres de tama*o +, -tulo #rray de caracteres de tama*o +, .mero de canci"n /ntero 0recio Flotante Fecha de compra #rray de caracteres de tama*o 1 la declaraci"n de la estructura C( es:
Formul"
I!"0 E6$ 3 '' '$ R$)7' 89 I!"0 G0 A!":2+*$ F2(' R+6 '$9 I!"0 P$;2( M$'.7! N$6$''( /26$' 89 I!"0 A2+*+$ L,1 8 A"#+''
2evis"
#prob"
#utori$"
3aestro
4esti"n de Calidad
(irector de la Facultad
C"digo 4C5.65,78 2evisi"n 7
0%gina 1
de 12
UNIVERSIDAD AUTNOMA DE BAJA CALIFORNIA FACULTAD DE INGENIERA (UNIDAD MEXICALI) DOCUMENTO DEL SISTEMA DE CALIDAD
de 12
UNIVERSIDAD AUTNOMA DE BAJA CALIFORNIA FACULTAD DE INGENIERA (UNIDAD MEXICALI) DOCUMENTO DEL SISTEMA DE CALIDAD
/jemplo: struct info_libro { char titulo[60]; char auto[30]; char editorial[30]; int anyo; }libro1={"Maravilla del saber","Lucas Garcia","Mc Graw-Hill",1999}; ACCESO A ESTRUCTURAS Cuando se accede a una estructura o bien se almacena informaci"n en la estructura o se recupera la informaci"n de la estructura. &e puede acceder a los miembros de una estructura de una de estas ; formas: 7. Utili$ando el operador punto'.) ;. Utili$ando el operador puntero 55< A2)$* !$)+ !.( & 2$ +!=(')$*+,! &e puede almacenar informaci"n en una estructura mediante iniciali$aci"n asignaci"n directa o lectura del teclado. /l proceso de iniciali$aci"n ya se ha e=aminado veamos ahora la asignaci"n directa y la lectura del teclado. A** -( ) &+$!. (1 '$&(' 1#!.( La asignaci"n de datos a los miembros de una variable estructura se hace mediante el operador punto. La sinta=is es: <nombre variable estructura> . <nombre miembro> = datos; /jemplo: strcpy(cd1.titulo,"Granada"); cd1.precio=3450.75; cd1.num_cancion=7; otro ejemplo: struct coleccion_CD cd1; printf("Titulo:"); gets(cd1.titulo); printf("Precio:"); scanf("%f",&cd1.precio); printf("Numero de cancines:"); scanf("%d",&cd1.num_canciones);
de 12
UNIVERSIDAD AUTNOMA DE BAJA CALIFORNIA FACULTAD DE INGENIERA (UNIDAD MEXICALI) DOCUMENTO DEL SISTEMA DE CALIDAD
/l operador puntero 55< sirve para acceder a los datos de la estructura a partir de un puntero. 0ara utili$ar este operador se debe definir primero una variable puntero para apuntar a la estructura. # continuaci"n utilice simplemente el operador puntero para apuntar a un miembro dado. La asignaci"n de datos a estructuras utili$ando el operador puntero tiene el formato: <puntero estructura> -> <nombre miembro>=datos; 0or ejemplo una estructura estudiante: struct estudiante { char nombre[40]; int matricula; float nota; } &e puede definir ptr_est como un puntero a la estructura struct estudiante *ptr_est; struct estudiante mejor; # los miembros de la estructura estudiantes se pueden asignar datos como sigue ' siempre y cuando la estructura ya tenga su espacio de almacenamiento por ejemplo con malloc'): > bien tenga la direcci"n de una variable estructura ). ptr_est=&mejor; /* ptr_est obtiene la direccin de mejor */ strcpy( ptr_est->nombre,"Francisco Meraz"); ptr_est->matricula=60007; ptr_est->nota=8.5; L *.#'$ & +!=(')$*+,! & #!$ -.'#*.#'$ &i ahora desea introducir la informaci"n en la estructura basta con acceder a los miembros de la estructura con el operador punto o flecha ' puntero ). &e puede introducir la informaci"n desde el teclado o desde un archivo o asignar valores de calculos. #s si z es una variable de tipo estructura complejo se lee parte real parte imaginaria y se calcula el modulo: struct complejo { float pr; float pi; float modulo; }; struct complejo z; printf(" Parte real:"); scanf("%f",&z.pr); printf(" Parte imaginaria:"); scanf("%f",&z.pi); z.modulo=sqrt(z.pr*z.pr + z.pi*z.pi); R *#1 '$' +!=(')$*+,! &e recupera informaci"n de una estructura utili$ando el operador de asignaci"n o una sentencia de salida ' printf( ) , puts( ),...). ?gual !ue antes se puede emplear el operador punto y el operador flecha' puntero ). /l formato general C"digo 4C5.65,78 2evisi"n 7 0%gina 4
de 12
UNIVERSIDAD AUTNOMA DE BAJA CALIFORNIA FACULTAD DE INGENIERA (UNIDAD MEXICALI) DOCUMENTO DEL SISTEMA DE CALIDAD
de 12
UNIVERSIDAD AUTNOMA DE BAJA CALIFORNIA FACULTAD DE INGENIERA (UNIDAD MEXICALI) DOCUMENTO DEL SISTEMA DE CALIDAD
struct empleados { char nombre_emp[30]; struct info_dir direccion_emp; double salario; }; struct clientes { char nombre_cliente[30]; struct info_dir direccion_clien; double saldo; }; /jemplo de estructuras anidadas #include<stdio.h> struct registro_operaciones entrada( ); struct fecha { unsigned int mes, dia, anyo; }; struct tiempo { unsigned int horas, minutos; }; struct registro_operaciones { long nuemro_cuenta; float cantidad; int tipo_operacion; struct fecha f; struct tiempo t; }; int main( ) { struct registro_operacion w; w=entrada( ); printf(" Operacion relacionada "); printf(" %1d ",w.numero_cuenta); printf(" %d / %d / %d ",w.f.dia,w.f.mes,w.f.anyo); printf(" %d : %d ",w.t.horas,w.t.minutos); return 0; } struct registro_operaciones entrada( ) { struct time t; struct date d; struct registro_operaciones una; printf(" Numero de cuenta: "); C"digo 4C5.65,78 2evisi"n 7 0%gina 6
de 12
UNIVERSIDAD AUTNOMA DE BAJA CALIFORNIA FACULTAD DE INGENIERA (UNIDAD MEXICALI) DOCUMENTO DEL SISTEMA DE CALIDAD
de 12
UNIVERSIDAD AUTNOMA DE BAJA CALIFORNIA FACULTAD DE INGENIERA (UNIDAD MEXICALI) DOCUMENTO DEL SISTEMA DE CALIDAD
struct nomina { char nombre[30]; int dependientes; char departamento[10]; float horas_dias[7]; float salario; }empleado[100]; /* Un array de 100 empleados */
MATERIAL DE APO>O
0uedes consultar las siguientes direcciones electr"nicas para encontrar m%s informaci"n: http:EEFebpages.ull.esEusersEfsandeEtalfEcursocE http:EEabsopa.dis.ulpgc.esEcppEintro_cE
B)
D7$ L#! -0 E% '*+*+( 10
DESARROLLO DE LA PR/CTICA
Una compa*a almacena la informaci"n relacionada a sus proveedores: .mero de control del proveedor. .ombre del proveedor Ciudad en la !ue reside el proveedor. .mero de artculos diferentes !ue provee. /scriba un programa !ue pueda llevar a cabo las siguientes transacciones: a) b) c) d) #ltas de los proveedores. 3odificaciones por nmero de control del proveedor. Gajas por nmero de control del proveedor. Consultas. a. (ado el nombre del proveedor informar la ciudad en la !ue reside y el nmero de artculos !ue provee. b. (ada la clave del proveedor informar todos sus datos. c. (esplegar los datos de todos los proveedores ordenados por nombre de # a H as como el total de artculos !ue proveen entre todos y cuales son los + proveedores m%s importantes es decir los !ue proveen mayor cantidad de artculos. d. 2egresar al men principal. -erminar. C"digo 4C5.65,78 2evisi"n 7 0%gina 8
e)
de 12
UNIVERSIDAD AUTNOMA DE BAJA CALIFORNIA FACULTAD DE INGENIERA (UNIDAD MEXICALI) DOCUMENTO DEL SISTEMA DE CALIDAD
de 12
UNIVERSIDAD AUTNOMA DE BAJA CALIFORNIA FACULTAD DE INGENIERA (UNIDAD MEXICALI) DOCUMENTO DEL SISTEMA DE CALIDAD
NOTAA SERA PARA UN M/XIMO DE 100 PACIENTES9 > NO DEBERA ACEPTAR DOS NUMERO DE SEGURO IGUALES0
D7$ J# 6 E% '*+*+( 5 &e re!uiere hacer un programa para llevar el registro de los clientes de un banco para cada cliente se pedir%n los siguientes datos: .umero de cuenta .ombre del cliente (irecci"n -el9fono CU20 Cantidad con la !ue abrir% la cuenta /l programa presentara las siguientes opciones: a) #pertura de la cuenta. b) Consultas a. 0or nmero de cuenta b. 4eneral ordenada alfab9ticamente por nombre del cliente c. 2egreso al men principal. c) Gajas del cliente. d) 2etiro por nmero de cuenta solo si e=iste. e) (ep"sito por nmero de cuenta solo si e=iste. f) -erminar. D7$ V+ '! E% '*+*+( 5 &e re!uiere de un programa para llevar el registro de los miembros de un club deportivo para cada socio del club se pedir%n los siguientes datos. .umero de credencial. .ombre del socio. (irecci"n /dad -el9fono &e=o
de 12
UNIVERSIDAD AUTNOMA DE BAJA CALIFORNIA FACULTAD DE INGENIERA (UNIDAD MEXICALI) DOCUMENTO DEL SISTEMA DE CALIDAD
*) &) )
NOTAA SERA PARA UN M/XIMO DE 100 SOCIOS > NO DEBERA DE ACEPTAR 2 NUMEROS DE CREDENCIAL IGUALES0
de 12
UNIVERSIDAD AUTNOMA DE BAJA CALIFORNIA FACULTAD DE INGENIERA (UNIDAD MEXICALI) DOCUMENTO DEL SISTEMA DE CALIDAD
0reguntas sobre la pr%ctica de forma ?.(?I?(U#L !ue har% el maestro al finali$ar la pr%ctica a cada alumno.
Los resultados ser%n solo a nivel visuali$aci"n no ser%n impresos 9stos podr%n variar dependiendo de los ejercicios !ue el alumno realice.
B0 ANEXOS
&i deseas informaci"n de como hacerle para !ue los resultados de tus programas tengan una mejor presentaci"n en la pantalla: http:Eya!ui.m=l.uabc.m=EJpnavarroEejemplo5ncurses.html para un ejemplo sencillo.
40 REFERENCIAS
de 12