Logo Studenta

registros - Hector Campos

¡Estudia con miles de materiales!

Vista previa del material en texto

Registros 
 
07 DE NOVIEMBRE DE 2020 
 
 
Programación D-24 
Horario: M y V de 11 a 1 
Hector Campos Serna 
Código. 215646659 
Modulo 4 
Investigación cadenas 
07/12/2020 
 
Registros 
 
En C los registros se representan mediante el tipo de dato denominado struct, eso 
el término es habitual denominar estructura al tipo registro de C. Al igual que ocurre 
con los arrays, el C permite definir variables de tipo struct sin necesidad de definir 
previamente el tipo correspondiente. 
Es una buena costumbre definir previamente un tipo antes de definir variables. 
 
Un registro es una estructura de datos que permite almacenar un conjunto de 
elementos no necesariamente del mismo tipo. Los vectores y matrices son 
estructuras de datos que permiten almacenar un conjunto de datos del mismo 
tipo.Un registro normalmente almacena un conjunto de datos que están 
relacionados entre si. 
 
Ejemplos de registros podrían ser los datos de un alumno (código, apellido y 
nombre, carrera que cursa), una historia clínica de un paciente (numero 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. 
 
Veamos la sintaxis para declarar un registro en el lenguaje C: 
 
struct producto { 
 int codigo; 
 char descripcion[41]; 
 float precio; 
}; 
 
Hemos declarado un registro llamado "producto" con tres campos uno de tipo int 
llamado codigo, otro de tipo cadena de caracteres llamado descripcion 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. 
 
De todas formas, como se ha señalado, lo adecuado es definir el tipo Paciente 
mediante una cláusula typedef: 
 
 
 
 
 
 
Uso de registros. 
A partir de una variable de tipo struct se pueden acceder a los atributos que lo 
conforman usando el operador . (punto) y el nombre del campo. Cada campo es del 
tipo que se declaró en el struct. 
Ejemplo: 
 
 
 
 
 
En la sentencia 
1, pac1.nombre es una variable de tipo Cadena y por tanto para asignarle valor debe 
recurrirse a la función strcpy. En la 2, pac1.apellido es también de tipo Cadena y 
para hallar su longitud se aplica la función strlen. Si se quiere leer la edad de pac1, 
se necesita un formato %d por ser pac1.edad de tipo int en la sentencia 3. En la 
sentencia 4, pac1.sexo es de tipo char. Finalmente si se quisiera sumar las 
temperaturas del paciente se podría poner una sentencia como la 5, donde suma 
es de tipo float. 
Arrays de registros 
La manera habitual de trabajar con los registros es agrupándolos en arrays. De esta 
manera un array de registros no es más que una colección de datos, como podría 
ser una clase con respecto al registro Alumno, un aeropuerto con respecto Vuelo, o 
un hospital respecto al registro Paciente. 
Declaración. La mejor forma de usar un array es mediante la declaración previa de 
su tipo con una cláusula typedef. 
Por ejemplo: 
 
 
 
 
 
 
 
 
Uso de los arrays de registros. Para usar un array de struct hay que mezclar el 
uso de los arrays con el uso de los campos de un struct. Por ejemplo, si definimos 
una variable usp de tipo Hospital, usp[3] es un dato de tipo Paciente y usp[3].nombre 
es un dato de tipo Cadena que contiene el nombre del paciente que ocupa la cuarta 
posición del array. 
Ejemplo: 
 
 
 
 
 
 
 
 
Para leer se pone: 
 scanf(“tipo de dato”,&Nombre de la estructura.campo); 
 
Para imprimir se pone: 
 printf(“ Enunciado tipo de dato ”,Nombre de la estructura.campo); 
 
Operaciones estructuras y acceso campos 
Operaciones estructuras: 
1. operaciones sobre un campo en particular; 
2. el paso de una estructura como parámetro; 
3. afectaciones y comparaciones entre estructuras son prohibidas. 
Uso de un campo: 
struct libro { 
 char titulo[20]; /* título del libro */ 
 char autor[20]; /* autor del libro */ 
 int num; /* número de libro */ 
 }; 
 
struct libro lib1,lib2; 
Para accesar los campos de lib1 y lib2 se usa el operador . de la forma siguiente: 
 lib1.titulo[i] o lib2.titulo[i] 
 para accesar el (i+1) caracter del título 
 
 lib1.autori[i] o lib2.autor[i] 
 para accesar el (i+1) caracter del autor 
 lib1.num o lib2.num 
 para el número del libro 
 
Si por algún caso, los datos de las tres variables, fuesen los mismos, podemos 
asignar los valores de ésta forma: 
 
Alumno1=alumno2; 
Alumno3=alumno2; 
 
O también: 
 
Alumno1=alumno3=alumno2; 
 
Ya que, al contener los mismos miembros, es como si se tratacen de datos tipo int, 
float o char, por consiguiente podemos hacer las asignaciones anteriores. 
Una estructura la podemos inicializar así: 
 
struct datos 
{ 
 char nombre[30]; 
 char apellido[20]; 
 int edad; 
 char dirección[100]; 
 char fecha_nac[8]; 
}alumno1 = {“Manuel”, 
 “Ortez”, 
 20, 
 “San Salvador, El Salvador”, 
 “27/04/86”, 
 }; 
 
 
 
 
 
 
 
 
 
 
 
 
Registros y funciones 
No olvides que si en una función 
Si en una función un parámetro responde a registro, puedes usarlo como una vía 
de entrada de datos a la función, pero también nos sirve para retornar datos de 
salida. 
Si este es tu propósito, nunca apliques un new sobre el parámetro, pues perderás 
la referencia original. 
Typedef La palabra reservada typedef proporciona un mecanismo para la creación 
de sinónimos (o alias) para tipos de datos anteriormente definidos. 
Por ejemplo: typedef struct ejemplo 
Ejemplo: define Ejemplo como un sinónimo de ejemplo. Una forma alternativa de 
definir una estrutura es: 
typedef 
struct { 
char c; int i;} 
Podemos ahora utilizar Ejemplo para declarar variables del tipo struct, por ejemplo, 
arreglo a[10]; 
typedef se utiliza a menudo para crear seudonimos para los tipos de datos basicos. 
Si tenemos por ejemplo un programa que requiere enteros de 4 bytes podría usar 
el tipo int en un programa y el tipo long en otro. Para garantizar portabilidad podemos 
utilizar typedef para crear un alias de los enteros de 4 bytes en ambos sistemas 
Registro: ejemplo de sintaxis 
 
 
Bibliografía: 
 
https://www.tutorialesprogramacionya.com/cya/detalleconcepto.php?punto=27&codigo=27&inicio=1
5 
 
http://lsiweb.lsi.us.es/docencia/get.php?id=6418 
 
http://cryptomex.org/Tutorial-LengC/estructura.html 
 
http://ingeduardoarellanohernandez.blogspot.com/2013/03/registros.html 
 
https://webs.um.es/ldaniel/iscyp17-18/15-registros.html 
 
https://www.fing.edu.uy/tecnoinf/mvd/cursos/prinprog/material/teo/prinprog-teorico08.pdf 
https://www.tutorialesprogramacionya.com/cya/detalleconcepto.php?punto=27&codigo=27&inicio=15
https://www.tutorialesprogramacionya.com/cya/detalleconcepto.php?punto=27&codigo=27&inicio=15
http://lsiweb.lsi.us.es/docencia/get.php?id=6418
http://cryptomex.org/Tutorial-LengC/estructura.html
http://ingeduardoarellanohernandez.blogspot.com/2013/03/registros.html
https://webs.um.es/ldaniel/iscyp17-18/15-registros.html

Continuar navegando

Materiales relacionados

33 pag.
mprogintc

SIN SIGLA

User badge image

Stiven Fajardo

62 pag.
Apuntes curso C avanzado y C__

User badge image

Materiales Generales