PDF de programación - clase6 PARTE II Registros

Imágen de pdf clase6 PARTE II Registros

clase6 PARTE II Registrosgráfica de visualizaciones

Actualizado el 21 de Marzo del 2018 (Publicado el 3 de Enero del 2018)
520 visualizaciones desde el 3 de Enero del 2018
2,0 MB
43 paginas
Creado hace 9a (30/09/2014)
Teoría – Cecilia Sanz

Temas

Estructura de datos



Registro



Definición – Operaciones



Ejemplos



Cláusula WITH



Estructura de datos - Ejemplo

Nombre
Raza
Edad
Peso

Nombre
Número de documento
Domicilio
Fecha de Nacimiento

Película

Título
Director
Año

Persona

Un REGISTRO nos permitirá representar estos datos

Una manera natural y lógica de agrupar la información de cada empleado en
una sola estructura es declarar un tipo REGISTRO asociando el conjunto de
datos de cada empleado.

Cada dato que compone el Registro se denomina CAMPO.

Por lo tanto, se podrá definir al tipo Registro del empleado como:

Campos
del
registro

 Nombre
 DNI
 Fecha Nac.
 NroLegajo
 Sexo
 Sueldo
 Antigüedad

Estructura de datos – REGISTRO
Heterogénea

Estática

Campos

pelicula







Título: string
Director:string
Año:integer
Categoría: char



Título: string
Director:string
Año:integer
Categoría: char





2 string
2 integer
1 char







Los valores almacenados
en un registro son
llamados campos, y cada
uno de ellos tiene un
identificador. Los campos
pueden ser nombrados
individualmente, como
variables ordinarias.


Registros

DECLARACIÓN DE UN REGISTRO

Estructura de datos – REGISTRO

Se declara en la zona del TYPE



S
A
C
I
T
S
I
R
E
T
C
A
R
A
C



Type
identificador = RECORD
campo1: tipo;
campo2: tipo;
end;
Var
nombreVariable: identificador;


Estructura de datos – REGISTRO

Los campos se identifican de a uno junto al tipo al que
pertenecen.

Type
identificador = RECORD
campo1: tipo;
campo2: tipo;
end;




Puede ser de cualquier
tipo predefinido, o
definido por el usuario
(subrango, string)



S
A
C
I
T
S
I
R
E
T
C
A
R
A
C

Estructura de datos – REGISTRO - Ejemplo
Program uno;
Type periodo=1950..2014;
pelicula = record
titulo: string;
director:string;
año:periodo;
categoria: char;
end;



Var
peli1,peli3:perro;

Begin
… OPERACIONES?
End.


Registros

OPERACIONES

Registros

Asignación

Estructura de datos – REGISTRO – Operaciones
Con la variable REGISTRO
Sólo se puede realizar la
operación de asignación.

peli1:= peli3;

siendo peli1 y peli3 del
mismo tipo registro

Con los campos del registro
Las operaciones con los campos
del registro son las que el tipo de
campo permita. Para acceder a un
campo se utiliza
la notación
calificada:
nombrevarregistro.campo
peli1.director
permite
válidas para un entero.


todas

las operaciones

Estructura de datos – REGISTRO
¿Cómo le asignamos valor a un registro?

Program uno;
Type
periodo=1950..2014;
pelicula = record
titulo: string;
director:string;
año:periodo;
categoria: char;
end;


Var
p1,p3:pelicula;
Begin
p1.titulo:=“La era del hielo”;
p1.director:= “Chris Wedge”;
p1.año:= 2002;
p1.categoria:=‘A’;

End.



¿Qué pasa si no asignamos
todos los campos?


Registros

Lectura de sus datos

Estructura de datos – REGISTRO
¿Cómo le asignamos valor a un registro?

Program uno;
Type
perro = record
nombre: string;
raza:string;
edad:integer;
cant-come: integer;
peso:real;
end;

si no
los

todos

¿Qué pasa
leemos
campos?



