Este documento presenta un problema de cálculo de precios y descuentos para diferentes combos en un restaurante de comida rápida. Se definen tres tipos de combos con diferentes precios y promociones de descuento. El documento analiza el problema, diseña clases para clientes y empresas, e implementa métodos para calcular el monto total y IVA aplicando las reglas de descuento.
1. Introducción a la Computación
Profesores: Camacaro, Vladimir
Piñero, Erys
2. Ejercicio
Un puesto de comida rápida ofrece 3 tipos de combos, con los siguientes
precios:
Combo Nro. 1, 235 BsF.
Combo Nro. 2, 165,25 BsF.
Combo Nro. 3, 250 BsF.
En el mes de aniversario del local se ofrece un paquete promocional con
las siguientes políticas:
Si compra más de ½ docena del combo Nro.1 tiene un descuento del
3% sobre el total a cancelar.
Si compra 2 docenas del combo Nro.3 tiene descuento del 2% sobre el
total a cancelar.
Por la compra se tiene como entrada: tipo de combo, cantidad del combo.
Se pide calcular: monto a cancelar con descuento y monto a cancelar por
concepto de IVA.
04-11-2014 2
3. Análisis del problema
Lista Clasificación
Cliente clase
TipoCombo atributo/Cliente
CantidadCombo atributo/Cliente
Empresa clase
CalcMonto método/Empresa
CalcMontoIVA método/Empresa
04-11-2014 3
4. si (Tipocombo = “Combo 1”)
inicio
Monto CantidadCombo*235
si (CantidadCombo >= 6)
inicio
Monto Monto*0,97
fin
fin
sino // puede ser combo 2 o combo 3
inicio
si (Tipocombo = “Combo 2”)
inicio
Monto CantidadCombo*165,25
fin
sino
inicio // puede ser combo 3
si (Tipocombo = “Combo 3”)
inicio
Monto CantidadCombo*250
si (CantidadCombo = 24)
inicio
Monto Monto*0,98
fin
fin
sino // no es ningún combo
inicio
Monto 0
fin
fin
fin
MontoIVA Monto*0,12
04-11-2014 4
5. Diseño de las clases
alfanumerico TipoCombo
entero CantidadCombo
AsignarTipoCombo(alfanumerico ↓ Tipo) real CalcMonto(Cliente↓ OCliente)
AsignarCantidadCombo(entero ↓ Cantidad) real CalcMontoIva(Cliente↓ OCliente)
alfanumerico SacarTipoCombo()
entero SacarCantidadCombo()
04-11-2014 5
Cliente Empresa
6. Implementación en pseudolenguaje
// Definición de la estructura de la clase Cliente
clase Cliente
inicio
privado:
alfanumerico TipoCombo
entero CantidadCombo
publico:
AsignarTipoCombo( alfanumerico ↓ tipo)
AsignarCantidadCombo( entero ↓ cantidad)
alfanumerico SacarTipoCombo( )
entero SacarCantidadCombo( )
fin
04-11-2014 6
7. Métodos propios de la clase Cliente
Cliente AsignarTipoCombo( alfanumerico ↓ tipo)
inicio
TipoCombo tipo
fin
Cliente AsignarCantidadCombo( entero ↓ cantidad)
inicio
CantidadCombo cantidad
fin
04-11-2014 7
8. Métodos propios de la clase Cliente
alfanumerico Cliente SacarTipoCombo( )
inicio
retornar TipoCombo
fin
entero Cliente SacarCantidadCombo( )
inicio
retornar CantidadCombo
fin
04-11-2014 8
9. // Definición de la estructura de la clase Empresa
clase Empresa
inicio
privado:
publico:
real CalcMonto(Cliente ↓OCliente)
real CalcMontoIVA(Cliente ↓OCliente)
fin
04-11-2014 9
10. real Empresa CalcMonto(Cliente ↓OCliente)
inicio
real Monto
si (Ocliente.SacarTipocombo( ) = “Combo 1”)
inicio
Monto OCliente.SacarCantidadCombo( )*235
si (OCliente.SacarCantidadCombo( ) >= 6)
inicio
Monto Monto*0,97
fin
fin
sino
inicio
si (Ocliente.SacarTipocombo( ) = “Combo 2”)
inicio
Monto OCliente.SacarCantidadCombo( )*165,25
fin
sino
inicio
si (Ocliente.SacarTipocombo( ) = “Combo 3”)
inicio
Monto OCliente.SacarCantidadCombo( )*250
si (OCliente.SacarCantidadCombo( ) = 24)
inicio
Monto Monto*0,98
fin
fin
sino
inicio
Monto 0
fin
fin
fin
retornar Monto
fin
04-11-2014 10
11. real Empresa CalcMontoIVA(Cliente ↓OCliente)
inicio
real MontoIVA
MontoIVA CalcMonto(OCliente)*0,12
retornar MontoIVA
fin
04-11-2014 11
12. Programa de aplicación
principal( )
inicio
Cliente Ocliente //Creación del objeto.
Empresa OEmpresa //Creación del objeto.
InterfazEntrada(OCliente)
InterfazSalida(OCliente,OEmpresa)
fin
04-11-2014 12
13. InterfazEntrada(Cliente ↑ OCliente)
inicio
alfanumerico tipo
entero cantidad //Definición de Variables
escribir “Introduzca el tipo de Combo”
leer tipo
OCliente.AsignarTipoCombo(tipo)
escribir “Introduzca la cantidad”
leer cantidad
OCliente.AsignarCantidadCombo(cantidad)
fin
04-11-2014 13