📱 Control Remoto

Escaneá el QR con tu celular para controlar la presentación y usar el apuntador láser.

QR Code
Ingeniería de Software · Python 3
Condicionales
Unidad II · Estructuras de Control — Sentencias Condicionales
⏱ 2 hs académicas 📍 UAJMS · Yacuiba 🐍 Python 3
if
1 / 19
Unidad II Objetivos
💡
En Ingeniería de Software, la toma de decisiones se modela mediante estructuras de control que alteran el flujo secuencial de ejecución.
2 / 19
3.1 Toma de Decisiones
🌧
"Si está lloviendo → llevo paraguas; si no → no lo llevo."

Una sentencia condicional evalúa una expresión booleana y redirige el flujo de ejecución hacia uno de dos o más bloques de código mutuamente excluyentes.

Flujo secuencial (sin condicionales):

  • El programa hace siempre lo mismo
  • No puede adaptarse a la entrada

Flujo condicional (con if):

  • Reacciona a los datos del usuario
  • Puede validar, clasificar y decidir
3 / 19
3.2 Estructura if / else

Si la condición es True → bloque if. Si es False → bloque else.

# Ejemplo: temperatura
temperatura = int(input("¿Temperatura de hoy? "))

if temperatura > 25:
    print("Hace calor, viste ropa ligera.")
else:
    print("No hace tanto calor, llevá chaqueta.")
⚠️
Indentación obligatoria. Python usa 4 espacios para definir los bloques. Sin indentación → error inmediato.

Sintaxis BNF: if <expresión_booleana>: <bloque> — Python delimita bloques por indentación consistente (PEP 8: 4 espacios).

4 / 19
3.2 La Indentación — Por Qué Importa

Python no usa llaves {}. Los 4 espacios definen qué código pertenece al bloque if o else.

