{ifs anidado}

Programación - Ingeniería Geología

Contenidos

Sentencia if

# PRESENTING CODE

Mecanismo que le permita hacer algo si se cumple una condición, y no hacerlo si no se cumple.

if true_or_not:
    do_this_if_true

En la vida real, a menudo expresamos un deseo:

si el clima es bueno, saldremos a caminar

después, almorzaremos

Sentencia if

if el_tiempo_es_bueno:
    pasear()
almorzar()
# PRESENTING CODE

Como puedes ver, almorzar no es una actividad condicional y no depende del clima.

Sentencia if-else

if el_tiempo_es_bueno:
    pasear()
else:
    ir_al_cine()
almorzar()
# PRESENTING CODE

Comenzamos con una frase simple que decía: Si el clima es bueno, saldremos a caminar.

Podemos decir, por ejemplo: Si el clima es bueno, saldremos a caminar, de lo contrario, iremos al cine.

Ahora sabemos lo que haremos si se cumplen las condiciones, y sabemos lo que haremos si no todo sale como queremos. En otras palabras, tenemos un "Plan B". 

Sentencia if-else anidados

# PRESENTING CODE

Considera el caso donde la instrucción colocada después del if  es otro if.

Lee lo que hemos planeado para este Domingo. Si hay buen clima, saldremos a caminar. Si encontramos un buen restaurante, almorzaremos allí. De lo contrario, vamos a comer un sandwich. Si hay mal clima, iremos al cine. Si no hay boletos, iremos de compras al centro comercial más cercano.

Sentencia if-else anidados

# PRESENTING CODE

Considera cuidadosamente el código siguiente:

if el_tiempo_es_bueno:
    if existe_buen_restaurante:
        almorzar()
    else:
        comer_un_sandwich()
else:
    if entradas_disponibles:
        ir_al_cine()
    else:
        ir_de_compras()

Sentencia elif

# PRESENTING CODE

El segundo caso especial presenta otra nueva palabra clave de Python: elif. Como probablemente sospechas, es una forma más corta de else if.

elif se usa para verificar más de una condición, y para detener cuando se encuentra la primera sentencia verdadera.

Nuestro siguiente ejemplo se parece a la anidación, pero las similitudes son muy leves. Nuevamente, cambiaremos nuestros planes y los expresaremos de la siguiente manera: si hay buen clima, saldremos a caminar, de lo contrario, si obtenemos entradas, iremos al cine, de lo contrario, si hay mesas libres en el restaurante, vamos a almorzar; si todo falla, regresaremos a casa y jugaremos ajedrez.

Sentencia elif

# PRESENTING CODE

El mismo escenario empleando Python

if el_tiempo_es_bueno:
    salir_a_caminar()
elif existe_entradas_disponibles:
    ir_al_cine()
elif existe_mesas_libres:
    almorzar()
else:
    jugar_ajedrez_en_casa()

El mismo escenario empleando Python

Sentencia elif

# PRESENTING CODE

Se debe prestar atención adicional a este caso:

  • No debes usar else sin un if precedente;
  • else siempre es la última rama de la cascada, independientemente de si has usado elif o no;
  • else es una parte opcional de la cascada, y puede omitirse;
  • Si hay una rama else en la cascada, solo se ejecuta una de todas las ramas;
  • Si no hay una rama else, es posible que no se ejecute ninguna de las opciones disponibles.

¿Cuál es la salida de este programa?

x = 5
if x < 15:
  if x > 8:
    print('one')
  else:
	print('two')
else:
  if x > 2:
    print('three')
# PRESENTING CODE

A. one

B. two

C. three

D. más de una de las anteriores

E. no presenta nada

¿Qué imprime esto? (¡fíjese en los cambios!)

x = 5
if x < 15:
  if x > 8:
    print('one')
  else:
	print('two')

if x > 2:
  print('three')
# PRESENTING CODE

A. one

B. two

C. three

D. más de una de las anteriores

E. no presenta nada

¿Qué imprime esto? (¡note los nuevos cambios!)

x = 5
if x < 15:
  if x > 8:
    print('one')
else:
  print('two')

if x > 2:
  print('three')
# PRESENTING CODE

A. one

B. two

C. three

D. más de una de las anteriores

E. no presenta nada

avg = 95

if avg >= 90:
  grade = 'A'
if avg >= 80:
  grade = 'B'
if avg >= 70:
  grade = 'C'
if avg >= 60:
  grade = 'D'
else:
  grade = 'F'
  
print(grade)
# PRESENTING CODE

Decisiones multidireccionales

>> 'D'

# Aquí está la versión corregida:

avg = 95

if avg >= 90:
  grade = 'A'
elif avg >= 80:
  grade = 'B'
elif avg >= 70:
  grade = 'C'
elif avg >= 60:
  grade = 'D'
else:
  grade = 'F'
  
print(grade)
# PRESENTING CODE

Decisiones multidireccionales

