registros prof. flor narciso departamento de computación escuela de ingeniería de sistemas...

Post on 02-Feb-2016

225 Views

Category:

Documents

0 Downloads

Preview:

Click to see full reader

TRANSCRIPT

Registros

Prof. Flor NarcisoDepartamento de Computación

Escuela de Ingeniería de SistemasFacultad 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 mas 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 Edo.

civil

Edad Fecha

nac.

CI

Persona

Nombre del registro

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 EmpleadoCadena nombre Cadena CIentero num_dependientesreal 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.

‘1’ ‘2’ ‘ ’ ‘d’ ‘e’ ‘ ’ ‘M’

‘a’ ‘y’ ‘o’ ‘\0’

’0 1 2 3 4 5 6 7 8 9 10

fecha

char fecha[11];

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

Registros: Definición en C++

Ejemplo

#define kMaxArtistaLong 50#define kMaxTituloLong 50struct CDInfo{

short rating; // campo1

char artista[ kMaxArtistaLong + 1 ]; // campo2

char titulo[ kMaxTituloLong + 1 ]; // campo3

};

Registros: Declaración en 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++

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++

7 “Shakira” “Pies Descalzos”

ra

ti

n

g

artista titulo

miInfo

Nombre de la variable

Campos del registro CDInfo

Valores de los campos

Registros: Acceso

Para tener acceso a los campos de una variable de tipo registro se utiliza el operador .

Ejemplo

miInfo.rating = 7;

miInfo.artista = “Shakira”;

miInfo.titulo = “Pies Descalzos”;

Registros: Ejemplo (1)

struct ShortIntShort // Definicion del registro

{

short miShort1;

int miInt;

short miShort2;

};

struct ShortIntShort var; // Declaración de la variable var

Registros: Ejemplo (1)

2 -12 3

miShort1 miInt miShort2

var

Primer campo: var.miShort1 = 2

Segundo campo: var.miInt = -12

Tercer campo: var.miShort2 = 3

Acceso a los campos de la variable

Representación gráfica de la variable

Registros: Ejemplo (2)

#include <iostream.h>

struct baraja {char numero[8];char pinta[7];

};void main () {

struct baraja a;

a.numero[0] = ‘A’;a.numero[1] = ‘s’;anumero[2] = ‘\0’; // Caracter de fin de cadenacin >> a.pinta;cout << a.numero << “de” << a.pinta << endl;

}

Registros: Ejemplo (2)

‘A’ ‘s’ ‘\0’ ‘E’ ‘s’ ‘p’ ‘a’ ‘d’ ‘a’ ‘\0’

0 1 2 3 4 5 6 0 1 2 3 4 5 6

a

numero pinta

Nota: El caracter ‘\0’ al final de la cadena es indispensable

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: 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 11

struct estudiante est[num]; // Declaración de un vector de // registros como una variable global

Registros: Ejemplo (3) Crear un vector de registros

void LeerDatosPDI () {int k;

for (k = 0; k < num; k++) {cout << “Nombre del estudiante:” << endl;cin >> est[k].nombre;cout << “Nota Parcial 1:” << endl;cin >> est[k].nota1;cout << “Nota Parcial 2:” << endl;cin >> est[k].nota2;cout << “Nota Parcial 3:” << endl;cin >> est[k].nota3;

}}

Registros: Ejemplo (3) Listar nombre de estudiantes con

Parcial1 > 15

void Eximidos () {int k;

cout << “Estudiantes eximidos” << endl;for (k = 0; k < num; k++)

if (est[k].nota1 > 15) cout << est[k].nombre << endl;

}

Registros: Ejemplo (3) Calcular el promedio de notas de cada

estudiante

void CalcularPromedio () {int k;

for (k = 0; k < num; k++) est[k].promedio = (est[k].nota1 + est[k].nota2 +

est[k].nota3)/3;}

Registros: Ejemplo (3) Escribir el promedio de notas de cada

estudiante

void EscribirPromedio () {int k;

cout << “Nota promedio” << endl;for (k = 0; k < num; k++) cout << est[k].nombre << est[k].promedio << endl;

}

Registros: Ejemplo (3) Programa Principal

void main () {LeerDatosPDI ();Eximidos();CalcularPromedio();EscribirPromedio();

}

Registros: Paso de parámetros

Los registros pueden pasarse como parámetros a las funciones de la siguiente forma:– Un campo individual: por valor– La estructura completa: por valor– Un apuntador a la estructura: por referencia.

Nota: Arreglos de estructuras son automáticamente pasados por referencia.

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.

top related