Está en la página 1de 9

Ministerio del Poder Popular

Para la Educación Universitaria


Universidad Politécnica Territorial
“José Antonio Anzoátegui”

Unidad III:
ESTRUCTURAS
DE
REGISTROS

Prof.: Francismar Reyes

Correo:
ing.francismarreyesbello@gmail.com

Watsapp:(0424)8537528
Ministerio del Poder Popular
Imag Para la Educación Universitaria
Image 0 Imagen
en Universidad Politécnica Territorial n 7 ... ...
“José Antonio Anzoátegui”
1 ...

Definición: Un registro es una estructura de datos que permite almacenar un conjunto de


elementos no necesariamente del mismo tipo.
Un registro normalmente almacena un conjunto de datos que están relacionados
entre sí. Ejemplos de registros podrían ser los datos de un alumno (nro de legajo,
apellido y nombre, carrera que cursa), una historia clínica de un paciente (nro de
documento, obra social que tiene, enfermedades), etc.
A un vector o matriz accedemos a sus elementos por medio de subíndices, a los
elementos de un registro se los llama campos y tienen cada uno un nombre.

Declaración de estructuras.

Las estructuras se pueden declarar de la siguente forma:

struct nombre_estructura {
campo/miembro estructura;
};

Donde:

--- struct es una palabra reservada de C que indica la composición de una estructura.

--- nombre_estructura asigna el nombre a dicha estructura.

--- campo/miembro estructura; son tipos de datos que contiene, se les puede llamar
campo ó miembro.

Si deseáramos hacer una agenda telefónica, la forma para declararla podría ser:

struct agenda_entrada {
char nombre[50];
char apellido[60];

char telefono[10];
char edad;
};
Ministerio del Poder Popular
Imag Para la Educación Universitaria
Image 0 Imagen
en Universidad Politécnica Territorial n 7 ... ...
“José Antonio Anzoátegui”
Declaración de estructuras. 1 ...

Las estructuras se pueden declarar de la siguente forma:

struct nombre_estructura {
campo/miembro estructura;
};

Donde:

--- struct es una palabra reservada de C que indica la composición de una estructura.

--- nombre_estructura asigna el nombre a dicha estructura.

--- campo/miembro estructura; son tipos de datos que contiene, se les puede llamar campo
ó miembro.

Si desearamos hacer una agenda telefónica, la forma para declararla podría ser:

struct agenda_entrada {
char nombre[50];
char apellido[60];

char telefono[10];
char edad;
};

Otra forma sería:

struct agenda_entrada {
char nombre[50];
char apellido[60];
char telefono[10];
char edad;
}familiar, laboral;

e incluso podríamos declararla como:

struct {
char nombre[50];
char apellido[60];
char telefono[10];
char edad;
}familiar, laboral;
Ministerio del Poder Popular
Imag Para la Educación Universitaria
Image 0 Imagen
en Universidad Politécnica Territorial n 7 ... ...
“José Antonio Anzoátegui”
1 ...
En el primer ejemplo estamos declarando la estructura, luego, cuando la necesitemos, le
asignaremos las variables. Para el segundo y tercer ejemplo hemos declarado las variables
junto a la estructura, esto nos trae el inconveniente de no poder declarar más variables a lo
largo del programa pues las estructuras se tienen que declarar antes de la función main.

Tomando el primer ejemplo, agenda_entrada es un nuevo tipo de dato que hemos creado.


Para poner a trabajar nuestra creación solo tenemos que asignarle una variable:

struct agenda_entrada agenda;

Como acceder a un campo del registro:

Para acceder a un campo del registro se coloca primero el nombre de la “variable ”

.
seguido de un “ ” Y el nombre del “campo”.

Ejemplo:

Como vemos, nuestra variable "agenda" es de tipo agenda_entrada. Si por ejemplo


queremos ir al contenido del campo "nombre" solo tenemos que escribir:

agenda.nombre;

Estructura y arreglos.

Aplicando un poco de lógica, nos daremos cuenta que nuestra agenda solo almacenaría
una entrada, cosa poco práctica. Para solucionar esto solo tenemos que declarar un array ó
arreglo de estructura:

struct estructura_agenda agenda[30]

como vemos, hemos declarado que "agenda" sea un vector de 30 elementos. La manera
de acceder a cada elemento sería:

amigo[número_de_elemento].campo_estructura

Donde:

--- amigo[número_de_elemento] hace referencia a la posicion del elemento dentro del


vector. amigo[0] hace referencia al primer elemento.

--- .campo_estructura apunta hacia un miembro del elemento


referenciado. amigo[0].edad nos mostraría la edad contenida en el primer elemento.
Ministerio del Poder Popular
Imag Para la Educación Universitaria
Image 0 Imagen
en Universidad Politécnica Territorial n 7 ... ...
“José Antonio Anzoátegui”
Problema 1: 1 ...
Declarar un registro que permita almacenar el codigo, descripcion y precio de un producto.
Luego definir dos variables de dicho tipo, cargarlas e imprimir el nombre del producto que
tiene mayor precio.

