Вы находитесь на странице: 1из 21

UNIVERSIDAD NACIONAL ABIERTA

VICERRECTORADO ACADEMICO
REA: INGENIERA
CARRERA: INGENIERIA INDUSTRIAL

TRABAJO PRCTICO
ASIGNATURA: COMPUTACIN I

CODIGO: 323

OBJETIVOS: 5,6, 7 Y 8.

FECHA DE ENTREGA AL ESTUDIANTE: ADJUNTO A LA PRIMERA PARCIAL

FECHA DE DEVOLUCIN: ADJUNTO A LA PRUEBA INTEGRAL

NOMBRE: LUIS LEANDRO LEONICE MRQUEZ

CEDULA DE IDENTIDAD: 17.540.595

CENTRO LOCAL: SUCRE

CARRERA: INGENIERIA INDUSTRIAL 280

LAPSO: 2014-2

NUMERO DE ORIGINALES:

FIRMA DEL ESTUDIANTE:

Introduccin

La metodologa MAPS significa por su siglas en ingls Methodology for


Algorithmic Problem Solving, es decir, Metodologa para la Solucin de Problemas
Algortmicos Y no es ms que un procedimiento estructurado que permite construir
algoritmos para la solucin de problemas. Presentando una serie de etapas que
deben seguirse detalladamente para obtener un diseo adecuado del algoritmo.
Estas etapas comprenden:
El Dialogo, donde se establecen las condiciones de inicio para el algoritmo,
es lo que se desea obtener.
Las especificaciones, en esta segunda etapa es donde se forman las
condiciones de entrada y salida del proceso.
La tercera etapa llamada, la divisin, es aqu donde se realiza la particin
de las rutinas en forma ordenada siguiendo paso a paso los procedimientos del
algoritmo.
Las abstracciones son las adaptaciones de las rutinas en una parte del
algoritmo que se utilizan en otra rutina siendo modificadas de acuerdo a las
necesidades del proceso.
Hasta aqu comprende las etapas a evaluar en el objetivo 5 te esta
asignatura. El diseo del algoritmo se aplica para el objetivo 6, la prueba de
robustez, que permite probar el algoritmo de forma sistemtica ser el objetivo 7 a
evaluar y por ltimo y como la etapa 5 de la metodologa MAPS est la
codificacin, que consiste en llevar a lenguaje pascal el algoritmo lo elaborado en
pseudocdigo.

Objetivo 5. Resolver problemas planteados algortmicamente usando la


metodologa MAPS
Etapa I. El Dilogo
El problema consiste en elaborar un programa que permita a la gerencia de
la compaa Vida y Salud tomar decisiones pertinentes en la elaboracin de
campaas de ventas y publicidad, de acuerdo a una encuesta realizada a 200
personas, con el fin de conocer la aceptacin del pblico de los productos
fabricados por la empresa, leche descremada, leche entera, yogurt y helados.
Se debe tomar en consideracin las siguientes especificaciones y adems
se le asignar las siglas correspondientes:
1) Productos: Leche Descremada (LD), Leche Entera (LE), Yogurt
(YG) Helados (HE).
2) Estrato Socio-econmico: Clase A (CLA) Alta y Media Alta; Clase B
(CLB) Media y tpica; Clase C (CLC) Media Baja.
3) Sexo: Femenino (F) y Masculino (M).
4) Edades: Juvenil (EJ), Adultos (AD) y Adultos Mayores (ADM)
La entrada de datos se har en secuencia del programa como sigue a
continuacin:
Se debe ingresar la descripcin, n de personas encuestadas, siglas de los
productos, estrato socio-econmico, edad, sexo, fecha de encuesta, cantidad de
personas que eligen el producto.
La salida de datos debe mostrar un men de opciones en el siguiente orden:
-

Incluir
Consultar
Modificar
Eliminar
Reportes
Salir del sistema

Adems debe mostrarse en pantalla cuando se consulte a un producto, por sus


siglas, toda la informacin referente al mismo; cuando se desee modificar y/o

eliminar datos del sistema debe aparecer un mensaje de confirmacin para


ejecutar la accin.
Se reportar un cuadro resumen aplicado al producto leche descremada (LD)
con la siguiente informacin estadstica:
-

N de personas en edad juvenil, sexo femenino, clase A


N de personas en edad juvenil, sexo masculino, clase B
N de personas en edad juvenil, sexo femenino, clase C
N de personas en edad Adultos sexo femenino, clase A
N de personas en edad Adultos sexo masculino, clase A
N de personas en edad Adultos sexo femenino, clase B
N de personas en edad Adultos sexo masculino, clase C
N de personas en edad Adultos sexo femenino, clase C
N de personas en edad Adultos Mayores sexo femenino, clase A
N de personas en edad Adultos Mayores sexo masculino clase B
N de personas en edad Adultos Mayores sexo femenino, clase C

Etapa II. Las Especificaciones


Pre-condiciones
Pre-entrada:
(Producto 1, producto2, producto n)^n>^ i {1,4}: Producto i {1,4} y es
una variable de tipo string
(Clase A, Clase B, Clase n) ^n>^ i {1,3}: Clase

{1,3} y es una

variable de tipo c
(Sexo1, Sexo n) ^n>^ i {1,2}: Sexo

{1,2} y es una variable de tipo

char
(Edad 1, Edad n) ^n>^ i {1,3}: Edad i {1,3} y es una variable de tipo
string
Los productos con sus correspondientes siglas son los siguientes:
Leche descremada (LD)
Leche entera (LE)

Yogurt (YG)
Helado (HE)
Post-condiciones
Post-entrada: ^ salida=
(Producto 1, producto n)^n>^ i {1,4}: Producto i {1,4}
(Clase 1, Clase n) ^n>^ i {1,3}: Clase i {1,3}
(Sexo1, Sexo n) ^n>^ i {1,2}: Sexo i {1,2}
(Edad 1, Edad n) ^n>^ i {1,3}: Edad i {1,3}
Etapa III. La Particin
El programa puede dividirse en 6 renglones que a continuacin se presentan:
1.
2.
3.
4.
5.
6.
7.

Mostrar men de opciones


Incluir datos del producto
Consultar datos del producto
Modificar datos del producto
Eliminar datos del producto
Reportes de datos
Salir del sistema

