250 likes | 450 Views
Registros. Departamento de Computación Escuela de Ingeniería de Sistemas Facultad de Ingeniería Universidad de Los Andes. Tipos de Datos. Simples: Almacenan un solo valor (enteros, reales, caracteres, apuntadores, l ó gicos).
E N D
Registros Departamento de Computación Escuela de Ingeniería de Sistemas Facultad de Ingeniería Universidad de Los Andes
Tipos de Datos • Simples: Almacenan un solo valor (enteros, reales, caracteres, apuntadores, lógicos). • Compuestos o estructurados: Almacenan uno o más valores (arreglos, registros, cadenas de caracteres).
Registro • Generalización del concepto de variable • Variable: Puede tener como máximo un valor. • Registro: Representa una colección de valores , llamados campos, lógicamente relacionados, donde cada uno puede tener un tipo diferente (estructura heterogénea).
Registros: Representación Gráfica Nombre del registro Persona Registro de 5 campos cuyo nombre es Persona
Registros: Notación Algorítmica Registro nombre_registro tipo_dato campo1 tipo_dato campo2 ……… tipo_dato campon fin_registro
Registros: Notación Algorítmica Ejemplo Registro Empleado Cadena nombre Cadena CI entero num_dependientes real sueldo fin_registro
Registros: Definición en C++ • Para definir registros en C++ se utiliza la palabra struct. struct Empleado { char nombre[31]; // Vector de caracteres (cadena) char CI[10]; // Vector de caracteres (cadena) int num_dependientes; float sueldo; }
Cadenas de Caracteres • Una cadena de caracteres (string) es un conjunto de caracteres - incluido el blanco - que se almacenan en localidades contiguas de memoria. Se representa como un vector de caracteres. fecha char fecha[11];
Cadenas de Caracteres fecha Nota: El caracter ‘\0’ al final de la cadena es indispensable para indicar el fin de la cadena
Registros: Definición en C++ Ejemplo #define kMaxArtistaLong 50 #define kMaxTituloLong 50 struct CDInfo { short raiting; // campo1 char artista[ kMaxArtistaLong + 1 ]; // campo2 char titulo[ kMaxTituloLong + 1 ]; // campo3 };
Registros: Declaración en C++/C Al declarar una variable de tipo registro (struct) se reserva un grupo de localidades consecutivas de memoria relacionadas por el hecho que tienen el mismo nombre y diferentes tipos.
Registros: Declaración en C/C++ • Una definición de tipo struct crea un tipo de datos nuevo. De la misma forma como usamos el tipo short o float para declarar una variable, podemos usar este nuevo tipo de datos para declarar una variable de tipo struct. struct CDInfo miInfo; En C++ se puede omitir la palabra struct. CDInfo miInfo;
Registros: Declaración en C/C++ Nombre de la variable miInfo Valores de los campos Campos del registro CDInfo
Registros: Acceso • Para tener acceso a los campos de una variable de tipo registro se utiliza el operador ( . ) Ejemplo Notación Algoritmica miInfo.rating = 7; miInfo.artista = “Shakira”; miInfo.titulo = “Pies Descalzos”;
Registros: Acceso • Para tener acceso a los campos de una variable de tipo registro se utiliza el operador ( . ) Ejemplo Notación en lenguaje C y C++ miInfo.rating = 7; gets(miInfo.artista) scanf(“%s”,miInfo.titulo);
Registros: Ejemplo (1) struct datos { char num_carnet[9]; char nombre[30]; int edad; char sexo; char direccion[50]; };
Registros: Ejemplo (2) /************************************************ // Declaraciòn de un registro struct datos { charnum_carnet[9]; char nombre[30]; int edad; char sexo; chardireccion[50]; }; intmain() { struct datos alumno; printf("\n Introduzca los datos del alumno:"); printf("\n Nùmero de Carnet: "); scanf("%s",alumno.num_carnet); printf("\n Nombre: "); scanf("%s",alumno.nombre); printf("\n Edad: "); scanf("%d",&alumno.edad); printf("\n Sexo: "); alumno.sexo=getchar(); alumno.sexo=getchar(); printf("\n Direcciòn: "); gets(alumno.direccion); gets(alumno.direccion); printf("\n ****** Los datos Capturados fueron: "); printf("\n Nùmero de Carnet: %s",alumno.num_carnet); printf("\n Nombre: %s ",alumno.nombre); printf("\n Edad: "); printf("%d", alumno.edad); printf("\n Sexo: "); putchar(alumno.sexo); printf("\n Direcciòn: "); puts(alumno.direccion); return 0; }
Registros: Instrucciones Válidas • A.campo1 = 3; • X = A.campo4; • cin >> A.campo3; • cout << A.campo3; • A.campo1 = A.campo3; • Y = Suma (A.campo1, b, c); • b = A.campo6 / 2; Cada campo de una variable de tipo registro puede usarse como una variable cualquiera.
Registros: Inicialización struct Alumno { long nmat; char nombre[41]; }; struct Alumno alu1={76986, "Luis Perez"}, alu2 = { 67549, "Mikel Lasa"};
Registros: Inicialización • Definición de nuevos tipos de datos • typedef se puede usar para definir nuevos nombres de datos explicítamente, usando algunos de los tipos de datos de C, donde su formato es: • typedef <tipo> <nombre>;
Registros: Inicialización • Se puede usar typedef para crear nombres para tipos más complejos, como una estructura, por ejemplo: typedef struct direc { char nombre[30]; char calle[40]; char ciudad[20]; char estado[3]; unsigned int codigo; } sdirec; sdirec info_direc={"Vicente Fernandez","Fantasia 2000","Dorado","MMX",12345};
Registros: Inicialización • en este caso direc sirve como una etiqueta a la estructura y es opcional, ya que ha sido definido un nuevo tipo de dato, por lo que la etiqueta no tiene mucho uso, en donde sdirec es el nuevo tipo de datos e info_direc es una variable del tipo sdirec, la cual es una estructura.
Registros: Ejemplo (3) Crear un vector de registros #include <iostream.h> struct estudiante { // Definición de la estructura char nombre[30]; short nota1; short nota2; short nota3; short promedio; }; #define num 11 struct estudiante est[num]; // Declaración de un vector de // registros como una variable global
Ejercicios • Realizar el ejemplo tres pasando el vector de registros como parámetro a todos los procedimiento especificados. • Definir un registro AGENDA que contenga los siguientes campos: • Nombre • Direccion • Telefono • Celular • Correo electrónico • Fecha de nacimiento
Ejercicios • Una librería almacena la siguiente información sobre cada uno de sus libros: CODIGO, TITULO, AUTOR y PRECIO. Tomando en cuenta que la información debe estar almacenada en orden ascendente por los códigos de los libros, realizar un programa en C++ que realice lo siguiente: • Insertar información de nuevos libros, la cual debe mantenerse ordenada en todo momento. • Buscar registros por el campo código. • Buscar todos los libros escritos por un autor. • Borrar la información correspondiente a un libro.