>> 'A'

¿Cuántas líneas imprime?

x = 5
if x == 8:
  print('how')
elif x > 1:
  print('now')
elif x < 20:
  print('brown')
print('cow')
# PRESENTING CODE

A. 0

B. 1

C. 2

D. 3

E. 4

# Lo siguiente también implica decisiones 
# basadas en la edad de una persona:

edad = int(input("Edad: "))

if edad < 13:
  print('Eres un niño.')
elif edad >= 13 and edad < 20:
  print('Eres un adolescente.')
elif edad >= 20 and edad < 30:
  print('Tiens veinte años')
elif edad >= 30 and edad < 40:
  print('Tienes más de 30 años')
else:
  print('Es usted un sobreviviente')
# PRESENTING CODE

Evite el código demasiado complicado

¿Cómo se podría simplificar?

# Lo siguiente también implica decisiones basadas 
# en la edad de una persona:


edad = int(input("Edad: "))

if edad < 13:
  print('Eres un niño.')
elif edad < 20:
  print('Eres un adolescente.')
elif edad < 30:
  print('Tienes veinte años')
elif edad < 40:
  print('Tienes más de 30 años')
else:
  print('Es usted un sobreviviente')
# PRESENTING CODE

Evite el código demasiado complicado

Ejemplo 1

# PRESENTING CODE

Un geólogo está planeando un estudio de exploración geológica en un área y los costos varían según la superficie del terreno a explorar, basado en las siguientes reglas:

  • Si la superficie del terreno es menor a 100 hectáreas, el costo por hectárea es de $800.
  • Si la superficie del terreno es entre 100 y 500 hectáreas, el costo por hectárea es de $700.
  • Si la superficie del terreno es mayor a 500 hectáreas, se aplica un costo por hectárea de $600, además de un descuento global del 10% sobre el costo total debido a economías de escala.

Desarrolle un algoritmo que reciba la superficie del terreno, calcule el costo total basado en estas reglas, y muestre el costo final de la exploración geológica.

Ejemplos de Pruebas

  1. Si la superficie del terreno es de 50 hectáreas, el costo por hectárea sería de $800 y el costo total sería $40,000.
  2. Si la superficie del terreno es de 300 hectáreas, el costo por hectárea sería de $700 y el costo total sería $210,000.
  3. Si la superficie del terreno es de 1,000 hectáreas, el costo inicial sería $600,000 ($600 por hectárea), y con el descuento del 10%, el costo final sería $540,000.

 

Ejemplo 2

# PRESENTING CODE

Una calculadora básica se puede realizar con condiciones. Se desea realizar algunas de las operaciones básicas con dos números x, y. Se debe de considerar los casos donde y = 0 donde la división x/y NO se puede realizar. Se desea generar un menú para que el usuario pueda seleccionar la operación a realizar. Una manera de hacerlo es la siguiente:

1. Se recibe los dos números

2. Se recibe la operación a realizar mediante la variable opción la que selecciona en el menú qué operación ejecuta el algoritmo.

3. Mediante condiciones se realiza la operación deseada. En el caso de la división, si y = 0, NO se puede realizar la división, se muestra un mensaje y se hace error = Verdadero.

4. Se muestra el resultado.

 

 

 

Reto 1:

# PRESENTING CODE

El valor de y se define como sigue:

y = x^2 + 2x - 3 \quad si \quad -3\leq x \leq 2\\ y = 5x + 7 \quad si \quad 2 < x \leq 10\\ y = 0 \quad si \quad x < -3 \quad ó \quad x > 10

Escriba un programa que lea el valor de x y

determine el valor de y.

Reto 2:

# PRESENTING CODE

Escriba un program que permita calcular el valor de f(x), según la expresión:

Reto 3:

# PRESENTING CODE

Reto 3:

# PRESENTING CODE

Como seguramente sabrás, debido a algunas razones astronómicas, el año puede ser bisiesto o común. Los primeros tienen una duración de 366 días, mientras que los últimos tienen una duración de 365 días.

 

Desde la introducción del calendario Gregoriano (en 1582), se utiliza la siguiente regla para determinar el tipo de año:

 

  • si el número del año no es divisible entre cuatro, es un año común.
  • de lo contrario, si el número del año no es divisible entre 100, es un año bisiesto.
  • de lo contrario, si el número del año no es divisible entre 400, es un año común.
  • de lo contrario, es un año bisiesto.
  •  

El código debe mostrar uno de los dos mensajes posibles, que son Año Bisiesto o Año Común, según el valor ingresado.

 

Sería bueno verificar si el año ingresado cae en la era Gregoriana y emitir una advertencia de lo contrario: No dentro del período del calendario Gregoriano. Consejo: utiliza los operadores != y %.

 

Prueba tu código con los datos que hemos proporcionado.

 

1580: No dentro del periodo del calendario

1996: Año bisiesto

1999: Año común

2000: Año bisiesto