La subdivisin se procede como sigue a continuacin


1. Mostrar men de opciones
1.1 Visualizar el men de opciones
1.2 Leer la opcin seleccionada
1.3 Ejecutar la rutina que corresponda a la opcin seleccionada
2. Incluir datos del producto
2.1 Leer descripcin del producto
2.2 Leer total personas encuestadas
2.3 Leer siglas de cada producto
2.4 Leer estrato socio econmico
2.5 Leer edad
2.6 Leer sexo
2.7 Leer fecha del muestro estadstico

2.8 Leer cantidad de personas que eligen el producto


3. onsultar datos del producto
3.1 Visualizar men de consulta
3.2 Mostrar producto
3.3 Mostrar estrato socio econmico
3.4 Mostrar edad
3.5 Mostrar sexo
3.6 Mostrar fecha de muestreo
4. Modificar datos del producto
4.1 Visualizar men de modificar
4.2 Leer producto
4.3 Leer estrato socio econmico
4.4 Leer edad
4.5 Leer sexo
4.6 Leer fecha de muestreo
4.7 Mostrar mensaje de confirmacin para hacer cambios
5. Eliminar datos del producto
5.1 Visualizar men de eliminar
5.2 Leer producto
5.3 Leer estrato socio econmico
5.4 Leer edad
5.5 Leer sexo
5.6 Leer fecha de muestreo
5.7 Mostrar mensaje de confirmacin para hacer cambios
5.8 Eliminar datos del producto
6. Reporte de datos del producto
6.1 Reporte de datos por cuadro de resumen del producto leche
descremada
Nmero de personas

Edad

Sexo

Estrato Social

Etapa IV. Definicin de abstracciones


En esta etapa de la metodologa se refiere a la utilizacin de alguna rutina
de un procedimiento para emplearlo en otro realizndole algunos cambios
necesarios, como ejemplo las abstracciones incluidas dentro de Pascal de
procedimientos de leer datos y escribir los resultados.
A continuacin una fraccin del algoritmo que se utiliz como abstraccin
para otro procedimiento:

Procedimiento para modificar productos.