if temperatura > 25:
····print("Hace calor"← pertenece al if
else:
····print("Llevá chaqueta"← pertenece al else

✗ Error

if x > 0:
print("positivo")  # sin indentar

✓ Correcto

if x > 0:
    print("positivo")
📋
PEP 8 — Guía de estilo oficial de Python. Estandariza el uso de 4 espacios (no tabulaciones) para la indentación.
5 / 19
3.4
Sección
Operadores de Comparación
Las herramientas para construir condiciones
6 / 19
3.4 Operadores de Comparación
OperadorSignificadoExpresiónValor
==Igual a5 == 5True
!=Diferente de5 != 3True
>Mayor que7 > 3True
<Menor que2 < 8True
>=Mayor o igual5 >= 5True
<=Menor o igual4 <= 6True
inPertenencia'a' in 'abc'True
⚠️
¡Ojo! == compara. = asigna. Son operaciones completamente distintas.
7 / 19
3.5 Operadores Lógicos

Combinan múltiples condiciones en una sola expresión.

edad = 20
tiene_carnet = True

# and → AMBAS condiciones deben ser True
if edad >= 18 and tiene_carnet:
    print("Puede conducir.")

# or → AL MENOS UNA condición debe ser True
if edad < 12 or edad > 65:
    print("Tarifa especial aplicada.")

# not → INVIERTE el valor de verdad
if not tiene_carnet:
    print("No tiene carnet de conducir.")
📊
Tabla de verdad:  True and True → True  |  True or False → True  |  not True → False
8 / 19
3.3
Sección
if / elif / else
Cuando hay más de dos posibilidades
9 / 19
3.3 Estructura if / elif / else

elif = "else if". Se evalúa solo si la condición anterior fue False.

nota = float(input("Nota (0-100): "))

if   nota >= 90:  print("Excelente - A")
elif nota >= 80:  print("Muy Bien  - B")
elif nota >= 70:  print("Bien      - C")
elif nota >= 60:  print("Suficiente- D")
else:             print("Reprobado - F")
🔑
Python evalúa de arriba hacia abajo y ejecuta solo el primer bloque True. El orden importa.

Una cadena if-elif-else equivale a un árbol de decisión binario. Solo se ejecuta el primer bloque cuya condición evalúa a True.

10 / 19
3.3 Flujo de Evaluación
if   nota >= 90  →  ¿True? → imprime A  → STOP
elif nota >= 80  →  ¿True? → imprime B  → STOP
elif nota >= 70  →  ¿True? → imprime C  → STOP
elif nota >= 60  →  ¿True? → imprime D  → STOP
else             →         → imprime F  → STOP
🔑
Una vez que Python encuentra un bloque True, salta todo lo demás. Por eso el orden de las condiciones importa.
📐
Complejidad ciclomática: cada rama elif incrementa en 1 la complejidad del módulo. Concepto clave en pruebas de software.
11 / 19
Ejemplo Resuelto Calificador de Notas
nombre = input("Nombre: ")
nota   = float(input("Nota (0-100): "))

if   nota < 0 or nota > 100: cal = "Error";            msg = "Nota fuera de rango."
elif nota >= 90:             cal = "A - Sobresaliente"; msg = "¡Excelente!"
elif nota >= 80:             cal = "B - Muy Bueno";      msg = "¡Muy buen trabajo!"
elif nota >= 70:             cal = "C - Bueno";          msg = "Podés mejorar."
elif nota >= 60:             cal = "D - Suficiente";     msg = "Aprobaste, esforzate más."
else:                         cal = "F - Reprobado";      msg = "No te rindas."

print("Resultado para:", nombre)
print("Calificación:", cal)
print(msg)
La primera condición actúa como validación de entrada (input validation) — práctica esencial para garantizar la robustez del sistema.
12 / 19
Ejemplo Resuelto Calificador de Notas — Salida

Entrada: nombre="Ana", nota=85

Resultado para: Ana Calificación: B - Muy Bueno ¡Muy buen trabajo!

Entrada: nombre="Luis", nota=55

Resultado para: Luis Calificación: F - Reprobado No te rindas.

Entrada: nombre="María", nota=110

Resultado para: María Calificación: Error Nota fuera de rango.
El principio de validación de entrada es una práctica esencial en ingeniería de software para garantizar la robustez del sistema.
13 / 19
Ejercicio 7 Clasificador de Triángulos
📋 Consigna
  1. Solicitá al usuario los 3 lados de un triángulo (a, b, c como float).
  2. Verificá si forman un triángulo válido (cada lado menor que la suma de los otros dos).
  3. Si es válido, clasificalo:
    • Equilátero: los 3 lados iguales
    • Isósceles: exactamente 2 lados iguales
    • Escaleno: todos diferentes
  4. Mostrá el tipo de triángulo o el mensaje de error.
💡
Pista: usá and para combinar las tres condiciones de validación en un solo if.
14 / 19
Ejercicio 7 Clasificador de Triángulos — Código
a = float(input("Lado a: "))
b = float(input("Lado b: "))
c = float(input("Lado c: "))

if a + b > c and a + c > b and b + c > a:
    if a == b == c:
        tipo = "Equilátero"
    elif a == b or b == c or a == c:
        tipo = "Isósceles"
    else:
        tipo = "Escaleno"
    print("Triángulo", tipo)
else:
    print("Error: los valores no forman un triángulo válido.")
a=5, b=5, c=5 → Triángulo Equilátero a=3, b=3, c=4 → Triángulo Isósceles a=2, b=3, c=10 → Error: los valores no forman un triángulo válido.
15 / 19
Ejercicio 8 Calculadora de IMC
📋 Consigna
  1. Solicitá peso en kg y altura en metros.
  2. Calculá el IMC: peso / (altura ** 2)
  3. Clasificá según la OMS:
    • IMC < 18.5 → Bajo peso
    • 18.5 ≤ IMC < 25 → Peso normal
    • 25 ≤ IMC < 30 → Sobrepeso
    • IMC ≥ 30 → Obesidad
  4. Mostrá el IMC (2 decimales) y la clasificación.
💡
Pista: los elif se evalúan en orden — no es necesario poner el límite inferior si ya fue descartado por la condición anterior.
16 / 19
Ejercicio 8 Calculadora de IMC — Código
peso   = float(input("Peso (kg): "))
altura = float(input("Altura (m): "))

imc = peso / (altura ** 2)

if imc < 18.5:
    clasificacion = "Bajo peso"
elif imc < 25:
    clasificacion = "Peso normal"
elif imc < 30:
    clasificacion = "Sobrepeso"
else:
    clasificacion = "Obesidad"

print(f"IMC: {imc:.2f}")
print(f"Clasificación: {clasificacion}")
peso=70, altura=1.75 → IMC: 22.86 | Peso normal peso=50, altura=1.75 → IMC: 16.33 | Bajo peso peso=95, altura=1.70 → IMC: 32.87 | Obesidad
17 / 19
Ejercicio 9 Traza el Código — if Anidado
a = 15
b = 10

if a > b:
    print("A es mayor")
    if a > 20:
        print("A es muy grande")
    else:
        print("A es moderado")
elif a == b:
    print("Son iguales")
else:
    print("B es mayor")
Consigna
  1. Predecí la salida (traza manual).
  2. Identificá cuántas ramas hay y cuál se ejecuta.
  3. Calculá la complejidad ciclomática.
  4. Verificá en Python.
A es mayor A es moderado
18 / 19
Resumen Lo Aprendido Hoy

Estructuras

  • if condición: — ejecutar si es verdad
  • elif condición: — condición alternativa
  • else: — cuando todo lo anterior es False

Comparación:  == != > < >= <= in

Lógicos:  and  or  not

Reglas clave

  • PEP 8: 4 espacios, sin mezclar tabs.
  • Las condiciones son expresiones booleanas.
  • Python evalúa de arriba hacia abajo.
  • = asigna, == compara.
🎯
Próxima unidad: Estructuras de repetición — for y while. Iteración e invariante de bucle.
📚
Recurso oficial:
docs.python.org/3/reference/
compound_stmts.html#the-if-statement
19 / 19