3.2 Condicionales «if-else» – Estructura de selección

Referencia: Van Rossum 4.1 p19, Rodriguez 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>b
a=b
a<b
a<=b
etc....

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:


Ejemplo 1. Condicionales para aplicar descuentos

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

Condicional, diagrama de flujo, algoritmo if else

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

Desarrollo: 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)
Diagrama de Flujo Condicionales – Ejercicio 2

la ejecución el archivo Python:

Valor del producto: 120
108.0
>>>

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.


Condicional con varias preguntas

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

Conectiva símbolo operador
Conjunción and
Disyunción or
Negación not( ) , !

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

Condicional, diagrama de flujo, algoritmo if else

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