MAYO 1 PROYECTO día de la madre el amor más grande
Ejercicio de tipos de tornillos, doble ciclo
1. 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
2. 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
3. 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--------------------------------------------------- Clase
Calcular monto total facturado------------------------ Método/Informe
Calcular promedio de lo facturado------------------- Método/Informe
Ferretería -------------------------------------------------- Clase
Calcular vendedor con mayor facturación --------- Método/Ferretería
Calcular tipo de tornillo que se vendió en mayor cant Método/Ferretería
Calcular total monto facturado----------------------- Método/Ferretería
C1. Introducción a la Computación
Profs. Vladimir Camacaro y Erys Piñero.
3
4. f.u.(1)
f.m.(2)
f.m.(2)
f.m.(3)
f.m.(3)
1) Inicializar (Mayor, AcumMontoF, CantMaderas, CantParedes)
2) Inicializar (AcumMF, ContVenta)
3) Leer(CodigoVend)
4) Leer (TipoTornillos, Precio, Cantidad)
5) Acumular Monto Facturado:
AcumMF AcumMF + Precio*Cantidad
f.m.(3) 6) Contar venta:
ContVenta ContVenta + 1
f.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
5. f.m.(4) 8) Imprimir monto total facturado (AcumMF)
f.m.(4) 9) Calcula e imprime Promedio facturado del vendedor
Promedio ← AcumMF/ContVenta
f.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
cantidad”
Mensaje ← “Los tornillos para maderas y paredes se vendieron en igual
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
7. Venta
alfanumérico Código
alfanumérico TipoTornillos
real Precio
entero 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
8. Vendedor
real AcumMF
entero ContVenta
Inicial()
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
9. Ferretería
real Mayor
alfanumérico MayorVen
entero CantMaderas
entero CantParedes
real 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
10. // Definición de la estructura de la clase Venta
clase 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
11. //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
12. //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
13. real Vendedor SacarAcumMF()
inicio
retornar AcumMF
fin
entero Vendedor SacarContVenta()
inicio
retornar ContVenta
fin
Vendedor Acumular(Vendedor ↓ Vend)
inicio
AcumMF ← AcumMF +Vend. SacarPrecio()* Vend. SacarCantidad()
fin
Vendedor Contar()
Inicio
ContVenta ← ContVenta + 1
fin
C1. Introducción a la Computación
Profs. Vladimir Camacaro y Erys Piñero.
13
14. 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
15. //Definición de la estructura de la clase Distribuidora
clase 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 Ferreteria
C1. Introducción a la Computación
Profs. Vladimir Camacaro y Erys Piñero.
15
16. //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
17. alfanumerico Ferreteria SacarMayorVen()
inicio
retornar MayorVen
fin
real Ferreteria SacarMayor()
inicio
retornar Mayor
fin
real Ferreteria SacarCantMaderas ()
inicio
retornar CantMaderas
fin
real Ferreteria SacarCantParedes
inicio
retornar CantParedes
fin
real Ferreteria SacarAcumMontoF()
inicio
retornar AcumMontoF
fin
C1. Introducción a la Computación
Profs. Vladimir Camacaro y Erys Piñero.
17
18. Ferreteria DetMayor (Venta ↓ Vent, Vendedor ↓ Vend)
inicio
si ( Mayor < Vend. SacarAcumMF)
inicio
Mayor ← Vend. SacarAcumMF()
MayorVen ← Vent. SacarCodigo ()
fin
fin
Ferreteria 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
19. 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
fin
Ferreteria AcumularMontoF(Vendedor ↓ Vend)
inicio
AcumMontoF ← AcumMontoF + Vend.SacarAcumMF()
fin
C1. Introducción a la Computación
Profs. Vladimir Camacaro y Erys Piñero.
19