Descarga la aplicación para disfrutar aún más
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
Compartir