ejercicio de tipos de tornillos, doble ciclo
TRANSCRIPT
Introducción a la Computación
Programa: Análisis de Sistemas
Profesora: Erys Piñero
Profesor: Vladimir Camacaro
C1. Introducción a la Computación
Profs. Vladimir Camacaro y Erys Piñero. 1
Ejercicio Una ferretería distribuidora de tornillos, recibe de cada uno de sus vendedores la
información referente a sus ventas. Los tornillos se venden por paquetes de una docena. Los datos disponibles son: Código del vendedor Precio del tornillo (por paquetes de una docena) Tipo de tornillos (para maderas, para paredes) Cantidad de tornillos ( se venden paquetes de una docena)Cada vendedor tiene tantas entradas como ventas realizadas Se requiere de un informe que contenga: Por vendedor: Monto total Promedio de lo facturado Por ferretería: Código del vendedor con mayor facturación Total monto facturado Que tipo de tornillo ( para maderas o para paredes) se vendió en mayor
cantidad
C1. Introducción a la Computación
Profs. Vladimir Camacaro y Erys Piñero. 2
Solución:Análisis del problema:Lista Clasificación Ventas ------------------------------------ Clase Código -------------------------------------- Atributo/Vendedor TipoTornillos (para maderas, para paredes) -- Atributo/Vendedor Precio---------------------------------------- Atributo/Vendedor Cantidad ------------------------------------ Atributo/Vendedor
Vendedor--------------------------------------------------- ClaseCalcular monto total facturado------------------------ Método/InformeCalcular promedio de lo facturado------------------- Método/Informe
Ferretería -------------------------------------------------- ClaseCalcular vendedor con mayor facturación --------- Método/FerreteríaCalcular tipo de tornillo que se vendió en mayor cant Método/FerreteríaCalcular total monto facturado----------------------- Método/Ferretería
C1. Introducción a la Computación
Profs. Vladimir Camacaro y Erys Piñero. 3
f.u.(1) 1) Inicializar (Mayor, AcumMontoF, CantMaderas, CantParedes) f.m.(2) 2) Inicializar (AcumMF, ContVenta) f.m.(2) 3) Leer(CodigoVend) f.m.(3) 4) Leer (TipoTornillos, Precio, Cantidad)f.m.(3) 5) Acumular Monto Facturado: AcumMF AcumMF + Precio*Cantidadf.m.(3) 6) Contar venta: ContVenta ContVenta + 1f.m.(3) 7) Acumular según tipo de tornillo si(TipoTornillos=”Para maderas”) CantMaderas← CantMaderas + Cantidad sino si(TipoTornillos=”Para paredes”) CantParedes← CantParedes + Cantidad
C1. Introducción a la Computación
Profs. Vladimir Camacaro y Erys Piñero. 4
f.m.(4) 8) Imprimir monto total facturado (AcumMF)f.m.(4) 9) Calcula e imprime Promedio facturado del vendedor Promedio ← AcumMF/ContVentaf.m.(4) 10) Determinar vendedor con mayor facturación si (Mayor<AcumMF) inicio Mayor ← AcumMF MayorVen ← Código fin f.m(4) 11) Acumular monto facturado por Ferretería AcumMontoF ← AcumMontoF + AcumMF f.u. (5) 12) Imprimir Codigo del vendedor con mayor facturación (MayorVen) f.u. (5) 13) Imprimir tipo de venta con mayor facturación si (CantMaderas > CantParedes) Mensaje ← “Las tornillos para maderas se vendieron en mayor cantidad” si (CantMaderas < CantParedes) Mensaje ← “Los tornillos para paredes se vendieron en mayor cantidad” sino Mensaje ← “Los tornillos para maderas y paredes se vendieron en igual
cantidad” f.u. (5) 14) Imprimir el total facturado de la empresa (AcumMontoF)
C1. Introducción a la Computación
Profs. Vladimir Camacaro y Erys Piñero. 5
1 HayDato←”Si”
repetir mientras (HayDato=“si”)
Resp←”Si”
repetir mientras (Resp=“Si”)
leer Resp
4
leer HayDato
121314
C1. Introducción a la Computación
Profs. Vladimir Camacaro y Erys Piñero. 6
23
891011
4567
Ventaalfanumérico Código
alfanumérico TipoTornillos real Precioentero Cantidad
AsignarCódigo(alfanumerico ↓ Cod)
AsignarTipoTornillos(alfanumerico ↓ TB)
AsignarPrecio(real ↓ Pc)
AsignarCantidad(entero ↓ Cant)
alfanumerico SacarCodigo()
alfanumerico SacarTipoTornillos()
real SacarPrecio()
entero SacarCantidad()
C1. Introducción a la Computación
Profs. Vladimir Camacaro y Erys Piñero. 7
Vendedor
real AcumMFentero ContVentaInicial()real SacarAcumMF()entero SacarContVenta()Acumular (Vendedor ↓ Vend)Contar()real CalcPromedio()
C1. Introducción a la Computación
Profs. Vladimir Camacaro y Erys Piñero. 8
Ferretería
real Mayoralfanumérico MayorVenentero CantMaderasentero CantParedesreal AcumMontoF
Inicializar()real SacarMayor()alfanumérico SacarMayorVend()entero SacarCantMaderas()entero SacarCantParedes()real SacarAcumMontoF() DetMayor TipoTornillos()AcumularMontoF(Inf)DetMayor(Vend,Inf)AcumularTB(Vend)
C1. Introduccion a la Computacion
Profs. Vladimir Camacaro y Erys Piñero. 9
// Definición de la estructura de la clase Ventaclase Venta inicio privado: alfanumérico Código, TipoTornillos real Precio entero Cantidad publico: AsignarCódigo(alfanumérico ↓ Cod) AsignarTipoTornillos(alfanumérico ↓ TB) AsignarPrecio (real ↓ Pc) AsignarCantidad (entero ↓ Cant) alfanumérico SacarCodigo() alfanumérico SacarTipoTornillos() real SacarPrecio() entero SacarCantidad() fin// Venta
C1. Introducción a la Computación
Profs. Vladimir Camacaro y Erys Piñero. 10
//Definición de la estructura de la clase Informe clase Vendedor inicio privado: real AcumMF entero ContVenta publico: Inicial () real SacarAcumMF() entero SacarContVenta() Acumular(Vendedor ↓ Vend) Contar () real CalcPromedio () fin // Vendedor
C1. Introducción a la Computación
Profs. Vladimir Camacaro y Erys Piñero. 11
//Métodos propios de la clase Vendedor
Vendedor Inicial ()
inicio
AcumMF ← 0
ContVenta ← 0
fin
C1. Introducción a la Computación
Profs. Vladimir Camacaro y Erys Piñero. 12
real Vendedor SacarAcumMF() inicio retornar AcumMF finentero Vendedor SacarContVenta() inicio retornar ContVenta finVendedor Acumular(Vendedor ↓ Vend) inicio AcumMF ← AcumMF +Vend. SacarPrecio()* Vend. SacarCantidad() finVendedor Contar() Inicio ContVenta ← ContVenta + 1 fin
C1. Introducción a la Computación
Profs. Vladimir Camacaro y Erys Piñero. 13
real Vendedor CalcPromedio()
inicio
real Promedio
si (contVenta =0)
promedio ← 0
sino promedio ← AcumMF/ContVenta
retornar promedio
fin
C1. Introducción a la Computación
Profs. Vladimir Camacaro y Erys Piñero. 14
//Definición de la estructura de la clase Distribuidoraclase Ferreteria inicio privado: alfanumérico MayorVen real Mayor, AcumMontoF entero CantMaderas, CantParedes publico: Inicializar () alfanumérico SacarMayorVen() real SacarMayor() entero CantMaderas() entero CantParedes() real SacarAcumMontoF() DetMayor (Venta ↓ Vent,Vendedor ↓ Vend) AcumularTB(Venta ↓ Vent) DetMayorTornillos() AcumularMontoF(Vendedor ↓ Vend) fin//clase FerreteriaC1. Introducción a la Computación
Profs. Vladimir Camacaro y Erys Piñero. 15
//Método propio de la clase Distribuidora
Ferreteria Inicializar ()
inicio
Mayor ← 0
CantMaderas ← 0
CantParedes ← 0
AcumMontoF ← 0
fin
C1. Introducción a la Computación
Profs. Vladimir Camacaro y Erys Piñero. 16
alfanumerico Ferreteria SacarMayorVen() inicio retornar MayorVen finreal Ferreteria SacarMayor() inicio retornar Mayor finreal Ferreteria SacarCantMaderas () inicio retornar CantMaderas finreal Ferreteria SacarCantParedes inicio retornar CantParedes finreal Ferreteria SacarAcumMontoF() inicio retornar AcumMontoF fin
C1. Introducción a la Computación
Profs. Vladimir Camacaro y Erys Piñero. 17
Ferreteria DetMayor (Venta ↓ Vent, Vendedor ↓ Vend) inicio si ( Mayor < Vend. SacarAcumMF) inicio Mayor ← Vend. SacarAcumMF() MayorVen ← Vent. SacarCodigo () fin finFerreteria AcumularTB (Venta ↓ Vent) inicio si (Vent. SacarTipoMaderas = “Para maderas”) CantMaderas ← CantMaderas + Vent. SacarCantidad() sino si (Vent. SacarTipoParedes = “Para paredes”) CantParedes ← CantParedes + Vent. SacarCantidad() fin
C1. Introducción a la Computación
Profs. Vladimir Camacaro y Erys Piñero. 18
alfanumérico Ferreteria DetMayorTornillo() inicio alfanumérico Fact si CantMaderas> CantParedes) Fact ← “Los tornillos para maderas se vendieron en mayor cantidad” sino si CantMaderas< CantParedes) Fact ← “Los tornillos para paredes se vendieron en mayor cantidad” sino Fact ← “Los tornillos para maderas y paredes se vendieron en igual cantidad” retornar Fact finFerreteria AcumularMontoF(Vendedor ↓ Vend) inicio AcumMontoF ← AcumMontoF + Vend.SacarAcumMF() fin
C1. Introducción a la Computación
Profs. Vladimir Camacaro y Erys Piñero. 19