![Page 1: Registros Departamento de Computación Escuela de Ingeniería de Sistemas Facultad de Ingeniería Universidad de Los Andes](https://reader035.vdocumento.com/reader035/viewer/2022070416/5665b4b91a28abb57c9384de/html5/thumbnails/1.jpg)
Registros
Departamento de ComputaciónEscuela de Ingeniería de Sistemas
Facultad de IngenieríaUniversidad de Los Andes
![Page 2: Registros Departamento de Computación Escuela de Ingeniería de Sistemas Facultad de Ingeniería Universidad de Los Andes](https://reader035.vdocumento.com/reader035/viewer/2022070416/5665b4b91a28abb57c9384de/html5/thumbnails/2.jpg)
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).
![Page 3: Registros Departamento de Computación Escuela de Ingeniería de Sistemas Facultad de Ingeniería Universidad de Los Andes](https://reader035.vdocumento.com/reader035/viewer/2022070416/5665b4b91a28abb57c9384de/html5/thumbnails/3.jpg)
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).
![Page 4: Registros Departamento de Computación Escuela de Ingeniería de Sistemas Facultad de Ingeniería Universidad de Los Andes](https://reader035.vdocumento.com/reader035/viewer/2022070416/5665b4b91a28abb57c9384de/html5/thumbnails/4.jpg)
Registros: Representación Gráfica
Nombre Edo.
civil
Edad Fecha
nac.
CI
Persona
Nombre del registro
Registro de 5 campos cuyo nombre es Persona
![Page 5: Registros Departamento de Computación Escuela de Ingeniería de Sistemas Facultad de Ingeniería Universidad de Los Andes](https://reader035.vdocumento.com/reader035/viewer/2022070416/5665b4b91a28abb57c9384de/html5/thumbnails/5.jpg)
Registros: Notación Algorítmica
Registro nombre_registro tipo_dato campo1
tipo_dato campo2
……… tipo_dato campon
fin_registro
![Page 6: Registros Departamento de Computación Escuela de Ingeniería de Sistemas Facultad de Ingeniería Universidad de Los Andes](https://reader035.vdocumento.com/reader035/viewer/2022070416/5665b4b91a28abb57c9384de/html5/thumbnails/6.jpg)
Registros: Notación Algorítmica
Ejemplo
Registro EmpleadoCadena nombre Cadena CIentero num_dependientesreal sueldo
fin_registro
![Page 7: Registros Departamento de Computación Escuela de Ingeniería de Sistemas Facultad de Ingeniería Universidad de Los Andes](https://reader035.vdocumento.com/reader035/viewer/2022070416/5665b4b91a28abb57c9384de/html5/thumbnails/7.jpg)
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;}
![Page 8: Registros Departamento de Computación Escuela de Ingeniería de Sistemas Facultad de Ingeniería Universidad de Los Andes](https://reader035.vdocumento.com/reader035/viewer/2022070416/5665b4b91a28abb57c9384de/html5/thumbnails/8.jpg)
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.
‘1’ ‘2’ ‘ ’ ‘d’ ‘e’ ‘ ’ ‘M’
’
‘a’ ‘y’ ‘o’ ‘\0’
’0 1 2 3 4 5 6 7 8 9 10
fecha
char fecha[11];
![Page 9: Registros Departamento de Computación Escuela de Ingeniería de Sistemas Facultad de Ingeniería Universidad de Los Andes](https://reader035.vdocumento.com/reader035/viewer/2022070416/5665b4b91a28abb57c9384de/html5/thumbnails/9.jpg)
Cadenas de Caracteres
‘1’ ‘2’ ‘ ’ ‘d’ ‘e’ ‘ ’ ‘M’’
‘a’ ‘y’ ‘o’ ‘\0’’
0 1 2 3 4 5 6 7 8 9 10
fecha
Nota: El caracter ‘\0’ al final de la cadena es indispensable para indicar el fin de la cadena
![Page 10: Registros Departamento de Computación Escuela de Ingeniería de Sistemas Facultad de Ingeniería Universidad de Los Andes](https://reader035.vdocumento.com/reader035/viewer/2022070416/5665b4b91a28abb57c9384de/html5/thumbnails/10.jpg)
Registros: Definición en C++ Ejemplo
#define kMaxArtistaLong 50#define kMaxTituloLong 50struct CDInfo{
short raiting; // campo1
char artista[ kMaxArtistaLong + 1 ]; // campo2
char titulo[ kMaxTituloLong + 1 ]; // campo3
};
![Page 11: Registros Departamento de Computación Escuela de Ingeniería de Sistemas Facultad de Ingeniería Universidad de Los Andes](https://reader035.vdocumento.com/reader035/viewer/2022070416/5665b4b91a28abb57c9384de/html5/thumbnails/11.jpg)
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.
![Page 12: Registros Departamento de Computación Escuela de Ingeniería de Sistemas Facultad de Ingeniería Universidad de Los Andes](https://reader035.vdocumento.com/reader035/viewer/2022070416/5665b4b91a28abb57c9384de/html5/thumbnails/12.jpg)
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;
![Page 13: Registros Departamento de Computación Escuela de Ingeniería de Sistemas Facultad de Ingeniería Universidad de Los Andes](https://reader035.vdocumento.com/reader035/viewer/2022070416/5665b4b91a28abb57c9384de/html5/thumbnails/13.jpg)
Registros: Declaración en C/C++
7 “Shakira” “Pies Descalzos” raiting artista titulo
miInfo
Nombre de la variable
Campos del registro CDInfo
Valores de los campos
![Page 14: Registros Departamento de Computación Escuela de Ingeniería de Sistemas Facultad de Ingeniería Universidad de Los Andes](https://reader035.vdocumento.com/reader035/viewer/2022070416/5665b4b91a28abb57c9384de/html5/thumbnails/14.jpg)
Registros: Acceso
• Para tener acceso a los campos de una variable de tipo registro se utiliza el operador ( . )
EjemplomiInfo.rating = 7;miInfo.artista = “Shakira”;miInfo.titulo = “Pies Descalzos”;
![Page 15: Registros Departamento de Computación Escuela de Ingeniería de Sistemas Facultad de Ingeniería Universidad de Los Andes](https://reader035.vdocumento.com/reader035/viewer/2022070416/5665b4b91a28abb57c9384de/html5/thumbnails/15.jpg)
Registros: Ejemplo (1)struct datos { char num_carnet[9]; char nombre[30]; int edad; char sexo; char direccion[50];};
![Page 16: Registros Departamento de Computación Escuela de Ingeniería de Sistemas Facultad de Ingeniería Universidad de Los Andes](https://reader035.vdocumento.com/reader035/viewer/2022070416/5665b4b91a28abb57c9384de/html5/thumbnails/16.jpg)
Registros: Ejemplo (2)/************************************************// Declaraciòn de un registrostruct datos { char num_carnet[9]; char nombre[30]; int edad; char sexo; char direccion[50];};
int main(){ 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;}
![Page 17: Registros Departamento de Computación Escuela de Ingeniería de Sistemas Facultad de Ingeniería Universidad de Los Andes](https://reader035.vdocumento.com/reader035/viewer/2022070416/5665b4b91a28abb57c9384de/html5/thumbnails/17.jpg)
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.
![Page 18: Registros Departamento de Computación Escuela de Ingeniería de Sistemas Facultad de Ingeniería Universidad de Los Andes](https://reader035.vdocumento.com/reader035/viewer/2022070416/5665b4b91a28abb57c9384de/html5/thumbnails/18.jpg)
Registros: Inicializaciónstruct Alumno {
long nmat;char nombre[41];
};
struct Alumno alu1={76986, "Luis Perez"}, alu2 = { 67549, "Mikel Lasa"};
![Page 19: Registros Departamento de Computación Escuela de Ingeniería de Sistemas Facultad de Ingeniería Universidad de Los Andes](https://reader035.vdocumento.com/reader035/viewer/2022070416/5665b4b91a28abb57c9384de/html5/thumbnails/19.jpg)
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>;
![Page 20: Registros Departamento de Computación Escuela de Ingeniería de Sistemas Facultad de Ingeniería Universidad de Los Andes](https://reader035.vdocumento.com/reader035/viewer/2022070416/5665b4b91a28abb57c9384de/html5/thumbnails/20.jpg)
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};
![Page 21: Registros Departamento de Computación Escuela de Ingeniería de Sistemas Facultad de Ingeniería Universidad de Los Andes](https://reader035.vdocumento.com/reader035/viewer/2022070416/5665b4b91a28abb57c9384de/html5/thumbnails/21.jpg)
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.
![Page 22: Registros Departamento de Computación Escuela de Ingeniería de Sistemas Facultad de Ingeniería Universidad de Los Andes](https://reader035.vdocumento.com/reader035/viewer/2022070416/5665b4b91a28abb57c9384de/html5/thumbnails/22.jpg)
Registros: Ejemplo (3) Crear un vector de registros
#include <iostream.h>
struct estudiante { // Definición de la estructurachar nombre[30];short nota1;short nota2;short nota3;short promedio;
};#define num 11struct estudiante est[num]; // Declaración de un vector de
// registros como una variable global
![Page 23: Registros Departamento de Computación Escuela de Ingeniería de Sistemas Facultad de Ingeniería Universidad de Los Andes](https://reader035.vdocumento.com/reader035/viewer/2022070416/5665b4b91a28abb57c9384de/html5/thumbnails/23.jpg)
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
![Page 24: Registros Departamento de Computación Escuela de Ingeniería de Sistemas Facultad de Ingeniería Universidad de Los Andes](https://reader035.vdocumento.com/reader035/viewer/2022070416/5665b4b91a28abb57c9384de/html5/thumbnails/24.jpg)
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.