PROCEDURE MODIFICARPRODUCTOS;
VAR
TIPOPROD: CHAR;
RESP: CHAR;
BEGIN
RESP:='S';
WHILE RESP='S' DO
BEGIN
CLRSCR;
GOTOXY(18,2);WRITELN('PRODUCTOS LACTEOS "VIDA Y SALUD"');
GOTOXY(29,5);WRITELN('MODIFICACION DE PRODUCTOS');
GOTOXY(10,8);WRITELN('FECHA DE ENCUESTA: ');
REPEAT
GOTOXY(43,8);WRITE('
');
GOTOXY(43,8);READLN(FECHA);
UNTIL VALIDARFECHA(FECHA);
GOTOXY(10,10);WRITELN('SIGLAS DEL PRODUCTO: ');
REPEAT
GOTOXY(43,10);WRITELN('
');
GOTOXY(43,10);READLN(SIGLAS);
VAL(SIGLAS,VALOR,SALIDA);
UNTIL SIGLAS<>'';
P:=BUSCARPRODUTOS(SIGLAS,FECHA);
IF P=0 THEN
BEGIN
GOTOXY(32,15);WRITELN('REGISTRO INEXISTENTE');
END

Ahora se aplica en otro procedimiento y se adapta de acuerdo s las


necesidades
PROCEDURE ELIMINARPRODUCTOS;
VAR
RESP: CHAR;
BEGIN
RESP:='S';
WHILE RESP='S' DO
BEGIN
CLRSCR;
GOTOXY(18,2);WRITELN('PRODUCTOS LACTEOS "VIDA Y SALUD"');
GOTOXY(31,5);WRITELN('ELIMINACION DE PRODUCTOS');
GOTOXY(10,8);WRITELN('FECHA DE ENCUESTA: ');
REPEAT
GOTOXY(43,8);WRITE('
');
GOTOXY(43,8);READLN(FECHA);
UNTIL VALIDARFECHA(FECHA);
GOTOXY(10,10);WRITELN('SIGLAS DEL PRODUCTO: ');
REPEAT
GOTOXY(43,10);WRITELN('
');
GOTOXY(43,10);READLN(SIGLAS);
VAL(SIGLAS,VALOR,SALIDA);
UNTIL SIGLAS<>'';
P:=BUSCARPRODUCTOS(SIGLAS,FECHA);
IF P=0 THEN
BEGIN
GOTOXY(32,15);WRITELN('REGISTRO INEXISTENTE');
END

En este caso se modifica el algoritmo que se usa cuando se desea


consultar y no pertenece a los registros y se adapta para cuando se desea
eliminar un producto que no est en los registros.

Objetivo 6. Disear algoritmos usando Programacin Estructurada


Algoritmo Inicial
PROCEDIMIENTO INCLUIR PRODUCTOS;
VAR
PRODUCTOS: CHAR
N,P: ENTERO
ESTRATO: CHAR
SEXO: CHAR
EDAD: CHAR;
OPCION, SALIR: ENTERO
TIPOPRODUCTO: CHAR
VALOR: ENTERO LARGO
SALIDA: ENTERO
PROGRAMA PRINCIPAL
INICIO
N=0
OPCION=0
MIENTRAS OPCION<>6 HACER
ESCRIBIR (PRODUCTOS LACTEOS VIDA Y SALUD)
ESCRIBIR (MEN)
ESCRIBIR (1.- INCLUIR DATOS DE PRODUCTOS)
ESCRIBIR (2.- CONSULTAR DATOS DE PRODUCTOS)
ESCRIBIR (3.- MODIFICAR DATOS DE PRODUCTOS)
ESCRIBIR (4.- ELIMINAR DATOS DE PRODUCTOS)
ESCRIBIR (5.- REPORTES DE DATOS DEL PRODUCTO)
ESCRIBIR (6.- SALIR)
ESCRIBIR (SELECCIONE SU OPCION)
REPETIR
LEER (OPCION)
HASTA (OPCION IN [16]
CASO OPCION DE
1: INCLUIRPRODUCTOS
2: CONSULTARPRODUCTOS
3: MODIFICARPRODUCTOS
4: ELIMINAR PRODUCTOS
5: REPORTESPRODUCTO
6: SALIR
FIN CASO
FIN MIENTRAS
FIN ALGORITMO
PROCEDIMIENTO INCLUIR PRODUCTOS
VARIABLES
TIPOPROD, TIPOESTRATO, TIPOEDAD, SEXO, SIGLAS: CHAR
FECHA: DATE
NPERS: ENTERO
INICIO
RESP= S
MIENTRAS RESP= S HACER
ESCRIBIR (PRODUCTOS LACTEOS VIDA Y SALUD)
ESCRIBIR (INCLUSION DE PRODUCTOS)
ESCRIBIR (FECHA DE LA ENCUESTA)
REPETIR
LEER (FECHA)
HASTA VALIDAR FECHA (FECHA)
ESCRIBIR (TIPO DE PRODUCTO)
REPETIR
ESCRIBIR (1- LECHE DESCREMADA (LD) 2. LECHE ENTERA (LD) 3- YOGURT (YG) 4- HELADO (HE))
LEER (TIPOPROD)
HASTA TIPOPROD IN [1,2,3,4]

P=BUSCAR PRODUCTO (SIGLAS, FECHA)


SI P=0 ENTONCES
N=N+1
PRODUCTO [N].SIGLASPRODUCTO=SIGLAS
PRODUCTO [N].FECHAENCUESTA=FECHA
SI TIPOPROD=1 ENTONCES
PRODUCTO [N]. TIPOPROD=1- LECHE DESCREMADA (LD)
FINSI
SI TIPOPROD=2 ENTONCES
PRODUCTO [N]. TIPOPROD=2- LECHE ENTERA (LE)
FINSI
SI TIPOPROD=3 ENTONCES
PRODUCTO [N]. TIPOPROD=3- YOGURT (YG)
FINSI
SI TIPOPROD=4 ENTONCES
PRODUCTO [N]. TIPOPROO=4- HELA DO (HE)
FINSI
ESCRIBIR (PRODUCTO [N]. TIPOPROD)
ESCRIBIR (CANTIDAD DE PERSONAS ENCUESTADAS)
LEER (NP)
NPERS DESDE [1200]
ESCRIBIR (ESTRATO SOCIO ECONOMICO)
ESCRIBIR (1- CLASE ALTA -MEDIA (CLA) 2. CLASE MEDIA TIPICA (CLB) 3- CLASE MEDIA BAJA (CLC))
LEER (TIPOESTRATO)
UNTIL TIPOCLASE IN [1,2,3,]
SI TIPOCLASE =1 ENTONCES
ESTRATO [N]. TIPOESTRATO =1- CLASE ALTA -MEDIA (CLA)
FINSI
SI TIPOCLASE =2 ENTONCES
ESTRATO [N]. TIPOESTRATO =2- CLASE MEDIA TIPICA (CLB)
FINSI
SI TIPOCLASE =3 ENTONCES
ESTRATO [N]. TIPOESTRATO =3- CLASE MEDIA BAJA (CLC)
FINSI
ESCRIBIR (ESTRATO [N]. TIPOESTRATO)
ESCRIBIR (EDADES)
ESCRIBIR (1- EDAD JUVENIL (EJ) 2. EDAD ADULTO (AD) 3- EDAD ADULTO MAYOR (ADM))
LEER (TIPOEDAD)
UNTIL TIPOEDAD IN [1,2,3,]
SI TIPOEDAD =1 ENTONCES
EDAD [N]. TIPOEDAD=1- EDAD JUVENIL (EJ)
FINSI
SI TIPOEDAD =2 ENTONCES
EDAD [N]. TIPOEDAD =2- EDAD ADULTO (AD)
FINSI
SI TIPOEDAD =3 ENTONCES
EDAD [N]. TIPOEDAD =3- EDAD ADULTO MAYOR (ADM)
FINSI
ESCRIBIR (EDAD [N]. TIPOEDAD)
ESCRIBIR (SEXO DE LA PERSONA)
LEER (TIPOSEXO)
UNTIL TIPOSEXO IN [F,M]
SI TIPOSEXO=F ENTONCES
SEXO [N]. TIPOSEXO= FEMENINO
FINSI
SI TIPOSEXO=M ENTONCES
SEXO [N]. TIPOSEXO= MASCULINO
FINSI
ESCRIBIR (SEXO [N]. TIPOSEXO)

PROCEDIMIENTO CONSULTAR PRODUCTOS


VARIABLES
RESP: CHAR
L: ENTERO
INICIO
RESP= S
MIENTRAS RESP= S HACER

ESCRIBIR (PRODUCTOS LACTEOS VIDA Y SALUD)


ESCRIBIR (CONSULTA DE PRODUCTOS)
ESCRIBIR (CONSULTAR POR:)
ESCRIBIR (TIPO DE PRODUCTO)
REPETIR
LEER (PRODUCTO)
HASTA PRODUCTO<>
P=0 ENTONCES
ESCRIBIR (NO EXISTE ESTE REGISTRO)
SINO
ORDENARPRODUCTOSTIPO
ESCRIBIR (LISTADO DE PRODUCTOS)
ESCRIBIR (ESTRATO SOCIOECONOMICO)
ESCRIBIR (EDAD)
ESCRIBIR (SEXO)
ESCRIBIR (NUMERO DE PERSONAS)
P=1, L=0
MIENTRAS P<=N HACER
SI PRODUCTOS [P]. SIGLASPRODUCTO= SIGLAS ENTONCES
L=L+1
ESCRIBIR (PRODUCTOS [P].FECHAENCUESTA)
ESCRIBIR (PRODUCTOS [P].TIPOPRODUCTO)
ESCRIBIR (PRODUCTOS [P]. TIPOESTRATO)
ESCRIBIR (PRODUCTOS [P].EDAD)
ESCRIBIR (PRODUCTOS [P].SEXO)
FINSI
P=P+1
FINMIENTRAS
FINSI
ESCRIBIR (DESEA REALIZAR OTRA CONSULTA? [S/N]:)
REPETIR
LEER (RESP)
RESP= UPCASE (RESP)
HASTA RESP IN [S,N]
FINMIENTRAS
FIN PROCEDIMIENTO
PROCEDIMIENTO MODIFICAR PRODUCTOS
VARIABLES
TIPOPROD, TIPOESTRATO, TIPOEDAD, SEXO, SIGLAS: CHAR
FECHA: DATE
INICIO
RESP= S
MIENTRAS RESP= S HACER
ESCRIBIR (PRODUCTOS LACTEOS VIDA Y SALUD)
ESCRIBIR (MODIFICACION DE PRODUCTOS)
ESCRIBIR (FECHA DE LA ENCUESTA)
REPETIR
LEER (FECHA)
HASTA VALIDAR FECHA (FECHA)
ESCRIBIR (TIPO DE PRODUCTO)
REPETIR
LEER (PRODUCTO)
VAL (PRODUCTO, VALOR, SALIDA)
HASTA PRODUCTO<>
P=BUSCARPRODUCTOS (PRODUCTO, FECHA)
SI P=0 ENTONCES
ESCRIBIR (NO EXISTE ESTE REGISTRO)
ELSE
VISUALIZAR PRODUCTO
ESCRIBIR (ESTRATO SOCIOECONMICO)
REPETIR
LEER (PRODUCTOS [N].TIPOESTRATO)
VAL (PRODUCTO [N]. TIPOESTRATO [N], VALOR, SALIDA)
HASTA SALIDA = 0
ESCRIBIR (EDAD)
REPETIR
LEER (PRODUCTO [N], EDAD)
HASTA PRODUCTO [N], EDAD <>

ESCRIBIR (1- LECHE DESCREMADA (LD) 2. LECHE ENTERA (LD) 3- YOGURT (YG) 4- HELADO (HE))
ESCRIBIR (TIPO DE PRODUCTO)
REPETIR
LEER (TIPOPROD)
HASTA TIPOPROD IN [1,2,3,4]
SI TIPOPROD=1 ENTONCES
PRODUCTO [N]. TIPOPROD=1- LECHE DESCREMADA (LD)
FINSI
SI TIPOPROD=2 ENTONCES
PRODUCTO [N]. TIPOPROD=2- LECHE ENTERA (LE)
FINSI
SI TIPOPROD=3 ENTONCES
PRODUCTO [N]. TIPOPROD=3- YOGURT (YG)
FINSI
SI TIPOPROD=4 ENTONCES
PRODUCTO [N]. TIPOPROO=4- HELA DO (HE)
FINSI
ESCRIBIR (PRODUCTO [N]. TIPOPROD)
ESCRIBIR (SEXO)
REPETIR
LEER (PRODUCTO [N], SEXO)
PRODUCTO [N].SEXO= UPCASE (PRODUCTO [N].SEXO)
HASTA PRODUCTO [N].SEXO IN [F,M]
FINSI
ESCRIBIR (ESTA SEGURO DE REALIZAR LOS CAMBIOS? [S/N])
REPETIR
LEER (RESP)
SI RESP= N ENTONCES
REGRESAR AL MENU
SI RESP= S ENTONCES
ESCRIBIR (DESEA MODIFICAR OTRO REGISTRO? [S/N])
REPETIR
LEER (RESP)
RESP=UPCASE (RESP)
HASTA RESP IN [S,N]
FIN MIENTRAS
END
PROCEDIMIENTO ELIMINAR PRODUCTOS
INICIO
RESP= S
MIENTRAS RESP= S HACER
ESCRIBIR (PRODUCTOS LACTEOS VIDA Y SALUD)
ESCRIBIR (ELIMINACION DE PRODUCTOS)
ESCRIBIR (FECHA DE LA ENCUESTA)
REPETIR
LEER (FECHA)
HASTA VALIDAR FECHA (FECHA)
ESCRIBIR (TIPO DE PRODUCTO)
REPETIR
LEER (PRODUCTO)
VAL (PRODUCTO, VALOR, SALIDA)
HASTA PRODUCTO<>
P=BUSCARPRODUCTOS (PRODUCTO, FECHA)
SI P=0 ENTONCES
ESCRIBIR (NO EXISTE ESTE REGISTRO)
SINO
VISUALIZAR PRODUCTO
ESCRIBIR (DESEA ELIMINAR ESTE REGISTRO?)
REPETIR
LEER (RESP)
RESP=UPCASE (RESP)
HASTA RESP IN [S,N]
SI RESP= S ENTONCES
PRODUCTO [N]. FECHA=;
PRODUCTO [N].ESTRATO=;
PRODUCTO [N].EDAD =;
PRODUCTO [N].SEXO=;
FINSI
FIN SI

ESCRIBIR (DESEA ELIMINAR OTRO REGISTRO?)


REPETIR
LEER (RESP)
RESP=UPCASE (RESP)
HASTA RESP IN [S,N]
FIN MIENTRAS
FIN PROCEDIMIENTO

Objetivo 7. Probar algoritmos utilizando el concepto de robustez.


La prueba de robustez de aplic a lo largo del algoritmo diseado, dndose a
conocer los siguientes la aplicacin de robustez:
a) Valores de tipo cadena de caracteres
b) Valores de tipo numrico
En los valores de tipo cadena de caracteres indica que si un valor es nulo ( )
se repetir hasta que se introduzca un valor correcto.
Por ejemplo: tomado del procedimiento incluir productos.
WRITELN('SIGLAS DEL PRODUCTO: ');
REPEAT
READLN(SIGLAS);
UNTIL SIGLAS<>'';

En los valores de tipo numrico se emple el procedimiento val propio de


PASCAL para corroborar que el valor sea un nmero.
Por ejemplo: tomado del procedimiento incluir productos.
READLN(PRODUCTOS[N].NROPERSONAS);
VAL(PRODUCTOS[N].NROPERSONAS,VALOR,SALIDA);
UNTIL SALIDA =0;

El algoritmo depurado se realiz directamente a lenguaje Pascal como se indica


en el objetivo 8.
Objetivo 8. Codificar algoritmos en PASCAL
PROGRAM VIDAYSALUD;
USES CRT;
TYPE
REGISTROS = RECORD
SIGLASPRODUCTO : STRING[7];
FECHAREGISTRO : STRING[10];

NROPERSONAS : STRING[2];
ESTRATO
: STRING[20];
TIPOPRODUCTO : STRING[20];
EDAD : STRING;
SEXO : CHAR;
END;
VAR
PRODUCTOS : ARRAY[1..200] OF REGISTROS;
SIGLAS : STRING[7];
FECHA : STRING[10];
N,P : INTEGER;
OPCION,SALIDA : INTEGER;
VALOR : LONGINT;
FUNCTION BUSCARPRODUCTOS(pSIGLAS,pFECHA: STRING): INTEGER;
VAR
POS
: INTEGER;
ENCONTRADO : BOOLEAN;
BEGIN
ENCONTRADO:= FALSE;
FOR POS:=1 TO N DO
BEGIN
IF (PRODUCTOS[POS].SIGLASPRODUCTO=pSIGLA) AND
((PRODUCTOS[POS].FECHAREGISTRO=pFECHA) OR (pFECHA='00/00/0000')) THEN
BEGIN
ENCONTRADO:=TRUE;
BREAK;
END;
END;
IF ENCONTRADO THEN
BUSCARPRODUCTOS:=POS
BUSCARPRODUCTOS:=0;
END;
FUNCTION BUSCARESTRATO(pESTRATO: STRING): BOOLEAN;
VAR
POS
: INTEGER;
ENCONTRADO : BOOLEAN;
BEGIN
ENCONTRADO:= FALSE;
FOR POS:=1 TO N DO
BEGIN
IF (PRODUCTOS[POS].ESTRATO=pESTRATO) THEN
BEGIN
ENCONTRADO:=TRUE;
BREAK;
END;
END;
BUSCARESTRATO:=ENCONTRADO;
END;
FUNCTION BUSCAREDAD(pEDAD: STRING): BOOLEAN;
VAR
POS
: INTEGER;
ENCONTRADO : BOOLEAN;
BEGIN
ENCONTRADO:= FALSE;
FOR POS:=1 TO N DO
BEGIN
IF (PRODUCTOS[POS].EDAD=pEDAD) THEN
BEGIN
ENCONTRADO:=TRUE;
BREAK;
END;
END;
BUSCAREDAD:=ENCONTRADO;
END;
FUNCTION BUSCARSEXO(pSEXO: STRING): BOOLEAN;

VAR
POS
: INTEGER;
ENCONTRADO : BOOLEAN;
BEGIN
ENCONTRADO:= FALSE;
FOR POS:=1 TO N DO
BEGIN
IF (PRODUCTOS[POS].SEXO=pSEXO) THEN
BEGIN
ENCONTRADO:=TRUE;
BREAK;
END;
END;
BUSCARSEXO:=ENCONTRADO;
END;
FUNCTION VALIDARFECHA(pFECHA: STRING): BOOLEAN;
VAR
CHR,LONGITUD: INTEGER;
BEGIN
CHR:=0;
LONGITUD:=LENGTH(pFECHA);
VALIDARFECHA:=TRUE;
IF LONGITUD=10 THEN
BEGIN
REPEAt
CHR:=CHR+1;
IF NOT (pFECHA[CHR] IN ['0'..'9','/']) THEN
BEGIN
VALIDARFECHA:=FALSE;
BREAK
END;
UNTIL CHR=LONGITUD;
END
BEGIN
VALIDARFECHA:=TRUE;
END;
END;
FUNCTION FECHAMAYOR(FECHA1,FECHA2: STRING):BOOLEAN;
VAR
RESULTADO: INTEGER;
DIA1,MES1,ANO1,DIA2,MES2,ANO2,S: WORD;
BEGIN
VAL(COPY(FECHA1,1,2),DIA1,RESULTADO);
VAL(COPY(FECHA1,4,2),MES1,RESULTADO);
VAL(COPY(FECHA1,7,4),ANO1,RESULTADO);
VAL(COPY(FECHA2,1,2),DIA2,RESULTADO);
VAL(COPY(FECHA2,4,2),MES2,RESULTADO);
VAL(COPY(FECHA2,7,4),ANO2,RESULTADO);
FECHAMAYOR:=FALSE;
IF ANO2>ANO1 THEN
FECHAMAYOR:=TRUE;
IF ANO2=ANO1 THEN
BEGIN
IF MES2>MES1 THEN
FECHAMAYOR:=TRUE;
IF MES2=MES1 THEN
BEGIN
IF DIA2>DIA1 THEN
FECHAMAYOR:=TRUE;
END;
END;
END;
PROCEDURE ORDENARPRODUCTOSSIGLAS;
VAR
I,J : INTEGER;
AUXS: STRING;
AUXN: INTEGER;

BEGIN
FOR I:=1 TO N-1 DO
BEGIN
FOR J:=I+1 TO N DO
BEGIN
IF PRODUCTOS[I].SIGLASPRODUCTO>PRODUCTOS[J].SIGLASPRODUCTO THEN
BEGIN
AUXS:=PRODUCTOS[I].SIGLASPRODUCTO;
PRODUCTOS[I].SIGLASPRODUCTO:=PRODUCTOS[J].SIGLASPRODUCTO;
PRODUCTOS[J].SIGLASPRODUCTO:=AUXS;
AUXS:=PRODUCTOS[I].FECHAREGISTRO;
PRODUCTOSI].FECHAREGISTRO:=PRODUCTOS[J].FECHAREGISTRO;
PRODUCTOS[J].FECHAREGISTRO:=AUXS;
AUXS:=PRODUCTOS[I].NROPERSONAS;
PRODUCTOS[I].NROPERSONAS:=PRODUCTOS[J].NROPERSONAS;
PRODUCTOS[J].NROPERSONAS:=AUXS;
AUXS:=PRODUCTOS[I].ESTRATO;
PRODUCTOS[I].ESTRATO:=PRODUCTOS[J].ESTRATO;
PRODUCTOS[J].ESTRATO:=AUXS;
AUXS:=PRODUCTOS[I].TIPOPRODUCTO;
PRODUCTOS[I].TIPOPRODUCTO:=PRODUCTOS[J].TIPOPRODUCTO;
PRODUCTOS[J].TIPOPRODUCTO:=AUXS;
AUXS:=PRODUCTOS[I].EDAD;
PRODUCTOS[I].EDAD:=PRODUCTOS[J].EDAD;
PRODUCTOS[J].EDAD:=AUXS;
AUXC:=PRODUCTOS[I].SEXO;
PRODUCTOS[I].SEXO:=PRODUCTOS[J].SEXO;
PRODUCTOS[J].SEXO:=AUXS;
END;
END;
END;
END;
PROCEDURE ORDENARPRODUCTOSFECHA;
VAR
I,J : INTEGER;
AUXS: STRING;
AUXN: INTEGER;
BEGIN
FOR I:=1 TO N-1 DO
BEGIN
FOR J:=I+1 TO N DO
BEGIN
IF NOT FECHAMAYOR(PRODUCTOS[I].FECHAREGISTRO,PRODUCTOS[J].FECHAREGISTRO) THEN
BEGIN
AUXS:=PRODUCTOS[I].SIGLAPRODUCTO;
PRODUCTOS[I].SIGLASPRODUCTO:=PRODUCTOS[J].SIGLASPRODUCTO;
PRODUCTOS[J].SIGLASPRODUCTO:=AUXS;
AUXS:=PRODUCTOS[I].FECHAREGISTRO;
PRODUCTOS[I].FECHAREGISTRO:=PRODUCTOS[J].FECHAREGISTRO;
PRODUCTOS[J].FECHAREGISTRO:=AUXS;
AUXS:=PRODUCTOS[I].NROPERSONAS;
PRODUCTOS[I].NROPERSONAS:=PRODUCTOS[J].NROPERSONAS;
PRODUCTOS[J].NROPERSONAS:=AUXS;
AUXS:=PRODUCTOS[I].ESTRATO;
PRODUCTOS[I].ESTRATO:=PRODUCTOS[J].ESTRATO;
PRODUCTOS[J].ESTRATO:=AUXS;
AUXS:=PRODUCTOS[I].TIPOVEHICULO;
PRODUCTOS[I].TIPOPRODUCTO:=PRODUCTOS[J].TIPOPRODUCTOS;
PRODUCTOS[J].TIPOPRODUCTO:=AUXS;

AUXS:=PRODUCTOS[I].EDAD;
PRODUCTOS[I].EDAD:=PRODUCTOS[J].EDAD;
PRODUCTOS[J].EDAD:=AUXS;
AUXC:=PRODUCTOS[I].SEXO;
PRODUCTOS[I].SEXO:=PRODUCTOS[J].SEXO;
PRODUCTOS[J].SEXO:=AUXS;
END;
END;
END;
END;
PROCEDURE VISUALIZARPRODUCTOS;
BEGIN
GOTOXY(10,12);WRITELN('NUMERO DE PERSONAS.............: ',PRODUCTOS[P].NROPERSONAS);
GOTOXY(10,14);WRITELN('ESTRATO........................: ',PRODUCTOS[P].ESTRATO);
GOTOXY(10,16);WRITELN('TIPO DE PRODUCTO...............: ',PRODUCTOS[P].TIPOPRODUCTO);
GOTOXY(10,18);WRITELN('EDAD...........................: ',PRODUCTOS[P].EDAD);
GOTOXY(10,20);WRITELN('SEXO...........................: ',PRODUCTOS[P].SEXO);
END;
PROCEDURE INCLUIRPRODUCTOS;
VAR
I: INTEGER;
TIPOPROD: CHAR;
TIPOESTRATO:CHAR;
TIPOEDAD:CHAR;
RESP: CHAR;
BEGIN
RESP:='S';
WHILE RESP='S' DO
BEGIN
CLRSCR;
GOTOXY(18,2);WRITELN('PRODUCTOS LACTEOS "VIDA Y SALUD"');
GOTOXY(31,5);WRITELN('INCLUSION DE PRODUCTOS');
GOTOXY(10,8);WRITELN('FECHA DE LA ENCUESTA: ');
REPEAT
GOTOXY(43,8);WRITE('
');
GOTOXY(43,8);READLN(FECHA);
UNTIL VALIDARFECHA(FECHA);
GOTOXY(10,10);WRITELN('SIGLAS DEL PRODUCTO: ');
REPEAT
GOTOXY(43,10);WRITELN('
');
GOTOXY(43,10);READLN(SIGLAS);
UNTIL SIGLAS<>'';
P:=BUSCARPRODUCTOS(SIGLAS,FECHA);
IF P=0 THEN
BEGIN
N:=N+1;
PRODUCTOS[N].SIGLASPRODUCTO:=SIGLAS;
PRODUCTOS[N].FECHAREGISTRO:=FECHA;
GOTOXY(64,5);WRITELN('PRODUCTO Nro: ',N);
GOTOXY(10,12);WRITELN('NUMERO DE PERSONAS: ');
REPEAT
GOTOXY(43,12);WRITELN('
');
GOTOXY(43,12);READLN(PRODUCTOS[N].NROPERSONAS);
VAL(PRODUCTOS[N].NROPERSONAS,VALOR,SALIDA);
UNTIL SALIDA=0;
GOTOXY(13,23);WRITELN('1-CLASE ALTA (CLA) 2-CLASE MEDIA-TIPICA (CLB) 3-CLASE MEDIA-BAJA
(CLC)');
GOTOXY(10,14);WRITELN('ESTRATO:');
REPEAT
GOTOXY(43,14);WRITELN('
');
GOTOXY(43,14);READLN(TIPOESTRATO);
UNTIL TIPOESTRATO IN ['1','2','3'];
GOTOXY(13,23);WRITELN('
IF TIPOESTRATO='1' THEN
PRODUCTO[N].TIPOESTRATO:='1-CLASE ALTA (CLA)';
IF TIPOESTRATO='2' THEN

');

PRODUCTOS[N].TIPOESTRATO:='2-CLASE MEDIA-TIPICA (CLB)';


IF TIPOESTRATO='3' THEN
PRODUCTOS[N].TIPOESTRATO:='3-CLASE MEDIA-BAJA (CLC)';
GOTOXY(43,14);WRITELN(PRODUCTOS[N].TIPOESTRATO);
GOTOXY(14,23);WRITELN('1-LECHE DESCREMADA (LD) 2-LECHE ENTERA (LE) 3-YOGURT(YG) 4HELADO (HE)');
GOTOXY(10,16);WRITELN('TIPO DE PRODUCTO:');
REPEAT
GOTOXY(43,16);WRITELN('
');
GOTOXY(43,16);READLN(TIPOPROD);
UNTIL TIPOPROD IN ['1','2','3','4'];
GOTOXY(14,23);WRITELN('
');
IF TIPOPROD='1' THEN
PRODUCTO[N].TIPOPRODUCTO:='1-LECHE DESCREMADA (LD)';
IF TIPOPROD='2' THEN
PRODUCTOS[N].TIPOPRODUCTO:='2-LECHE ENTERA (LE)';
IF TIPOPROD='3' THEN
PRODUCTOS[N].TIPOPRODUCTO:='3-YOGURT (YG)';
IF TIPOPROD='4' THEN
PRODUCTOS[N].TIPOPRODUCTO:='4-HELADO (HE)';
GOTOXY(43,16);WRITELN(PRODUCTOS[N].TIPOPRODUCTO);
GOTOXY(15,23);WRITELN('1-EDAD JUVENIL (EJ) 2-EDAD ADULTOS (AD) 3-EDAD ADULTO MAYOR
(ADM)');
GOTOXY(10,18);WRITELN('EDAD:');
REPEAT
GOTOXY(43,18);WRITELN('
');
GOTOXY(43,18);READLN(TIPOEDAD);
UNTIL TIPOEDAD IN ['1','2','3'];
GOTOXY(15,23);WRITELN('
');
IF TIPOEDAD='1' THEN
PRODUCTO[N].TIPOEDAD:='1-EDAD JUVENIL (EJ)';
IF TIPOEDAD='2' THEN
PRODUCTOS[N].TIPOEDAD:='2-EDAD ADULTO (AD)';
IF TIPOEDAD='3' THEN
PRODUCTOS[N].TIPOEDAD:='3-EDAD ADULTO MAYOR (ADM)';
GOTOXY(43,18);WRITELN(PRODUCTOS[N].TIPOEDAD);
GOTOXY(10,18);WRITELN('SEXO..[F/M');
REPEAT
GOTOXY(43,18);WRITELN('
');
GOTOXY(43,18);READLN(PRODUCTOS[N].SEXO);
PRODUCTOS[N].SEXO:=UPCASE(PRODUCTOS[N].SEXO);
UNTIL PRODUCTOS[N].SEXO IN ['F','M'];
END
BEGIN
VISUALIZARPRODUCTOS;
GOTOXY(56,12);WRITELN('REGISTRO EXISTENTE');
END;
GOTOXY(22,24);WRITELN('DESEA INCLUIR OTRO REGISTRO? [S/N]:');
REPEAT
GOTOXY(58,24);WRITELN('
');
GOTOXY(58,24);READLN(RESP);
RESP:=UPCASE(RESP);
UNTIL RESP IN ['S','N'];
END;
END;
PROCEDURE CONSULTARPRODUCTOS;
VAR
L: INTEGER;
RESP: CHAR;
BEGIN
RESP:='S';
WHILE RESP='S' DO
BEGIN
CLRSCR;
GOTOXY(18,2);WRITELN('PRODUCTOS LACTEOS "VIDA Y SALUD"');
GOTOXY(32,4);WRITELN('CONSULTA DE PRODUCTOS');
GOTOXY(5,6);WRITELN('SIGLAS DE PRODUCTOS: ');
REPEAT

GOTOXY(38,6);WRITELN('
');
GOTOXY(38,6);READLN(SIGLAS);
UNTIL SIGLAS<>'';
P:=BUSCARPRODUCTOS(SIGLAS,'00/00/0000');
IF P=0 THEN
BEGIN
GOTOXY(32,12);WRITELN('REGISTRO INEXISTENTE');
END
ELSE
FOR P:=5 TO 75 DO
BEGIN
GOTOXY(3+P,11);WRITE('-');
END;
P:=1;L:=0;
WHILE P<=N DO
BEGIN
IF PRODUCTOS[P].SIGLASPRODUCTOS=SIGLAS THEN
BEGIN
L:=L+1;
GOTOXY(10,11+L);WRITELN(PRODUCTOS[P].FECHAREGISTRO);
GOTOXY(23,11+L);WRITELN(PRODUCTOS[P].ESTRATO);
GOTOXY(43,11+L);WRITELN(PRODUCTOS[P].NROPERSONAS);
GOTOXY(52,11+L);WRITELN(PRODUCTOS[P].TIPOPRODUCTO);
GOTOXY(62,11+L);WRITELN(PRODUCTOS[P].EDAD);
GOTOXY(75,11+L);WRITELN(PRODUCTOS[P].SEXO);
END;
P:=P+1;
END;
END;
GOTOXY(21,24);WRITELN('DESEA CONSULTAR OTRO PRODUCTO? [S/N]: ');
REPEAT
GOTOXY(59,24);WRITE(' ');
GOTOXY(59,24);READLN(RESP);
RESP:=UPCASE(RESP);
UNTIL RESP IN ['S','N'];
END;
END;
PROCEDURE MODIFICARPRODUCTOS;
VAR
TIPOPROD: CHAR;
RESP: CHAR;
BEGIN
RESP:='S';
WHILE RESP='S' DO
BEGIN
CLRSCR;
GOTOXY(18,2);WRITELN('PRODUCTOS LACTEOS "VIDA Y SALUD"');
GOTOXY(29,5);WRITELN('MODIFICACION DE PRODUCTOS');
GOTOXY(10,8);WRITELN('FECHA DE ENCUESTA: ');
REPEAT
GOTOXY(43,8);WRITE('
');
GOTOXY(43,8);READLN(FECHA);
UNTIL VALIDARFECHA(FECHA);
GOTOXY(10,10);WRITELN('SIGLAS DEL PRODUCTO: ');
REPEAT
GOTOXY(43,10);WRITELN('
');
GOTOXY(43,10);READLN(SIGLAS);
VAL(SIGLAS,VALOR,SALIDA);
UNTIL SIGLAS<>'';
P:=BUSCARPRODUTOS(SIGLAS,FECHA);
IF P=0 THEN
BEGIN
GOTOXY(32,15);WRITELN('REGISTRO INEXISTENTE');
END
ELSE
BEGIN
VISUALIZARPRODUCTOS;
GOTOXY(64,5);WRITELN('PRODUCTO Nro: ',P);

GOTOXY(10,12);WRITELN('NUMERO DE PERSONAS: ');


REPEAT
GOTOXY(43,12);READLN(PRODUCTOS[P].NROPERSONAS);
VAL(PRODUCTOS[P].NROPERSONAS,VALOR,SALIDA);
UNTIL SALIDA=0;
GOTOXY(10,14);WRITELN('ESTRATO:');
REPEAT
GOTOXY(43,14);READLN(PRODUCTOS[P].ESTRATO);
UNTIL PRODUCTOS[P].ESTRATO<>'';
GOTOXY(14,23);WRITELN('1-LECHE DESCREMASA (LD) 2-LECHE ENTERA (LE) 3-YOGURT (YG) 4HELADO (HE)');
GOTOXY(10,16);WRITELN('TIPO DE PRODUCTO:');
REPEAT
GOTOXY(43,16);WRITELN('
');
GOTOXY(43,16);READLN(TIPOPROD);
UNTIL TIPOPROD IN ['1','2','3','4'];
GOTOXY(14,23);WRITELN('
');
IF TIPOPROD='1' THEN
PRODUCTOS[N].TIPOPRODUCTO:='1-LECHE DESCREMADA (LD)';
IF TIPOPROD='2' THEN
PRODUCTOS[N].TIPOPRODUCTO:='2-LECHE ENTERA (LE)';
IF TIPOPROD='3' THEN
PRODUCTOS[N].TIPOPRODUCTO:='3-YOGURT (YG)';
IF TIPOPROD='4' THEN
PRODUCTOS[N].TIPOPRODUCTO:='4-HELADO (HE)';
GOTOXY(43,16);WRITELN(PRODUCTOS[P].TIPOPRODUCTO);
GOTOXY(10,18);WRITELN('SEXO..[F/M].:');
REPEAT
GOTOXY(43,18);WRITELN('
');
GOTOXY(43,18);READLN(PRODUCTOS[N].SEXO);
PRODUCTOS[N].SEXO:=UPCASE(PRODUCTOS[N].SEXO);
UNTIL PRODUCTOS[N].SEXO IN ['F','M'];
END;
GOTOXY(23,24);WRITELN('DESEA MODIFICAR OTRO REGISTRO? [S/N]:');
REPEAT
GOTOXY(61,24);WRITELN('
');
GOTOXY(61,24);READLN(RESP);
RESP:=UPCASE(RESP);
UNTIL RESP IN ['S','N'];
END;
END;
PROCEDURE ELIMINARPRODUCTOS;
VAR
RESP: CHAR;
BEGIN
RESP:='S';
WHILE RESP='S' DO
BEGIN
CLRSCR;
GOTOXY(18,2);WRITELN('PRODUCTOS LACTEOS "VIDA Y SALUD"');
GOTOXY(31,5);WRITELN('ELIMINACION DE PRODUCTOS');
GOTOXY(10,8);WRITELN('FECHA DE ENCUESTA: ');
REPEAT
GOTOXY(43,8);WRITE('
');
GOTOXY(43,8);READLN(FECHA);
UNTIL VALIDARFECHA(FECHA);
GOTOXY(10,10);WRITELN('SIGLAS DEL PRODUCTO: ');
REPEAT
GOTOXY(43,10);WRITELN('
');
GOTOXY(43,10);READLN(SIGLAS);
VAL(SIGLAS,VALOR,SALIDA);
UNTIL SIGLAS<>'';
P:=BUSCARPRODUCTOS(SIGLAS,FECHA);
IF P=0 THEN
BEGIN
GOTOXY(32,15);WRITELN('REGISTRO INEXISTENTE');
END
ELSE
BEGIN

GOTOXY(22,24);WRITELN('DESEA ELIMINAR ESTE REGISTRO? [S/N]:');


REPEAT
GOTOXY(59,24);WRITE(' ');
GOTOXY(59,24);READLN(RESP);
RESP:=UPCASE(RESP);
UNTIL RESP IN ['S','N'];
GOTOXY(19,24);WRITELN('
');
IF RESP='S' THEN
BEGIN
PRODUCTOS[P].SIGLASPRODUCTO:=' ';
PRODUCTOS[P].FECHAREGISTRO:=' ';
PRODUCTOS[P].NROPERSONAS:=' ';
PRODUCTOS[P].ESTRATO:=' ';
PRODUCTOS[P].TIPOPRODUCTO:=' ';
PRODUCTOS[P].EDAD:=' ';
PRODUCTOS[P].SEXO:=' ';
END;
END;
GOTOXY(21,24);WRITELN('DESEA ELIMINAR OTRO REGISTRO? [S/N]: ');
REPEAT
GOTOXY(58,24);WRITE(' ');
GOTOXY(58,24);READLN(RESP);
RESP:=UPCASE(RESP);
UNTIL RESP IN ['S','N'];
END;
END;

BEGIN
{PROGRAMA PRINCIPAL}
N:=0;
OPCION:=0;
WHILE OPCION<>5 DO
BEGIN
CLRSCR;
GOTOXY(18,2);WRITELN('PRODUCTOS LACTEOS "VIDA Y SALUD"');
GOTOXY(38,5);WRITELN('M E N U');
GOTOXY(10,8);WRITELN('1.- INCLUIR PRODUCTOS');
GOTOXY(10,14);WRITELN('2.- CONSULTAR PRODUCTOS');
GOTOXY(10,10);WRITELN('3.- MODIFICAR PRODUCTOS');
GOTOXY(10,12);WRITELN('4.- ELIMINAR PRODUCTOS');
GOTOXY(10,16);WRITELN('5.- SALIDA');
GOTOXY(29,23);WRITELN('SELECCIONE SU OPCION:');
REPEAT
GOTOXY(51,23);WRITELN(' ');
GOTOXY(51,23);READLN(OPCION);
UNTIL (OPCION IN [1..5]);
CASE OPCION OF
1: INCLUIRPRODUCTOS;
2: MODIFICARPRODUCTOS;
3: ELIMINARPRODUCTOS;
4: CONSULTARPRODUCTOS;
END;
END;
END.

Bibliografa
Joyanes A, L. (1996). Fundamentos de programacin. Algoritmos y estructuras de
datos. Editorial Mcgraw Hill. Madrid Espaa.

Torrealba, J. (2004). Computacin I. material de instruccin. Universidad Nacional


Abierta. Caracas Venezuela.

Вам также может понравиться