3.2 Condicionales "if-else" - Estructura de selección



1. Condicionales "if-else" - Estructura de selección

Referencia: Van Rossum 4.1 p19, Rodríguez 3.4.1 p26, Downey 5.5

Las estructuras de selección son un tipo de estructuras de control que permiten decidir que acción seguir a partir de una condición.

Diagrama de Flujo Condicional
Estructura Condicional

Cuando se puede escoger entre dos caminos, se debe tomar una decisión entre las opciones. En estos casos se utilizan los "Condicionales" que son estructuras de selección.

El condicional más simple está conformado por solo dos caminos, se formula una pregunta simple que compara al menos dos variables mediante expresiones de comparación, tales como:

a=ba>ba<b
a<=ba>=betc...

El condicional en diagramas de flujo se representa por un rombo, la expresión se escribe dentro del rombo. Por convención, hacia la derecha del rombo se grafica el caso que la expresión resultada verdadera (V), y hacia abajo o la izquierda se grafica la acción cuando el resultado es falso (F) Una forma de recordar esta convención es extender la mano derecha en señal de verdad, y al extender la mano izquierda, nos queda el lado el lado falso.

Para mostrar la aplicación de un condicional en un algoritmo se utilizan los siguientes ejemplos:



2. Condicionales simples - una condición

Ejemplo 1. Condicionales para aplicar descuentos

Condicional, diagrama de flujo, algoritmo if else

Un almacén aplica un descuento del 10% a quienes han comprado en productos más de 100 dólares.

Realice un algoritmo que permita realizar esta operación directamente en la caja registradora.

Desarrollo de algoritmo

El descuento lo puede aplicar el cajero, o se puede incorporar el algoritmo a la máquina registradora. La variable de ingreso es el valor de compra, el procedimiento debe determinar el valor a pagar, que se presenta al final como variable de salida. El diagrama de flujo que representa el algoritmo es el diagrama 1, las instrucciones en un archivo de Python se adjunta a continuación:

# Ejemplo 1.Descuentos en productos de precio alto.

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

# Procedimiento
if valor >100:
    descuento = 0.10
else:
    descuento = 0
pagar = valor*(1-descuento)

# Salida
print(pagar)

la ejecución el archivo Python:

Valor del producto: 120
108.0
>>>
Diagrama de Flujo Condicionales - Ejercicio 2

Otra forma de expresar el algoritmo en diagrama de flujo, con el punto de vista del dueño del almacén, quien prefiere que no exista descuento inicia con cero (0) y se modifica solo si cumple con la condición de que adquiera más de 100 dólares (diagrama 2):

Las instrucciones en Python se escriben como:

# Ejemplo 1.Descuentos en productos de precio alto.

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

# Procedimiento
descuento = 0
if valor >100:
    descuento = 0.10
pagar = valor*(1-descuento)

# Salida
print(pagar)

En el caso que el condicional modifique una variable solo en el caso de cumplir una condición, no es necesario graficar una acción. En estos casos, se debe escribir la expresión en la forma que permita que el lado sin acción quede del lado falso.



3. Condicional - Conectores and/or/not

Cuando se debe incluir más de una pregunta en un condicional, se utilizan los operadores lógicos.

En diagramas de flujo o seudo-código, las expresiones usan las mismas conectivas que en la notación de lógica matemática (and, or, not).

Conectivasímbolooperador
Conjunciónand
Disyunciónor
Negaciónnot( ) , !

Ejemplo 2. Condicional para aplicar descuentos por volumen o cantidad comprada.

Estructura Condicional Ej01c

Un almacén aplica el descuento del 15% para artículos de valor mayor a 8 dólares y que incluyan más de 10 artículos.

Desarrollo: Para el ejercicio se requieren dos variables de ingreso: valor y cantidad. El descuento se aplica con la expresión:

(valor > 8) ∧ (cantidad > 10)

Para el procedimiento se continúa de igual forma que en el ejercicio anterior:

Instrucciones en Python

# Ejemplo 2.Descuentos en productos de precio alto.

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

# Procedimiento
if (valor>8 and cantidad>10) :
    descuento = 0.10
else:
    descuento = 0

pagar = valor*cantidad*(1-descuento)

# Salida
print(pagar)

resultado del algoritmo:

Valor del producto: 10
cantidad del producto: 15
135.0
>>>

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



4. Condicionales con varios casos

Referencia: Van Rossum 4.1 p19, Rodríguez 3.5 p42, Downey 5.7

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

condicionales multiples en serie

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.

Para estos casos se usan estructuras de control para selección en forma anidada en forma de serie o en forma de árbol.



5. Condicionales en serie

Si para cada condición se requiere una respuesta diferente, se usan condicionales en serie. Un condicional por cada caso.

Estructura condicional en serie

Se usa un ejemplo para ilustrar el uso.

condicional en serie

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 de algoritmo

Para seguir una forma ordenada del problema, se dividen los casos de cantidad en segmentos de recta numérica.

condicional por casos recta numérica

El aplicar los descuentos consiste en evaluar los intervalos de cantidad y escribirlos como casos con condicionales.

Las instrucciones de condicionales en Python se muestran 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 and cantidad<=20):
    descuento = 0.05
if(cantidad > 20):
    descuento = 0.10

pagar = valor*cantidad*(1-descuento)

# Salida
print(pagar)


6. 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.

condicionales en árbol, estructuras de control

Cada camino es parte de un condicional.

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

condicionales en árbol, estructuras de control

Las instrucciones en Python sobre condicionales para el ejercicio son:

# 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




Unidades FP