{ifs anidado}

Programación - Ingeniería Civil

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 contratista de ingeniería civil está presupuestando la construcción de un puente y los costos varían según la longitud del puente a construir, con base en las siguientes reglas:

  • Si la longitud del puente es menor a 500 metros, el costo por metro es de $1,200.
  • Si la longitud del puente es entre 500 metros y 1,000 metros, el costo por metro es de $1,100.
  • Si la longitud del puente es mayor a 1,000 metros, se aplica un costo por metro de $1,000, además de un descuento global del 5% sobre el costo total debido a economías de escala.

Desarrolle un algoritmo que reciba la longitud del puente, calcule el costo total basado en estas reglas, y muestre el costo final de la construcción.

Ejemplos de pruebas:

  1. Si la longitud del puente es de 300 metros, el costo por metro sería de $1,200 y el costo total sería $360,000.
  2. Si la longitud del puente es de 800 metros, el costo por metro sería de $1,100 y el costo total sería $880,000.
  3. Si la longitud del puente es de 1,500 metros, el costo inicial sería $1,500,000 ($1,000 por metro), y con el descuento del 5%, el costo final sería $1,425,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