Solución:

Si definimos el registro "producto" sus campos pueden ser el


"codigo","descripcion" y "precio".
A diferencia de vectores y matrices los registros deben declararse y luego definir variables
de dicho tipo. Veamos la sintaxis para declarar un registro en el lenguaje C:

struct producto {
int codigo;
char descripcion[41];
float precio;
}; //obligatorio el punto y coma

Hemos declarado un registro llamado "producto" con tres campos uno de tipo int llamado
código, otro de tipo cadena de caracteres llamado descripción y finalmente el campo
"precio" de tipo float.
Como vemos los tres campos están relacionados y hacen referencia a las características
que puede tener todo producto que vende una empresa.
Pero si solo declaramos el registro no nos sirve de nada, debemos definir una o más
variables de dicho tipo.

Es común declarar el registro fuera de cualquier función para luego poder utilizarlo en
muchas funciones (de todos modos la declaración del struct podría estar dentro de la
función main):
struct producto {
int codigo;
char descripcion[41];
float precio;
}; //obligatorio el punto y coma
Ministerio del Poder Popular
Imag Para la Educación Universitaria
Image 0 Imagen
en Universidad Politécnica Territorial n 7 ... ...
“José Antonio Anzoátegui”
1 ...
Una vez creado el registro procedemos a definir variables de tipo Registro:

Para definir una variable la definimos de tipo "producto" le antecedemos la palabra clave
struct junto con el nombre del struct:
struct producto pro1,pro2;
Estamos definiendo dos variables llamadas pro1 y pro2 de tipo producto. No hay ningún
problema de definir cada variable en una línea distinta:
struct producto pro1;
struct producto pro2;
Cada una de las variables pro1 y pro2 reserva espacio para almacenar tres campos cada
una.

PRO1

Código descripción precio

PRO1

Código descripción precio

Una vez definidos el registro y sus variables precedemos a cargar la variable pro1
debemos cargar campo a campo:

printf("Ingrese el codigo del producto:");

scanf("%i",&pro1.codigo);

fflush(stdin);

printf("Ingrese la descripcion:");

gets(pro1.descripcion);

printf("Ingrese el precio:");
Ministerio del Poder Popular
Imag Para la Educación Universitaria
Image 0 Imagen
en Universidad Politécnica Territorial n 7 ... ...
“José Antonio Anzoátegui”
scanf("%f",&pro1.precio); 1 ...

Es decir primero indicamos el nombre de la variable (pro1) y seguidamente el campo que


estamos cargando (codigo)

La carga del segundo registro llamado pro2 es idéntico a la carga del primer registro:

printf("Ingrese el codigo del producto:");

scanf("%i",&pro2.codigo);

fflush(stdin);

printf("Ingrese la descripcion:");

gets(pro2.descripcion);

printf("Ingrese el precio:");

scanf("%f",&pro2.precio);

Para verificar cuál de los dos productos tiene un precio mayor debemos acceder al
campo precio de cada uno de los dos productos:

if (pro1.precio>pro2.precio)

Lo mismo cuando procedemos a imprimir por pantalla debemos indicar que campo
debemos mostrar y no podemos pasar el registro completo:

printf("El producto %s tiene un precio mayor",pro1.descripcion);

#include<stdio.h>
#include<conio.h>

struct producto {
int codigo;
char descripcion[41];
Ministerio del Poder Popular
Imag Para la Educación Universitaria
Image 0 Imagen
en Universidad Politécnica Territorial n 7 ... ...
“José Antonio Anzoátegui”
1 ...
float precio;
}; //obligatorio el punto y coma

int main()
{
struct producto pro1,pro2;
printf("Ingrese el codigo del producto:");
scanf("%i",&pro1.codigo);
fflush(stdin);
printf("Ingrese la descripcion:");
gets(pro1.descripcion);
printf("Ingrese el precio:");
scanf("%f",&pro1.precio);
printf("Ingrese el codigo del producto:");
scanf("%i",&pro2.codigo);
fflush(stdin);
printf("Ingrese la descripcion:");
gets(pro2.descripcion);
printf("Ingrese el precio:");
scanf("%f",&pro2.precio);
if (pro1.precio>pro2.precio)
{
printf("El producto %s tiene un precio mayor",pro1.descripcion);
}
else
{
if (pro2.precio>pro1.precio)
{
printf("El producto %s tiene un precio mayor",pro2.descripcion);
}
else
{
printf("Tienen igual precio");
}
}
getch();
return 0;
}
Ministerio del Poder Popular
Imag Para la Educación Universitaria
Image 0 Imagen
en Universidad Politécnica Territorial n 7 ... ...
“José Antonio Anzoátegui”
1 ...

También podría gustarte