Sesión 3: Decisiones simples y compuestas¶
Objetivo¶
Resolver problemas que requieren evaluar condiciones simples y compuestas.
Producto de la sesión¶
Elabora un programa que tome decisiones correctas según los datos de entrada y presente una salida clara.
Resultado esperado¶
Construye un programa con decisiones simples o compuestas, identificando condiciones y organizando la solución en entrada, proceso y salida.
Alcance de la sesión¶
- Uso de decisiones simples y compuestas con
ifyif-else. - Construcción de condiciones con operadores relacionales y lógicos.
- Aplicación en ejercicios guiados y práctica autónoma.
- Verificación de resultados con casos de prueba.
Base conceptual de la sesión¶
- algoritmos condicionales
- if
- if-else
- condiciones compuestas
- validación básica
- casos de prueba
1. Algoritmos condicionales
Concepto Un algoritmo condicional evalúa una condición para elegir entre uno o más caminos posibles dentro de la solución.
Elementos o clasificación Decisiones simples, dobles y compuestas.
Criterio de uso Se usa cuando el resultado del problema depende de una condición. No todas las instrucciones se ejecutan siempre; algunas dependen del valor evaluado.
Ejemplo de aplicación
if nota >= 11:
print("Aprueba")
else:
print("No aprueba")
2. If
Concepto Permite ejecutar una acción solo cuando una condición se cumple.
Elementos o clasificación Decisión simple con una sola condición y una sola acción principal.
Criterio de uso Se usa cuando una acción depende de una condición. Si la condición es falsa y no existe otra rama, el programa continúa con la siguiente instrucción.
Ejemplo de aplicación
if nota >= 11:
print("Aprueba")
3. If-Else
Concepto Define dos caminos posibles según el resultado de una condición.
Elementos o clasificación Decisión binaria con camino verdadero y camino falso.
Criterio de uso Se usa cuando el problema exige escoger entre dos caminos excluyentes. Cada camino debe producir un resultado coherente para el usuario.
Ejemplo de aplicación
if edad >= 18:
print("Mayor")
else:
print("Menor")
4. Condiciones Compuestas
Concepto Usan operadores lógicos para evaluar más de una regla al mismo tiempo.
Elementos o clasificación Condiciones unidas por and, or y not.
Criterio de uso Conviene construirlas a partir de condiciones simples ya entendidas. Si una condición se vuelve extensa, debe separarse en variables lógicas con nombres claros.
Ejemplo de aplicación
if edad >= 18 and promedio >= 14:
print("Beca")
5. Validación Básica
Concepto Sirve para comprobar si los datos ingresados tienen sentido antes de continuar.
Elementos o clasificación Validación de rango, formato y consistencia.
Criterio de uso La validación protege al algoritmo de datos imposibles o incoherentes antes de realizar cálculos, clasificaciones o salidas finales.
Ejemplo de aplicación
if nota < 0 or nota > 20:
print("Fuera de rango")
6. Casos De Prueba
Concepto Permiten verificar si la solución funciona en situaciones normales, límite y excepcionales.
Elementos o clasificación Casos normales, límite y excepcionales.
Criterio de uso Una solución debe probarse con datos normales, valores de frontera y entradas inválidas o poco frecuentes.
Ejemplo de aplicación Probar con 10.9, 11 y 20 para observar cambios de resultado.
Síntesis de la sesión Para resolver ejercicios, no basta con escribir instrucciones en Python. Es necesario reconocer los datos, nombrarlos correctamente, elegir operaciones o estructuras de control apropiadas y comprobar el resultado con casos de prueba.
| Aspecto | Pregunta guía |
|---|---|
| Entrada | ¿Qué datos necesita recibir el programa? |
| Proceso | ¿Qué cálculos, decisiones o repeticiones transforman los datos? |
| Salida | ¿Qué resultado debe mostrarse y con qué formato? |
| Prueba | ¿Con qué casos se demuestra que la solución funciona? |
Actividad práctica¶
La sesión se desarrolla con exploración inicial, ejercicios guiados, ejercicios de aplicación y una tarea tipo competencia.
Arquitectura¶
Entrada -> Proceso -> Salida
- Entrada: datos del problema.
- Proceso: evaluación de condiciones y toma de decisiones.
- Salida: resultado obtenido según la condición evaluada.
Mini laboratorio¶
Experimenta con decisiones simples y compuestas cambiando los datos de entrada para observar cómo cambia la salida.
numero = 7
if numero % 2 == 0:
print('Par')
else:
print('Impar')
edad = 65
tiene_discapacidad = 'no'
if edad >= 60 or tiene_discapacidad == 'si':
print('Atención preferente')
else:
print('Atención regular')
Ejercicio 1: Descuento en una compra¶
Construir un programa que lea el monto de una compra. Si el monto es mayor o igual que 100, aplica un descuento del 10%; de lo contrario, no aplica descuento.
Resolución guiada
- Comprender: el total a pagar cambia según el monto de compra.
- Entradas:
monto, como número decimal. - Procesos:
- calcular el descuento solo cuando corresponde
- asignar el porcentaje aplicado
- calcular el total final después del descuento
- Salidas: descuento aplicado, monto descontado y total a pagar.
- Pruebas: usa
80,100y150. - Código:
monto = float(input('Monto de compra: '))
if monto >= 100:
porcentaje_descuento = 10
descuento = monto * 0.10
else:
porcentaje_descuento = 0
descuento = 0
total = monto - descuento
print('Descuento aplicado:', porcentaje_descuento, '%')
print('Monto descontado:', descuento)
print('Total a pagar:', total)
Ejercicio 2: Préstamo de libro en biblioteca¶
Una biblioteca permite prestar un libro solo si el estudiante tiene carné vigente y no registra multa pendiente.
Resolución guiada
- Comprender: el préstamo depende de dos condiciones que deben cumplirse al mismo tiempo.
- Entradas:
carne_vigenteymulta_pendiente, como textossiono. - Procesos:
- comparar si el carné está vigente
- comparar si no existe multa pendiente
- usar
andpara combinar ambas reglas - asignar estado del préstamo, días permitidos y observación
- Salidas: estado, días de préstamo y observación.
- Pruebas: carné vigente sin multa, carné vencido, y carné vigente con multa.
- Código:
carne_vigente = input('¿Carné vigente? (si/no): ').strip().lower()
multa_pendiente = input('¿Tiene multa pendiente? (si/no): ').strip().lower()
if carne_vigente == 'si' and multa_pendiente == 'no':
estado = 'PRESTAMO APROBADO'
dias_prestamo = 7
observacion = 'Puede retirar el libro'
else:
estado = 'PRESTAMO RECHAZADO'
dias_prestamo = 0
observacion = 'Debe regularizar carné o multa'
print('Estado:', estado)
print('Días de préstamo:', dias_prestamo)
print('Observación:', observacion)
Ejercicio 3: Valor absoluto¶
Construir un programa que lea un número entero y muestre su valor absoluto sin usar la función abs().
Resolución guiada
- Comprender: el valor absoluto representa la distancia de un número respecto de cero.
- Entradas:
numero, como entero. - Procesos:
- si el número es negativo, multiplicarlo por
-1 - si el número no es negativo, conservarlo igual
- mostrar el resultado final
- Salidas: valor absoluto del número.
- Pruebas: usa
-8,0y12. - Código:
numero = int(input('Número: '))
if numero < 0:
valor_absoluto = numero * -1
else:
valor_absoluto = numero
print('Valor absoluto:', valor_absoluto)
Ejercicio 4: Mayor de tres números¶
Construir un programa que lea tres números enteros y determine cuál es el mayor.
Resolución guiada
- Comprender: se necesita comparar tres valores y conservar el mayor encontrado.
- Entradas:
numero1,numero2ynumero3, como enteros. - Procesos:
- asumir que el primer número es el mayor inicial
- comparar el segundo número con el mayor actual
- si el segundo número es mayor, actualizar la variable
mayor - comparar el tercer número con el mayor actual
- si el tercer número es mayor, actualizar la variable
mayor
- Salidas: número mayor encontrado.
- Pruebas: usa
8, 3, 5;4, 9, 2;6, 6, 1;2, 7, 7. - Código:
numero1 = int(input('Introduce el primer número: '))
numero2 = int(input('Introduce el segundo número: '))
numero3 = int(input('Introduce el tercer número: '))
mayor = numero1
if numero2 > mayor:
mayor = numero2
if numero3 > mayor:
mayor = numero3
print('El número mayor es:', mayor)
Ejercicio 5: Duración de un juego¶
Reto tipo competencia. Un juego inicia en una hora entera y termina en otra hora entera del mismo día o del día siguiente. Construir un programa que calcule cuántas horas duró el juego.
Problema
Se leen dos enteros: inicio y fin, ambos entre 0 y 23.
Reglas
- Si la hora final es mayor que la hora inicial, el juego termina el mismo día.
- Si la hora final es menor o igual que la hora inicial, el juego termina al día siguiente.
- La duración mínima es
1hora y la duración máxima es24horas.
Entrada
- Hora de inicio.
- Hora de fin.
Salida esperada
Mostrar la duración exacta en horas.
Resolución guiada
- Comprender: el cambio de día obliga a decidir cómo calcular la diferencia.
- Entradas:
inicioyfin, como enteros. - Procesos:
- si
fin > inicio, calcularfin - inicio - en caso contrario, calcular
24 - inicio + fin - guardar la duración antes de mostrarla
- Salidas: duración del juego en horas.
- Pruebas: usa
10y12;22y2;8y8. - Código:
inicio = int(input('Hora de inicio: '))
fin = int(input('Hora de fin: '))
if fin > inicio:
duracion = fin - inicio
else:
duracion = 24 - inicio + fin
print('Duración del juego:', duracion, 'hora(s)')
Aprendizaje autónomo¶
Desarrolle el producto de la sesión resolviendo una o más de las siguientes actividades mediante un programa con decisiones claramente identificables.
1
Modifica el ejercicio de descuento para aplicar 15% cuando el monto sea mayor o igual que 200.
# Actividad 1
2 Crea un programa que indique si una persona puede donar sangre usando dos requisitos: edad mínima y peso mínimo.
# Actividad 2
3 Crea un programa que determine si una persona recibe atención preferente por edad o por condición especial.
# Actividad 3
4
Calcula el valor absoluto de una temperatura sin usar abs().
# Actividad 4
5
Encuentra el mayor de tres edades, puntajes o precios usando una variable mayor.
# Actividad 5
6 Reto tipo competencia: lee dos horas enteras y calcula la duración de una actividad que puede terminar al día siguiente.
# Actividad 6
Evaluación del producto de la sesión¶
Lista de cotejo para revisar el producto elaborado por el estudiante:
- Identifica las entradas, las condiciones del problema y la salida esperada.
- Usa decisiones simples o compuestas de manera adecuada según el problema.
- Presenta resultados claros, ordenados y correctos según lo solicitado.
- Verifica el programa con casos verdaderos, falsos y valores límite antes de entregarlo.
- Entrega la evidencia del trabajo realizado.