Var
p1,p3:perro;
Begin
read(p1.nombre);
read(p1.raza);
read(p1.edad)
read(p1.cant-come);
read(p1.peso);
End.





NO SE PUEDE

read(p1);




¿Cómo

modularizamos?

Estructura de datos – REGISTRO
¿Cómo le asignamos valor a un registro?

Program uno;
Type
perro = record

end;
Procedure
p:perro);
begin
read (p.nombre);

leer

(var

read(p.raza);
read(p.edad)
read(p.cant-come);
read(p.peso);
End;

Var
p1:perro;
Begin
leer(p1);
End.

¿Cómo imprimimos

los datos de un

registro?



Registros

Impresión de los datos que lo

componen (CAMPOS)

Estructura de datos – REGISTRO – Cómo le
imprimimos un registro?

Program uno;
Type
perro = record

end;
Var
p1:perro;
Begin
leer(p1);

write(p1.nombre);
write(p1.raza);
write(p1.edad);
write(p1.cant-come);
write(p1.peso);
End.



NO SE PUEDE

write(p1);



¿Pueden no imprimirse

todos los campos?




Cómo

modularizamos

?

Estructura de datos – REGISTRO – Cómo
imprimimos un registro?

Program uno;
Type
perro = record

end;
Procedure imprimir (p:perro);
begin
write(p.nombre);



write(p.raza);
write(p.edad)
write(p.cant-come);
write(p.peso);
End;
Var
p1:perro;
Begin
leer(p1);
imprimir(p1);
End.

Registros

¿Comparación?

Estructura de datos – REGISTRO – ¿Cómo
comparamos dos registros?

Se debe realizar la comparación campo a campo.

No se puede realizar en forma directa entre dos variables
registro, es decir,
if (p1 = p3) then


Estructura de datos – REGISTRO – Cómo
comparamos dos registros?

Program uno;
Type
perro = record

end;
Procedure leer(VAR p:perro);
begin

end;


Var
p1,p3:perro;
Begin
leer(p1);
leer(p3);
if (p1.nombre = p3.nombre)and
(p1.edad = p3.edad)and
(p1.raza = p3.raza)and
(p1.cant-come = p3.cant-come)and
(p1.peso = p3.peso)then ….
end.



Registros

EJEMPLO

Estructura de datos – REGISTRO – Ejercicio
Se pide realizar un programa que lea datos sobre los perros que
visitan una veterinaria hasta leer uno con nombre “XXX”. Al
finalizar informar la cantidad de perros de raza ovejero, y la
cantidad de perros de 2 años que comen una vez por día.




nombre=“XXX”


nombre=“HOOK”
raza=“ovejero”
edad=2
cant-come=1
Peso=35,5


nombre=“PUPI”
raza=“labrador”
edad=2
cant-come=3
Peso=40,8


nombre=“MIK”
raza=“ovejero”
edad=2
cant-come=2
Peso=35,5


2
1


Estructura de datos – REGISTRO – Ejercicio

Program uno;
Type
perro = record

end;
Procedure leer(VAR p:perro);
begin

end;


Var
p:perro; cantO,cantTot:integer;
Begin
leer(p); cantO:=0; cantTot:=0;
while(p.nombre<>”XXX”) do
begin
if (p.raza= “ovejero”) then
cantO:= cantO+1;
if (p.cant= 1) and (p.edad=2) then
cantTot:= cantTot+1;
leer(p);
end;
Informar(cantO, cantTot);
end.


Registros

¿Se puede tener como campo de un

registro otro registro?

Estructura de datos – REGISTRO de REGISTROS

perro = record
nombre: string;
raza:string;
edad:integer;
cant-come: integer;
peso:real;
dia:1..31;
mes:1..12;
año:1900..2012;
end;


fecha=record
dia:1..31;
mes:1..12;
año:1900..2010;
end;
perro = record
nombre: string; raza:string;
edad:integer; cant-come: integer;
peso:real;
fec:fecha;
end;


damos valor?

Nacimiento

¿Cómo le



Estructura de datos – REGISTRO de REGISTROS

Program dos;
type
fecha=record
dia:1..31;
mes:1..12;
año:1900..2010;
end;
perro = record
nombre:string;
raza:string;
edad:integer;
cant-come: integer;
peso:real;
fec:fecha;
end;
Var p1:perro;

Begin
p1.nombre:=“HOOK”;
p1.raza:= “Ovejero”
p1.edad;= 2;
p1.cant-come:=1
p1.peso:=35,5;
p1.fec.dia:=5;
p1.fec.mes:=3;
p1.fec.año:=2007;
end.


Estructura de datos – REGISTRO de REGISTROS
Program dos;
type
fecha=record

end;
perro = record

end;

Var
p1:perro;


Procedure leer (var p:perro)
Begin
read(p.nombre);
read(p.raza);
read(p.edad);
read(p.cant-come);
read(p.peso);
read(p.fec.dia);
read(p.fec.mes);
read(p.fec.año);
end;


Registros

EJEMPLOS

Estructura de datos – REGISTRO Ejercicio

Realice un programa que lea información sobre los
bebés nacidos en La Plata en el último año, hasta leer
uno de nombre Lolo e informe el nombre del bebé con
mayor peso, y la cantidad de bebés nacidos en junio.



Estructura de datos – REGISTRO Ejercicio

Program bebes;
Type
cadena=string[30]; dias=1..31; meses: 1..12; años=2011..2014;
fecha= record
dia: dias;
mes: meses;
año: años;
bebe=record
apellido: cadena;
nombre: cadena;
peso: real;
fnac: fecha;
end;


Estructura de datos – REGISTRO Ejercicio

Var
b:bebe;
cantJunio:integer;
max:real;
maxNom:cadena;
Begin
leer(b);
max:=-1;
cantJunio:=0;



while (b.nombre<>’Lolo’) do
begin
if (b.fnac.mes=6) then cantJunio:= cantJunio + 1;
if (b.peso > max) then
begin
max:= b.peso;
maxNom:=b.nombre;
end;
leer(b);
end;
write(maxNom, cantJunio);
End.

Estructura de datos – REGISTRO – EJERCICIO

Se pide realizar un programa que lea información de grupos
de música. De cada grupo se cuenta con (nombre, canción,
votos recibidos). Se pide calcular e informar el grupo que ha
obtenido en promedio más votos por sus canciones. Tenga en
cuenta los siguientes puntos:

• La lectura termina cuando llega el grupo de nombre ZZZ.
• Un grupo puede tener más de una canción
• Todas las canciones de un grupo se leen consecutivas



Estructura de datos – REGISTRO – Ejercicio

Nombre= ‘Agapornis’
Cancion= ‘La llave’
Votos= 4000

Nombre= ‘Miranda’
Cancion=‘Es Mentira’
Votos= 1000

Nombre= ‘Agapornis’
Cancion=
‘Persiana
Americana’
Nota= 6000

Nombre= ‘Miranda’
Promedio = 1000

Nombre= ‘Agapornis’
Promedio = 5000

Nombre= ‘Los Piojos’
Cancion= ‘Ll
  • Links de descarga
http://lwp-l.com/pdf8168

Comentarios de: clase6 PARTE II Registros (0)


No hay comentarios
 

Comentar...

Nombre
Correo (no se visualiza en la web)
Valoración
Comentarios...
CerrarCerrar
CerrarCerrar
Cerrar

Tienes que ser un usuario registrado para poder insertar imágenes, archivos y/o videos.

Puedes registrarte o validarte desde aquí.

Codigo
Negrita
Subrayado
Tachado
Cursiva
Insertar enlace
Imagen externa
Emoticon
Tabular
Centrar
Titulo
Linea
Disminuir
Aumentar
Vista preliminar
sonreir
dientes
lengua
guiño
enfadado
confundido
llorar
avergonzado
sorprendido
triste
sol
estrella
jarra
camara
taza de cafe
email
beso
bombilla
amor
mal
bien
Es necesario revisar y aceptar las políticas de privacidad