3.2.1 Condicionales con varios casos

Referencia: Van Rossum 4.1 p19, Rodriguez 3.5 p42, Downey 5.7

Existen problemas en los que una variable puede tomar diferentes valores conforme al cumplimiento de diferentes casos.

Un ejemplo es cuando se realizan ventas por volumen, el descuento depende de la cantidad del producto que se vende.

Cuando la variable resultado del condicional puede tener varios valores, se puede adoptar una forma simple del problema al dividirla por casos, empezando por el caso básico y se modifica la variable resultado lo modifica cuando se revisan los casos siguientes.

 


Ejemplo 3

Un almacén rebaja 10% del precio de un producto si se adquieren más de 20 unidades y 5% si adquieren hasta 20 unidades pero más de 10, no hay descuento para cantidades menores o iguales a 10 unidades.

Con el precio unitario del producto y la cantidad adquirida, realice un algoritmo para mostrar el valor a pagar.

Desarrollo:

Para seguir una forma ordenada del problema, se divide el problema en casos. En forma ascendente para el descuento, el problema se trata con una recta numérica donde se establecen las cantidades para los rangos de descuento.
Aplicar los descuentos consiste en evaluar los rangos de cantidad y escribirlos como casos con condicionales

# Ejemplo 3.Descuentos en productos por precio y cantidad.

# Ingreso
valor = float(input('Valor del producto: '))
cantidad = float(input('cantidad del producto: '))

# Procedimiento
descuento = 0
if (cantidad > 10 and cantidad<=20):
    descuento = 0.05
if(cantidad > 20):
    descuento = 0.10

pagar = valor*cantidad*(1-descuento)

# Salida
print(pagar)

Condicionales en árbol

Otra forma de resolver el problema del ejemplo anterior, consiste en generar un camino por cada caso para asignar el valor a la variable de salida.
Cada camino es parte de un condicional.

Siguiendo ésta idea, el diagrama de flujo anterior se reorganiza y muestra como:

# Ejemplo 3.Descuentos en productos por precio y cantidad.

# Ingreso
valor = float(input('Valor del producto: '))
cantidad = float(input('cantidad del producto: '))

# Procedimiento
descuento = 0
if (cantidad>10):
    if (cantidad<=20):
        descuento = 0.10
    else:
        descuento = 0.05
else:
    descuento = 0.0

pagar = valor*cantidad*(1-descuento)

# Salida
print(pagar)

Referencia: Elementos esenciales para programación: Algoritmos y Estructuras de Datos Latin Project. Primera Edición 2014. Sección 4.1.2 p.66