Documentos de Académico
Documentos de Profesional
Documentos de Cultura
COMPUTACIN I (323)
entero, los tipos de publicacin, las fechas y los nombre de empresas son de tipo cadenas
de caracteres asi como tambin el idioma y el autor.
Las salidas se dan solo en las opciones cuatro y cinco del men principal, donde segn el
cdigo o tipo de publicacin se generaran los resultados.
Etapa 3 La Particin
El problema en cuestin se puede plantear en45 rutinas principales a saber:
a) Inicializar los arrays de registros: a travs de tres ciclos repetitivos for.
b) Presentar un men de opciones con los cinco requerimientos: para esto hacemos el uso
tpico de salida de pantalla de la librera crt write para desplegar las opciones y un
estructura de toma de decisin multiple.
c) Ingresar los datos de las publicaciones en un vector de registros y salir al men principal: de
forma secuencial.
d) Ordenar por mtodo burbuja: esto se hace a travs de dos ciclos for y una estructura de
seleccin simple.
e) Generar los reportes comparando el dato introducido por el teclado el la opcin de
reportes con cada dato de tipo o cdigo de cada posicin de cada vector.
posicion(i,24); escribe(chr(205));
fin;
para i:=1 hasta 24 hacer
inicio
posicion(1,i); escribe (chr(186));
posicion(80,i); escribe (chr(186));
fin;
posicion (1,1); escribir (chr(201));
posicion (80,1); escribir (chr(187));
posicion (1,24); escribir (chr(200));
posicion (80,24); escribir (chr(188));
posicion (25,2); escribir ('Universidad Nacional Abierta');
posicion (20,10); escribir ('S I S T E M A D E I N V E N T A R I O ');
posicion (21,12); escribir ('
D I S P U B L I . c a ');
escribir;
escribir;
escribir;
posicion (4,21); escribir ('Franclin ');
posicion (4,22); escribir ('C.I x.xxx.xxx');
posicion (65,22); escribir ('05-DIC-2009');
pausa;
fin;
1 INGRESAR REVISTA');
2 INGRESAR PERIODICO');
3 INGRESAR LIBROS');
4 VER REPORTE POR CODIGO');
5 VER REPORTE POR TIPO DE PUBLICACION');
Esc PARA SALIR');
para i := 1hasta limite-1 hacer {Metodo burbuja para ordenar por codigo}
para j := 1 hasta limite-i hacer
si (vr[j].rev_codigo > vr[j+1].rev_codigo) entonces
inicio
aux := vr[j];
vr[j] := vr[j+1];
vr[j+1] := aux;
fin;
fin;
Para hacer el reporte.
var
i,j:entero;
codigo:cadena de caracteres;
incio
borrapantalla;
escribe(' Ingrese un tipo de revista, periodico o libro bucarlo en el sistema');
lee(codigo);
borrapantalla;
para i:=1 hasta limite hacer
inicio
si(vr[i].rev_tipo = codigo) entonces
inicio
escribe ('
Titulo de Revista: ',vr[i].rev_titulo);
escribe ('
Numero: ',vr[i].rev_numero);
escribe ('
Fecha: ',vr[i].rev_fech);
escribe ('
Empresa: ',vr[i].rev_empresa);
escribe ('
Precio: ',vr[i].rev_precio);
escribe;
fin;
si (vp[i].per_tipo = codigo) entonces
inicio
escribe ('
Titulo Periodico: ',vp[i].per_titulo);
escribe ('
Fecha: ',vp[i].per_fech );
escribe ('
Empresa: ',vp[i].per_empresa);
escribe ('
Precio: ',vp[i].per_precio);
escribe;
fin;
si (vl[i].lib_tipo = codigo) entonces
inicio
escribe ('
Titulo Revista: ',vl[i].lib_titulo);
escribe ('
Autor : ',vl[i].lib_autor );
escribe ('
escribe ('
escribe ('
escribe;
fin;
fin;
Idioma: ',vl[i].lib_idioma );
Editorial: ',vl[i].lib_editorial );
Precio: ',vl[i].lib_precio);
stop;
fin;
Objetivo 7. Robustez
El men principal esta diseado dentro de una estructura repetitiva repeat seguido de una
estructura de seleccin simple para que admitiera solo las opciones fijadas en el men. En caso de
presionar cualquier otra entrada no especificada el programa hace caso omiso y dibuja el men
nuevamente.
type
revista = record
{registro de revistas}
rev_codigo: integer; {campo del registro de tipo entero}
rev_titulo: string;
rev_precio: integer;
rev_cantidad:integer;
rev_Numero:integer;
rev_tipo: string;
rev_fech: string;
rev_empresa:string;
end;
periodico = record
{registro de periodico}
per_codigo:integer; {campos}
per_titulo:string;
per_precio:integer;
per_tipo : string;
per_cantidad: integer;
per_fech:string;
per_empresa :string;
end;
libro = record
{registros de libros}
lib_codigo:integer; {campos}
lib_titulo:string;
lib_precio:integer;
lib_tipo : string;
lib_cantidad: integer;
lib_autor: string;
lib_idioma:string;
lib_editorial:string;
end;
var
i:integer;
begin
clrscr;
textcolor(14);
for i:=1 to 80 do
begin
gotoxy(i,1); write(chr(205));
gotoxy(i,24); write(chr(205));
end;
for i:=1 to 24 do
begin
gotoxy(1,i); write(chr(186));
gotoxy(80,i); write(chr(186));
end;
gotoxy(1,1); write(chr(201));
gotoxy(80,1); write(chr(187));
gotoxy(1,24); write(chr(200));
gotoxy(80,24);write(chr(188));
gotoxy(25,2); writeln('Universidad Nacional Abierta');
gotoxy(20,10); writeln('S I S T E M A D E I N V E N T A R I O ');
gotoxy(21,12);writeln('
D I S P U B L I . c a ');
writeln;
writeln;
writeln;
gotoxy(4,21); writeln('Franclin ');
gotoxy(4,22); writeln('C.I x.xxx.xxx');
gotoxy(65,22); writeln('05-DIC-2009');
readkey;
textcolor(15);
end;
procedure llenar_revistas;
var
i,j,fin :integer;
aux : revista; {variable de tipo registro revista}
begin
i:=1;
fin:=0;
while (fin=0) do
begin
if (vr[i].rev_codigo=0) then {para posicionarme al final del vector}
begin
clrscr;
writeln('Ingrese el codigo de revista');{<<-----------DE AQUI}
readln(vr[i].rev_codigo);
{llenando un registro revista}
writeln('Ingrese el titulo de revista');
readln(vr[i].rev_titulo);
writeln('Ingrese el precio de la revista');
read(vr[i].rev_precio);
writeln('Ingrese la cantidad en existencia');
readln(vr[i].rev_cantidad);
writeln('Ingrese el numero de revista');
readln(vr[i].rev_numero);
writeln('Ingrese el tipo de categoria revista');
readln(vr[i].rev_tipo);
writeln('Intgrese la fecha en que se publico');
readln(vr[i].rev_fech);
writeln('Ingrese la empresa que lo publico');
readln(vr[i].rev_empresa); {<<------------------------------HASTA AQUI}
fin:=1;
end;
i:=i+1;
end;
for i := 1 to limite-1 do {Metodo burbuja para ordenar por codigo}
for j := 1 to limite-i do
if (vr[j].rev_codigo > vr[j+1].rev_codigo) then
begin
aux := vr[j];
vr[j] := vr[j+1];
vr[j+1] := aux;
end;
end;
procedure llenar_periodicos;
var
i,j,fin :integer;
aux : periodico;
begin
i:=1;
fin:=0;
while(fin=0) do
begin
if vp[i].per_codigo=0 then
begin
clrscr;
writeln('Ingrese el codigo de periodico');
readln(vp[i].per_codigo);
writeln('Ingrese el titulo de periodico');
readln(vp[i].per_titulo);
writeln('Ingrese el tipo de categoria del periodico');
readln(vp[i].per_tipo);
writeln('Ingrese el precio del periodico');
read(vp[i].per_precio);
writeln('Ingrese la cantidad disponible');
readln(vp[i].per_cantidad);
writeln('Ingrese la fecha en que se publico');
readln(vp[i].per_fech);
writeln('Ingrese la empresa que lo publico');
readln(vp[i].per_empresa);
fin:=1;
end;
i:=i+1;
end;
for i := 1 to limite-1 do
for j := 1 to limite-i do
if (vp[j].per_codigo > vp[j+1].per_codigo) then
begin
aux := vp[j];
vp[j] := vp[j+1];
vp[j+1] := aux;
end;
end;
procedure llenar_libros;
var
i,j,fin :integer;
aux:libro;
begin
i:=1;
fin:=0;
while(fin=0) do
begin
if vl[i].lib_codigo=0 then
begin
clrscr;
writeln('Ingrese el codigo del libro');
readln(vl[i].lib_codigo);
writeln('
Titulo de Revista: ',vr[i].rev_titulo);
writeln('
Numero: ',vr[i].rev_numero);
writeln('
Fecha: ',vr[i].rev_fech);
writeln('
Empresa: ',vr[i].rev_empresa);
writeln('
Precio: ',vr[i].rev_precio);
writeln;
end;
if (vp[i].per_tipo = codigo) then
begin
writeln('
Titulo Periodico: ',vp[i].per_titulo);
writeln('
Fecha: ',vp[i].per_fech );
writeln('
Empresa: ',vp[i].per_empresa);
writeln('
Precio: ',vp[i].per_precio);
writeln;
end;
if (vl[i].lib_tipo = codigo) then
begin
writeln('
Titulo Revista: ',vl[i].lib_titulo);
writeln('
Autor : ',vl[i].lib_autor );
writeln('
Idioma: ',vl[i].lib_idioma );
writeln('
Editorial: ',vl[i].lib_editorial );
writeln('
Precio: ',vl[i].lib_precio);
writeln;
end;
end;
readkey;
end;
procedure reporteporcodigo;
var
i,j:integer;
codigo:integer;
begin
clrscr;
writeln(' Ingrese un Codigo de revista, periodico o libro bucarlo en el sistema');
readln(codigo);
clrscr;
for i:=1 to limite do
begin
if (vr[i].rev_codigo = codigo) then
begin
writeln('
Titulo de Revista: ',vr[i].rev_titulo);
writeln('
Numero: ',vr[i].rev_numero);
writeln('
Fecha: ',vr[i].rev_fech);
writeln('
Empresa: ',vr[i].rev_empresa);
writeln('
Precio: ',vr[i].rev_precio);
writeln;
end;
if (vp[i].per_codigo = codigo) then
begin
writeln('
Titulo Periodico: ',vp[i].per_titulo);
writeln('
Fecha: ',vp[i].per_fech );
writeln('
Empresa: ',vp[i].per_empresa);
writeln('
Precio: ',vp[i].per_precio);
writeln;
end;
if (vl[i].lib_codigo = codigo) then
begin
writeln('
Titulo Revista: ',vl[i].lib_titulo);
writeln('
Autor : ',vl[i].lib_autor );
writeln('
Idioma: ',vl[i].lib_idioma );
writeln('
Editorial: ',vl[i].lib_editorial );
writeln('
Precio: ',vl[i].lib_precio);
writeln;
end;
end;
readkey;
end;
procedure menu_principal;
var
opc:char;
begin
repeat
clrscr;
writeln('
Elige una Opcion');
writeln;
writeln;
writeln('
1 INGRESAR REVISTA');
writeln('
2 INGRESAR PERIODICO');
writeln('
3 INGRESAR LIBROS');
writeln('
4 VER REPORTE POR CODIGO');
writeln('
5 VER REPORTE POR TIPO DE PUBLICACION');
writeln('
Esc PARA SALIR');
opc:= readkey;
case opc of
'1':llenar_revistas;
'2':llenar_periodicos;
'3':llenar_libros;
'4':reporteporcodigo;
'5':reporteportipo;
end;
until(opc =esc);
end;
BEGIN
inicializar;
presentacion;
menu_principal;
END.