solucion distribuidora de gas. doble ciclo

24
Introducción a la Computación Programa: Análisis de Sistemas Profesora: Erys Piñero Profesor: Vladimir Camacaro 1

Upload: erysintroduccion

Post on 11-Aug-2015

331 views

Category:

Education


2 download

TRANSCRIPT

Page 1: Solucion distribuidora de gas. doble ciclo

Introducción a la Computación

Programa: Análisis de Sistemas

Profesora: Erys PiñeroProfesor: Vladimir Camacaro

1

Page 2: Solucion distribuidora de gas. doble ciclo

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 bombonaCada 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 vendedorPor distribuidora: Código del vendedor con mayor facturación Total monto facturado Que tipo de bombona de gas se vendió en mayor cantidad

2

Page 3: Solucion distribuidora de gas. doble ciclo

Análisis del problema:Lista Clasificación Venta ---------------------------------------- Clase Código -------------------------------------- Atributo/Vendedor TipoBombona------------------------------ Atributo/Vendedor Precio---------------------------------------- Atributo/Vendedor Cantidad ------------------------------------ Atributo/Vendedor

Vendedor--------------------------------------------------- ClaseCalcular monto total facturado------------------------ Método/VendedorCalcular promedio de lo facturado------------------- Método/VendedorCalcular mayor monto facturado por vendedor - Método/Vendedor

Distribuidora----------------------------------------------- ClaseCalcular vendedor con mayor facturación --------- Método/DistribuidoraCalcular tipo de bombona de gas que se vendió en mayor cant Método/DistribuidoraCalcular total monto facturado----------------------- Método/Distribuidora

3

Page 4: Solucion distribuidora de gas. doble ciclo

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*Cantidadf.m.(3) 7) Contar venta: ContVenta ContVenta + 1f.m.(3) 8) Acumular según tipo de bombona si(TipoBombona=”Grande”) ContGrande← ContGrande + Cantidad sino si(TipoBombona=”Pequeña”) ContPequeña← ContPequeña + Cantidadf.m.(4) 9) Imprimir monto total facturado por vendedor (AcumMF)f.m.(4) 10) Calcula e imprime Promedio facturado del vendedor Promedio ← AcumMF/ContVentaf.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

Se escribe lo solicitado por la Vendedor

(9,10,11)

Page 5: Solucion distribuidora de gas. doble ciclo

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)

5

Se escribe lo solicitado por la Distribuidora

Page 6: Solucion distribuidora de gas. doble ciclo

1 HayDato←”Si”

repetir mientras (HayDato=“si”)

Resp←”Si”

repetir mientras (Resp=“Si”)

leer Resp

4

leer HayDato

141516

6

23

910111213

45678

Page 7: Solucion distribuidora de gas. doble ciclo

Ventaalfanumérico Código alfanumérico TipoBombona real Precioentero Cantidad AsignarCódigo(alfanumerico ↓ Cod) AsignarTipoBombona(alfanumerico ↓ TB) AsignarPrecio(real ↓ Pc) AsignarCantidad(entero ↓ Cant)alfanumerico SacarCodigo()alfanumerico SacarTipoBombona()real SacarPrecio()entero SacarCantidad()

7

Page 8: Solucion distribuidora de gas. doble ciclo

Vendedorreal AcumMFentero ContVentareal MayorVend

Inicial()real SacarAcumMF()entero SacarContVenta()real SacarMayorVend()Acumular (Venta ↓ Vent)Contar()real CalcMayorVenta(Venta ↓ Vent)real CalcPromedio()

8

Page 9: Solucion distribuidora de gas. doble ciclo

Distribuidora

real Mayoralfanumérico MayorVenentero ContGrandeentero ContPequeñareal AcumMontoFInicializar()real SacarMayor()alfanumérico SacarMayorVend()entero SacarContGrande()entero SacarContPequeña()real SacarAcumMontoF() DetMayor TipoBombona()AcumularMontoF(Inf)DetMayor(Vend,Inf)AcumularTB(Vend)

9

Page 10: Solucion distribuidora de gas. doble ciclo

// Definición de la estructura de la clase Ventaclase 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

Page 11: Solucion distribuidora de gas. doble ciclo

//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

Page 12: Solucion distribuidora de gas. doble ciclo

//Métodos propios de la clase Vendedor

Vendedor Inicial () inicio AcumMF ← 0 ContVenta ← 0 MayorVend ← 0 fin

12

Page 13: Solucion distribuidora de gas. doble ciclo

real Vendedor SacarAcumMF() inicio retornar AcumMF finentero Vendedor SacarContVenta() inicio retornar ContVenta finVendedor Acumular(Venta ↓ Vent) inicio AcumMF ← AcumMF +Vent. SacarPrecio()* Vent. SacarCantidad() finVendedor Contar() Inicio ContVenta ← ContVenta + 1 fin

13

Page 14: Solucion distribuidora de gas. doble ciclo

real Vendedor CalcPromedio() inicio real Promedio si (contVenta =0) Promedio ← 0 sino Promedio ← AcumMF/ContVenta retornar Promedio fin

14

Page 15: Solucion distribuidora de gas. doble ciclo

real Vendedor SacarMayorVend() inicio retornar MayorVend finVendedor CalcMayorVenta(Venta↓ Vent) inicio si (MayorVend< Vent. SacarPrecio()* Vent. SacarCantidad()) MayorVend ← Vent. SacarPrecio()* Vent.

SacarCantidad() fin

15

Page 16: Solucion distribuidora de gas. doble ciclo

//Definición de la estructura de la clase Distribuidoraclase 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

Page 17: Solucion distribuidora de gas. doble ciclo

//Método propio de la clase DistribuidoraDistribuidora Inicializar () inicio Mayor ← 0 ContGrande ← 0 ContPequeña ← 0 AcumMontoF ← 0 fin

17

Page 18: Solucion distribuidora de gas. doble ciclo

alfanumérico Distribuidora SacarMayorVen() inicio retornar MayorVen finreal Distribuidora SacarMayor() inicio retornar Mayor finentero Distribuidora SacarContGrande() inicio retornar ContGrande finentero Distribuidora SacarContPequeña inicio retornar ContPequeña finreal Distribuidora SacarAcumMontoF() inicio retornar AcumMontoF fin

18

Page 19: Solucion distribuidora de gas. doble ciclo

Distribuidora DetMayor (Venta↓ Vent, Vendedor ↓ Vend) inicio si ( Mayor < Vend. SacarAcumMF) inicio Mayor ← Vend. SacarAcumMF() MayorVen ← Vent. SacarCodigo () fin finDistribuidora 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

Page 20: Solucion distribuidora de gas. doble ciclo

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 finDistribuidora AcumularMontoF(Vendedor↓ Vend) inicio AcumMontoF ← AcumMontoF + Vend.SacarAcumMF() fin

20

Page 21: Solucion distribuidora de gas. doble ciclo

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*Cantidadf.m.(3) 7) Contar venta: ContVenta ContVenta + 1f.m.(3) 8) Acumular según tipo de bombona si(TipoBombona=”Grande”) ContGrande← ContGrande + Cantidad sino si(TipoBombona=”Pequeña”) ContPequeña← ContPequeña + Cantidadf.m.(4) 9) Imprimir monto total facturado por vendedor

(AcumMF)f.m.(4) 10) Calcula e imprime Promedio facturado del

vendedor Promedio ← AcumMF/ContVentaf.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

Page 22: Solucion distribuidora de gas. doble ciclo

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

Page 23: Solucion distribuidora de gas. doble ciclo

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

Page 24: Solucion distribuidora de gas. doble ciclo

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