Académique Documents
Professionnel Documents
Culture Documents
Etapa 2: especificaciones.
Post-condiciones:
Entradas datos vlidos. Solo los datos se graban.
Entradas reporte estadstico. Aparecen un cuadro de resumen de
la informacin estadstico.
Etapa 3: la particin.
El problema global se dividir en base a las opciones del men principal y
submens:
Ingresar
Consultar
Modificar
Eliminar
Salir del men principal
Emitir reporte informacin estadstico.
Etapa 7: presentacin.
Los comentarios se aaden entre llaves []. Esto se aade normalmente al
seudocdigo del programa en su realizacin (objetivo 6 y 8).
Algoritmo en seudocdigo.
Programa producto_lcteos.
Comienzo [declaracin de las variables]
Max: 200;
Productos: array[1..4] of string[2] = ('LD','LE','YG','HE');
estratos: array['A'..'C'] of string[3] = ('CLA','CLB','CLC');
edades : array[1..3] of string[3] = ('EJ','AD','ADM');
sexo : array[1..2] of char = ('F','M');
tipo
datosreg = record
total : integer;
eligen : integer;
fin;
datosencuesta = record
prod : string[2];
sigl : string[3];
estr : string[3];
sex : char;
fech : string[12];
fin;
regfinal = record
datoencu : array[1..max] of datosencuesta;
regd : datosreg;
fin;
var
encut : regfinal;
cont : integer;
escribir(4= helados);
repetir
tec := readkey;
until tec in['1','2','3','4'];
case tec of
'1' : prod := copy(Productos[1],1,2);
'2' : prod := copy(Productos[2],1,2);
'3' : prod := copy(Productos[3],1,2);
'4' : prod := copy(Productos[4],1,2);
fin
borrar pantalla;
escribir('***** Datos Encuestado *****');
escribir('<< Elija Estratos Socio-econmicos >>');
escribir('A = Clase Alta y Media Alta');
escribir('B = Clase Media Tpica');
escribir('C = Clase Media Baja');
repetir
tec := upcase(readkey);
until tec in['A','B','C'];
case tec of
'A' : sigl := copy(estratos['A'],1,3);
'B' : sigl := copy(estratos['B'],1,3);
'C' : sigl := copy(estratos['C'],1,3);
Fin;
repetir
escribir('***** Datos Encuestado *****');
escribir('<< Elija Edad >>');
escribir('J = Juvenil');
escribir('A = Adulto');
escribir('M = Adulto Mayor');
repetir
tec := upcase(readkey);
until tec in['J','A','M'];
case tec of
'J' : estr := copy(edades[1],1,2);
'A' : estr := copy(edades[2],1,2);
'M' : estr := copy(edades[3],1,3);
fin;
borrar pantalla;
escribir('***** Datos Encuestado *****');
escribir('<< Elija Sexo >>');
escribir('M = Masculino');
escribir('F = Femenino');
repetir
tec := upcase(readkey);
until tec in['M','F'];
case tec of
fin;
fin;
procedimiento de consulta;
var
consu : string[2];
h : integer;
te : char;
begin
borrar pantalla;
ir_xy(10,2);escribir('*** Consultas ***');
ir_xy(2,4);escribir('<<< Elija Sigla >>>');
ir_xy(2,6);escribir(' 1 = LD');
ir_xy(2,7);escribir(' 2 = LE');
ir_xy(2,8);escribir(' 3 = YG');
ir_xy(2,9);escribir(' 4 = HE');
repetir
te := readkey;
until te in['1','2','3','4'];
case te of
'1' : consu := copy(Productos[1],1,2);
'2' : consu := copy(Productos[2],1,2);
'3' : consu := copy(Productos[3],1,2);
'4' : consu := copy(Productos[4],1,2);
fin;
borrar;
for h := 1 to cont - 1 do
begin
si encut.datoencu[h].prod = consu entonce
begin
escribir('*** Consultas ***');
escribir;
escribir(encut.datoencu[h].prod);
escribir(encut.datoencu[h].sigl);
escribir(encut.datoencu[h].estr);
escribir(encut.datoencu[h].sex);
escribir(encut.datoencu[h].fech);
escribir;
escribir(' Pulse Una Tecla');
borrar pantalla;
fin;
fin;
fin;
procedimiento modificar;
var
tes : char;
nume, u, w : integer;
modi : array[1..50] of integer;
tomo : string[2];
cambi : string[12];
begin
borrar pantalla;
ir_xy(10,2);escribir('***** Modificar Datos *****');
ir_xy(2,4);escribir('Poducto 1 = LD');
ir_xy(2,5);escribir('Poducto 2 = LE');
ir_xy(2,6);escribir('Poducto 3 = YG');
ir_xy(2,7);escribir('Poducto 4 = HE');
ir_xy(2,9);escribir('>>> Elija Producto A Modificar <<<');
repetir
tes := readkey;
until tes in['1','2','3','4'];
case tes of
'1' : tomo := 'LD';
'2' : tomo := 'LE';
'3' : tomo := 'YG';
'4' : tomo := 'HE';
fin;
for w := 1 to cont - 1 do
si encut.datoencu[w].prod = tomo entonce
modi[w] := w;
borrar pantalla;
u := 1;
ir_xy(10,2);write('*** Productos Encontrados Son ***');
for w := 1 to cont - 1 do
begin
ir_xy(2,3 + u);write('N.',w,' = ',encut.datoencu[w].prod);
u := u + 1;
fin;
repetir
tes := readkey;
until (tes in['1'..char((u - 1) + 48)]) or (tes = #27);
borrar pantalla;
ir_xy(10,2);escribir('**** El Producto Selecionado Es ****');
ir_xy(2,4);escribir('N. 1 = ',encut.datoencu[ord(tes) - 48].prod);
ir_xy(2,5);escribir('N. 2 = ',encut.datoencu[ord(tes) - 48].sigl);
ir_xy(2,6);escribir('N, 3 = ',encut.datoencu[ord(tes) - 48].estr);
ir_xy(2,7);escribir('N. 4 = ',encut.datoencu[ord(tes) - 48].sex);
ir_xy(2,8);escribir('N. 5 = ',encut.datoencu[ord(tes) - 48].fech);
ir_xy(10,10);escribir('<<< Elija Dato De Modificacion >>>');
repetir
tes := readkey;
until tes in['1','2','3','4','5'];
borrar pantalla;
case tes of
'1' : begin ir_xy(2,4);escribir(encut.datoencu[ord(tes) - 48].prod);
nume := 1; fin;
'2' : begin ir_xy(2,4);escribir(encut.datoencu[ord(tes) - 48].sigl);
nume := 2; fin;
'3' : begin ir_xy(2,4);escribir(encut.datoencu[ord(tes) - 48].estr);
nume := 3; fin;
'4' : begin ir_xy(2,4);escribir(encut.datoencu[ord(tes) - 48].sex);
nume := 4; fin;
'5' : begin ir_xy(2,4);escribir(encut.datoencu[ord(tes) - 48].fech);
nume := 5; fin;
fin;
with encut.datoencu[ord(tes) - 48] do
begin
si nume = 1 entonce
begin
ir_xy(2,3);escribir('<< Elija Producto >>');
ir_xy(2,5);escribir ('1 = Leche Descremada');
ir_xy(2,6);escribir('2 = Leche Entera');
ir_xy(2,7);escribir ('3 = Yogur');
gotoxy(2,8);escribir('4 = Helados');
repetir
tes := readkey;
until tes in['1','2','3','4'];
case tes of
'1' : cambi := copy(Productos[1],1,2);
'2' : cambi := copy(Productos[2],1,2);
'3' : cambi := copy(Productos[3],1,2);
'4' : cambi := copy(Productos[4],1,2);
fin;
cambi[0] := chr(2);
fin;
si nume = 2 entonce
begin
ir_xy(2,3);escribir('<< Elija Estratos Socio-economicos >>');
ir_xy(2,5);escribir('A = Clase Alta y Media Alta');
ir_xy(2,6);escribir('B = Clase Media Tipica');
ir_xy(2,7);escribir('C = Clase Media Baja');
repetir
tes := upcase(readkey);
until tes in['A','B','C'];
case tes of
'A' : cambi := copy(estratos['A'],1,3);
'B' : cambi := copy(estratos['B'],1,3);
'C' : cambi := copy(estratos['C'],1,3);
fin;
fin;
si nume = 3 entonce
begin
ir_xy(2,3);escribir('<< Elija Edad >>');
ir_xy(2,5);escribir('J = Juvenil');
ir_xy(2,6);escribir('A = Adulto');
ir_xy(2,7);escribir('M = Adulto Mayor');
repetir
tes := upcase(readkey);
until tes in['J','A','M'];
case tes of
'J' : cambi := copy(edades[1],1,2);
'A' : cambi := copy(edades[2],1,2);
'M' : cambi := copy(edades[3],1,3);
fin;
cambi[0] := chr(3);
fin;
si nume = 4 entonce
begin
ir_xy(2,3);write('<< Elija Sexo >>');
ir_xy(2,5);write('M = Masculino');
ir_xy(2,6);write('F = Femenino');
repetir
tes := upcase(readkey);
until tes in['M','F'];
case tes of
'M' : cambi := copy(sexo[1],1,1);
'F' : cambi := copy(sexo[2],1,1);
fin;
cambi[0] := chr(1);
fin;
si nume = 5 entonce
begin
ir_xy(2,3);write('<< Entre Fecha >>');
ir_xy(2,5);write('Dia/Mes/Ao : ');
ir_xy(16,5);readln(cambi);
fin;
fin;
ir_xy(10,9);write('Acepta El Cambio [S/N]');
repetir
tes := upcase(readkey);
until tes in['S','N'];
si tes = 'S' entonce
begin
case nume of
1 : encut.datoencu[ord(tes) - 48].prod := copy(cambi,1,length(cambi));
2 : encut.datoencu[ord(tes) - 48].sigl := copy(cambi,1,length(cambi));
3 : encut.datoencu[ord(tes) - 48].estr := copy(cambi,1,length(cambi));
repetir
tes := readkey;
until (tes in['1'..chr(z + 48)]) or (tes = #27);
si tes in['1'..chr(z + 48)] entonce
begin
for z := 1 to cont - 1 do
begin
si z <> posi[ord(tes) - 48] entonce
begin
tempo.datoencu[p] := encut.datoencu[z];
p := p + 1;
fin;
fin;
for z := 1 to p - 1 do
begin
encut.datoencu[z] := tempo.datoencu[z];
fin;
cont := z;
fin;
fin;
begin
si (encut.datoencu[h].sex = 'F') and
(encut.datoencu[h].sigl = estratos['A']) entonce
repo[2,1] := repo[2,1] + 1;
si (encut.datoencu[h].sex = 'M') and
(encut.datoencu[h].sigl = estratos['A']) entonce
repo[2,2] := repo[2,2] + 1;
si (encut.datoencu[h].sex = 'F') and
(encut.datoencu[h].sigl = estratos['B']) entonce
repo[2,3] := repo[2,3] + 1;
si (encut.datoencu[h].sex = 'M') and
(encut.datoencu[h].sigl = estratos['C']) entonce
repo[2,4] := repo[2,4] + 1;
si (encut.datoencu[h].sex = 'F') and
(encut.datoencu[h].sigl = estratos['C']) entonce
repo[2,5] := repo[2,5] + 1;
fin;
if encut.datoencu[h].estr = 'ADM' entonce
begin
si (encut.datoencu[h].sex = 'F') and
(encut.datoencu[h].sigl = estratos['A']) entonce
repo[3,1] := repo[3,1] + 1;
si (encut.datoencu[h].sex = 'M') and
(encut.datoencu[h].sigl = estratos['B']) entonce
repo[3,2] := repo[3,2] + 1;
si (encut.datoencu[h].sex = 'F') and
(encut.datoencu[h].sigl = estratos['C']) entonce
repo[3,3] := repo[3,3] + 1;
fin;
fin;
h := h + 1;
si h > cont - 1 entonce
sal := verdadero;
until sal = verdadero;
borrar pantalla;
ir_xy(10,2);
escribir('**** Reporte De ',Productos[1],' ****');
ir_xy(1,4);
escribir('EJ/F/A = ',repo[1,1]);
ir_xy(1,5);
escribir('EJ/M/B = ',repo[1,2]);
ir_xy(1,6);
escribir('EJ/F/C = ',repo[1,3]);
ir_xy(1,7);
escribir('');
ir_xy(1,8);
escribir('AD/F/A = ',repo[2,1]);
ir_xy(1,9);
escribir('AD/M/A = ',repo[2,2]);
ir_xy(1,10);
escribir('AD/F/B = ',repo[2,3]);
ir_xy(1,11);
escribir('AD/M/C = ',repo[2,4]);
ir_xy(1,12);
escribir('AD/F/C = ',repo[2,5]);
ir_xy(1,13);
escribir('');
ir_xy(1,14);
escribir('ADM/F/A = ',repo[3,1]);
ir_xy(1,15);
escribir('ADM/M/B = ',repo[3,2]);
ir_xy(1,16);
escribir('ADM/F/C = ',repo[3,3]);
ir_xy(10,18);
escribir('<<<< Pulse Una Tecla >>>>');
readkey;
fin;
procedimiento menu; {PROCEDIMIENTO DE MENU PRINCIPAL}
var
tecla : char;
sal : boolean;
begin
sal := false;
repeat
borrar pantalla;
textcolor(3);
ir_xy(20,3);
escribir('*** Menu General ***');
ir_xy(20,5);
escribir('[I]ncluir');
ir_xy(20,6);
escribir('[C]consultar');
ir_xy(20,7);
escribir('[M]modificar');
ir_xy(20,8);
escribir('[E]liminar');
ir_xy(20,9);
escribir('[R]reportes');
ir_xy(20,10);
escribir('[S]salir del Sistema');
textcolor(10);
ir_xy(21,5);
escribir('I');
ir_xy(21,6);
escribir('C');
ir_xy(21,7);
escribir('M');
ir_xy(21,8);
escribir('E');
ir_xy(21,9);
escrbir('R');
ir_xy(21,10);
escribir('S');
textcolor(7);
ir_xy(20,12);
escribir('<<< Elija Opcion >>>');
repetir
tecla := upcase(readkey);
until tecla in['I','C','M','E','R','S'];
borrar pantalla;
case tecla of
'I' : begin
incluir(encut.datoencu[cont]);
ordenaarray;
fin;
'C' : consulta;
'M' : modificar;
'E' : eliminar;
'R' : reporte;
'S' : sal := verdadero;
fin;
until sal = verdadero;
fin;
begin
cont := 1;
menu;
fin.