Plan Refuerzo Escolar 2024 para estudiantes con necesidades de Aprendizaje en...
Solucion distribuidora de gas. doble ciclo.
1. Introducción a la Computación
Programa: Análisis de Sistemas
Profesora: Erys Piñero
Profesor: Vladimir Camacaro
1
2. Ejercicio
Una compañía distribuidora de gas, recibe de cada uno de sus vendedores la
información referente a sus ventas. Los datos disponibles son:
Código del vendedor
Precio de la bombona de gas
Tipo de bombona de gas (Grande o pequeña)
Cantidad de bombona
Cada vendedor tiene tantas entradas como ventas realizadas
Se requiere de un informe que contenga:
Por vendedor:
Monto total facturado
Promedio de lo facturado
Mayor monto facturado por el vendedor
Por distribuidora:
Código del vendedor con mayor facturación
Total monto facturado
Que tipo de bombona de gas se vendió en mayor cantidad
2
3. Análisis del problema:
Lista
Clasificación
Venta ---------------------------------------- Clase
Código -------------------------------------- Atributo/Vendedor
TipoBombona------------------------------ Atributo/Vendedor
Precio---------------------------------------- Atributo/Vendedor
Cantidad ------------------------------------ Atributo/Vendedor
Vendedor--------------------------------------------------- Clase
Calcular monto total facturado------------------------ Método/Vendedor
Calcular promedio de lo facturado------------------- Método/Vendedor
Calcular mayor monto facturado por vendedor - Método/Vendedor
Distribuidora----------------------------------------------- Clase
Calcular vendedor con mayor facturación --------- Método/Distribuidora
Calcular tipo de bombona de gas que se vendió en mayor cant Método/Distribuidora
Calcular total monto facturado----------------------- Método/Distribuidora
3
4. f.u. (1) 1) Inicializar (Mayor, AcumMontoF, ContGrande, ContPequeña)
f.m.(2) 2) Inicializar (AcumMF, ContVenta, Mayor Vend)
f.m.(2) 3) Leer(Codigo)
f.m.(3) 4) Leer (TipoBombona, Precio, Cantidad)
f.m.(3) 5) Determinar mayor monto facturado por vendedor
si (MayorVend<Precio*Cantidad)
MayorVend ← Precio*Cantidad
f.m.(3) 6) Acumular Monto Facturado:
AcumMF AcumMF + Precio*Cantidad
f.m.(3) 7) Contar venta:
ContVenta ContVenta + 1
f.m.(3) 8) Acumular según tipo de bombona
si(TipoBombona=”Grande”)
Se escribe lo solicitado
ContGrande← ContGrande + Cantidad
por la Vendedor
sino
(9,10,11)
si(TipoBombona=”Pequeña”)
ContPequeña← ContPequeña + Cantidad
f.m.(4) 9) Imprimir monto total facturado por vendedor (AcumMF)
f.m.(4) 10) Calcula e imprime Promedio facturado del vendedor Promedio ← AcumMF/ContVenta
f.m.(4) 11) Imprimir mayor monto facturado por vendedor (MayorVend)
f.m.(4) 12) Determinar vendedor con mayor facturación
si (Mayor<AcumMF)
inicio
Mayor ← AcumMF
MayorVen ← Código
fin
f.m(4) 13) Acumular monto facturado por Distribuidora AcumMontoF ← AcumMontoF + AcumMF
4
5. f.u. (5) 14) Imprimir Código del vendedor con mayor facturación (MayorVen)
f.u. (5) 15) Imprimir tipo de venta con mayor facturación
si(ContGrande > ContPequeña)
Mensaje ← “Las bombonas Grandes se vendieron en mayor cantidad”
si(ContGrande< ContPequeña)
Mensaje ← “Las bombonas Pequeñas se vendieron en mayor cantidad”
sino Mensaje ← “Las bombonas Pequeñas y grandes se vendieron en igual cantidad”
f.u. (5) 16) Imprimir el total facturado de la empresa (AcumMontoF)
Se escribe lo solicitado
por la Distribuidora
5
8. Vendedor
real AcumMF
entero ContVenta
real MayorVend
Inicial()
real SacarAcumMF()
entero SacarContVenta()
real SacarMayorVend()
Acumular (Venta ↓ Vent)
Contar()
real CalcMayorVenta(Venta ↓ Vent)
real CalcPromedio()
8
9. Distribuidora
real Mayor
alfanumérico MayorVen
entero ContGrande
entero ContPequeña
real AcumMontoF
Inicializar()
real SacarMayor()
alfanumérico SacarMayorVend()
entero SacarContGrande()
entero SacarContPequeña()
real SacarAcumMontoF()
DetMayor TipoBombona()
AcumularMontoF(Inf)
DetMayor(Vend,Inf)
AcumularTB(Vend)
9
10. // Definición de la estructura de la clase Venta
clase Venta
inicio
privado:
alfanumérico Código, TipoBombona
real Precio
entero Cantidad
publico:
AsignarCódigo(alfanumérico ↓ Cod)
AsignarTipoBombona(alfanumérico ↓ TB)
AsignarPrecio (real ↓ Pc)
AsignarCantidad (entero ↓ Cant)
alfanumérico SacarCodigo()
alfanumérico SacarTipoBombona()
real SacarPrecio()
entero SacarCantidad()
fin// Venta
10
11. //Definición de la estructura de la clase Vendedor
clase Vendedor
inicio
privado:
real AcumMF
entero ContVenta
real MayorVend
publico:
Inicial ()
real SacarAcumMF()
entero SacarContVenta()
real SacarMayorVend()
Acumular(Venta↓ Vent)
Contar ()
real CalcMayorVenta(Venta↓ Vent)
real CalcPromedio ()
fin // Vendedor
11
12. //Métodos propios de la clase Vendedor
Vendedor Inicial ()
inicio
AcumMF ← 0
ContVenta ← 0
MayorVend ← 0
fin
12
13. real Vendedor SacarAcumMF()
inicio
retornar AcumMF
fin
entero Vendedor SacarContVenta()
inicio
retornar ContVenta
fin
Vendedor Acumular(Venta ↓ Vent)
inicio
AcumMF ← AcumMF +Vent. SacarPrecio()* Vent. SacarCantidad()
fin
Vendedor Contar()
Inicio
ContVenta ← ContVenta + 1
fin
13
15. real Vendedor SacarMayorVend()
inicio
retornar MayorVend
fin
Vendedor CalcMayorVenta(Venta↓ Vent)
inicio
si (MayorVend< Vent. SacarPrecio()* Vent. SacarCantidad())
MayorVend ← Vent. SacarPrecio()* Vent.
SacarCantidad()
fin
15
16. //Definición de la estructura de la clase Distribuidora
clase Distribuidora
inicio
privado:
alfanumérico MayorVen
real Mayor, AcumMontoF
entero ContPequeña, ContGrande
publico:
Inicializar ()
alfanumérico SacarMayorVen()
real SacarMayor()
entero ContPequeña()
entero ContGrande()
real SacarAcumMontoF()
DetMayor (Venta ↓ Vent, Vendedor ↓ Vend)
AcumularTB(Venta ↓ Vent)
DetMayorTipoBombona()
AcumularMontoF(Vendedor ↓ Vend)
fin//clase Distribuidora
16
17. //Método propio de la clase Distribuidora
Distribuidora Inicializar ()
inicio
Mayor ← 0
ContGrande ← 0
ContPequeña ← 0
AcumMontoF ← 0
fin
17
18. alfanumérico Distribuidora SacarMayorVen()
inicio
retornar MayorVen
fin
real Distribuidora SacarMayor()
inicio
retornar Mayor
fin
entero Distribuidora SacarContGrande()
inicio
retornar ContGrande
fin
entero Distribuidora SacarContPequeña
inicio
retornar ContPequeña
fin
real Distribuidora SacarAcumMontoF()
inicio
retornar AcumMontoF
fin
18
19. Distribuidora DetMayor (Venta↓ Vent, Vendedor ↓ Vend)
inicio
si ( Mayor < Vend. SacarAcumMF)
inicio
Mayor ← Vend. SacarAcumMF()
MayorVen ← Vent. SacarCodigo ()
fin
fin
Distribuidora AcumularTB (Venta↓ Vent)
inicio
si (Vent. SacarTipoBombona = “Grande”)
ContGrande ← ContGrande + Vent. SacarCantidad()
sino
si (Vent. SacarTipoBombona = “Pequeña”)
ContPequeña ← ContPequeña + Vent. SacarCantidad()
fin
19
20. alfanumérico Distribuidora DetMayorTipoBombona()
inicio
alfanumérico Fact
si ContGrande> ContPequeña)
Fact ← “Las de tamaño grande”
sino
si ContGrande< ContPequeña)
Fact ← “Las de tamaño pequeña”
sino
Fact ← “Las pequeñas y grandes se vendieron en igual cantidad”
retornar Fact
fin
Distribuidora AcumularMontoF(Vendedor↓ Vend)
inicio
AcumMontoF ← AcumMontoF + Vend.SacarAcumMF()
fin
20
21. f.u. (1) 1) Inicializar (Mayor, AcumMontoF, ContGrande,
ContPequeña)
f.m.(2) 2) Inicializar (AcumMF, ContVenta, Mayor Vend)
f.m.(2) 3) Leer(Codigo)
f.m.(3) 4) Leer (TipoBombona, Precio, Cantidad)
f.m.(3) 5) Determinar mayor monto facturado
por vendedor
si (MayorVend<Precio*Cantidad)
MayorVend ← Precio*Cantidad
f.m.(3) 6) Acumular Monto Facturado:
AcumMF AcumMF + Precio*Cantidad
f.m.(3) 7) Contar venta:
ContVenta ContVenta + 1
f.m.(3) 8) Acumular según tipo de bombona
si(TipoBombona=”Grande”)
ContGrande← ContGrande + Cantidad
sino
si(TipoBombona=”Pequeña”)
ContPequeña← ContPequeña + Cantidad
f.m.(4) 9) Imprimir monto total facturado por vendedor
(AcumMF)
f.m.(4) 10) Calcula e imprime Promedio facturado del
vendedor Promedio ← AcumMF/ContVenta
f.m.(4) 11) Imprimir mayor monto facturado por vendedor
(MayorVend)
f.m.(4) 12) Determinar vendedor con mayor facturación
si (Mayor<AcumMF)
inicio
Mayor ← AcumMF
MayorVen ← Código
fin
f.m(4) 13) Acumular monto facturado por Distribuidora
AcumMontoF ← AcumMontoF + AcumMF
//Programa de aplicación
principal()
inicio
Venta Vent
Vendedor Vend
Distribuidora Dist
Dist.Inicializar()
alfanumérico HayDato ← “S”
repetir mientras HayDato = “S”
inicio
Vend. Inicial()
InterfazEntradaCodigo(Vent)
alfanumérico Resp ← “S”
repetir mientras (Resp = “S”)
inicio
InterfazEntradaVenta(Vent)
Vend. CalcMayorVenta(Vent)
Vend.Acumular(Vent)
Vend.Contar()
Dist.AcumularTB(Vent)
escribir “Procesar otra venta S/N)”
leer Resp
fin
InterfazSalidaVenta()
Dist.DetMayor(Vent, Vend)
Dist.AcumularMontoF(Vend)
escribir”Desea procesar otro vendedor S/N”
leer HayDato
fin
InterfazSalidaDistribuidora(Dist)
fin
21
22. f.u. (5) 14) Imprimir Código del vendedor con mayor
facturación (MayorVen)
f.u. (5) 15) Imprimir tipo de venta con mayor facturación
si(ContGrande > ContPequeña)
Mensaje ← “Las bombonas Grandes se
vendieron en mayor cantidad”
si(ContGrande< ContPequeña)
Mensaje ← “Las bombonas Pequeñas se
vendieron en mayor cantidad”
sino Mensaje ← “Las bombonas Pequeñas y
grandes se vendieron en igual cantidad”
f.u. (5) 16) Imprimir el total facturado de la empresa
(AcumMontoF)
//Programa de aplicación
principal()
inicio
Venta Vent
Vendedor Vend
Distribuidora Dist
Dist.Inicializar()
alfanumérico HayDato ← “S”
repetir mientras HayDato = “S”
inicio
Vend. Inicial()
InterfazEntradaCodigo(Vent)
alfanumérico Resp ← “S”
repetir mientras (Resp = “S”)
inicio
InterfazEntradaVenta(Vent)
Vend. CalcMayorVenta(Vent)
Vend.Acumular(Vent)
Vend.Contar()
Dist.AcumularTB(Vent)
escribir “Procesar otra venta S/N)”
leer Resp
fin
InterfazSalidaVenta()
Dist.DetMayor(Vent, Vend)
Dist.AcumularMontoF(Vend)
escribir”Desea procesar otro vendedor S/N”
leer HayDato
fin
InterfazSalidaDistribuidora(Dist)
fin
22
23. InterfazEntradaCodigo(Venta ↑ Vent)
inicio
alfanumérico Cod,
escribir “Ingrese el código del Vendedor”
leer cod
Vent. AsignarCodigo(Cod)
fin
InterfazEntradaVenta(Venta↑ Vent)
inicio
alfanumérico TB
real Pc
entero Cant
escribir “Ingrese el tipo de bombona (Grande/Pequeña)”
leer TB
Vent.AsignarTipoBombona(TB)
escribir “Ingrese el precio”
leer Pc
Vent.AsignarPrecio(Pc)
escribir “Ingrese el precio”
leer Cant
Vent.AsignarCantidad(Cant)
fin
23
24. InterfazSalidaVenta(Venta ↓ Vent, Vendedor ↓ Vend)
inicio
escribir”El monto total facturado por el Vendedor”, Vent. SacarCodigo (), “es de BsF.”, Vend. Sacar AcumMF()
escribir “El promedio de lo facturado fue de BsF. “,Vend. CalcPromedio()
escribir “El mayor monto facturado fue de BsF. “,Vend.SacarMayorVend()
fin
InterfazSalidaDistribuidora(Distribudora ↓ Dist)
inicio
escribir “El vendedor con mayores ventas fue”, Dist. SacarMayorVen()
escribir ”El tipo de bombona que se vendió en mayor cantidad ”, Dist.DetMayorTipoBombona()
escribir “El total facturado por la empresa fue de BsF”, Dist.SacarAcumMontoF()
fin
24