04 - Instrucciones de Control - Selección
Objetivos
Aprender a expresar decisiones en C a partir de condiciones sobre los datos.
- Comprender el papel de la selección en la resolución de problemas
- Usar operadores de comparación y operadores lógicos
- Dominar
if,if-elseyelse if - Identificar cuándo conviene usar
switch-case - Traducir decisiones desde pseudocódigo a estructuras concretas en C
Contenidos
Selección y condiciones
- Idea central: no todos los programas siguen un único camino; a veces deben decidir qué hacer según un dato
- Condición: expresión que se evalúa como verdadera o falsa
- Aplicación: clasificación, validación y respuesta a distintas situaciones
Operadores de comparación
- Igualdad y diferencia:
==,!= - Relacionales:
<,>,<=,>= - Cuidado frecuente: no confundir
=con==
Operadores lógicos
- AND:
&& - OR:
|| - NOT:
! - Uso típico: construir condiciones más completas y precisas
Estructuras if, if-else y else if
if: decisión simpleif-else: dos caminos posibleselse if: varias alternativas evaluadas en orden- Lectura correcta: seguir el flujo del programa y justificar por qué entra en cada rama
switch-case
- Cuándo conviene: cuando se compara un valor con opciones fijas
- Elementos clave:
case,break,default - Criterio: usarlo cuando mejora la claridad respecto a una cadena de
if-else
Traducción desde pseudocódigo
- Puente conceptual: pasar de “si… entonces…” a sintaxis concreta en C
Material de Clase
Presentaciones
Práctico
Ver ejercicios
Ejercicio 1
Enunciado: Escribir un programa que lea el precio de un producto y la cantidad de unidades a comprar. Si la cantidad es mayor o igual a 10, aplicar un descuento del 15% e imprimir el precio final; de lo contrario, imprimir el precio sin descuento.
Casos sugeridos: 5 unidades; 10 unidades.
Ejercicio 2
Enunciado: Escribir un programa que lea una temperatura en grados Celsius e indique el estado del agua: "solido" si es menor a 0, "liquido" si está entre 0 y 100 inclusive, o "gaseoso" si es mayor a 100.
Casos sugeridos: -5, 0, 37, 100, 120.
Ejercicio 3
Enunciado: Escribir un programa que lea un número entero del 1 al 7 e imprima el nombre del día de la semana correspondiente. Si el número está fuera de ese rango, imprimir "dia invalido". Usar switch.
Ejercicio 4
Enunciado: Escribir un programa que lea un número entero e indique si está en el rango cerrado [10, 50]. Imprimir "dentro del rango" o "fuera del rango" según corresponda.
Casos sugeridos: 9, 10, 50, 51.
Ejercicio 5
Enunciado: Escribir un programa que lea tres números enteros e imprima el mayor de los tres.
Casos sugeridos: (4, 9, 2), (7, 7, 3), (-2, -8, -1).
Ejercicio 6
Enunciado: Escribir un programa que lea los tres lados de un triángulo e indique si es equilátero, isósceles o escaleno. Asumir que siempre forman un triángulo válido.
Ejercicio 7
Enunciado: Escribir un programa que lea un número de mes (1 a 12) e imprima la estación del año correspondiente en el hemisferio sur. Usar switch con múltiples case por bloque.
Ejercicio 8
Enunciado: Escribir un programa que lea un usuario (int) y una contraseña (int). Si el usuario es 1234 y la contraseña es 5678, imprimir "Acceso permitido"; si el usuario es correcto pero la contraseña no, imprimir "Contrasena incorrecta"; en cualquier otro caso, imprimir "Usuario no encontrado".
Ejercicio 9
Enunciado: Escribir un programa que lea el color de un semáforo (1 = rojo, 2 = amarillo, 3 = verde) y si hay peatones cruzando (1 = si, 0 = no). Si el semáforo es verde y no hay peatones, imprimir "Avanzar"; si el semáforo es amarillo, imprimir "Precaucion"; en cualquier otro caso, imprimir "Detener".
Ejercicio 10
Enunciado: Escribir un programa que lea la edad de un pasajero y calcule el precio del boleto de colectivo (tarifa base: $500). Los menores de 12 años y los mayores de 64 pagan la mitad; los que tienen entre 12 y 64 años pagan la tarifa completa.
Casos sugeridos: 11, 12, 64, 65.
Ejercicio 11
Enunciado: Leer una nota entera entre 0 y 100 e imprimir:
"insuficiente"si es menor a60,"aprobado"si está entre60y79,"muy bueno"si está entre80y89,"excelente"si es90o más.
Ejercicio 12
Enunciado: Leer un año entero e indicar si es bisiesto o no usando esta regla simplificada: es bisiesto si es divisible por 4 y no lo es en caso contrario.
Ejercicio 13
Enunciado: Leer una opción entera:
1-> imprimir"Consultar saldo",2-> imprimir"Depositar",3-> imprimir"Retirar",4-> imprimir"Salir".
Si la opción no coincide con ninguna, imprimir "Opcion invalida". Usar switch.
Ejercicio 14
Enunciado: Leer dos datos:
- si el estudiante está inscripto (
1 = si,0 = no), - si trajo documento (
1 = si,0 = no).
Imprimir:
"Puede ingresar"si cumple ambas condiciones,"Falta documentacion"si está inscripto pero no trajo documento,"No habilitado"en cualquier otro caso.
Ejercicio 15: = vs ==
Enunciado: El siguiente programa tiene un error lógico en la condición.
if (edad = 18) {
printf("Tiene 18\n");
}
Tareas:
- Explicar por qué
=no sirve para comparar. - Escribir una versión corregida.
- Probar la condición con valores que entren y que no entren al caso.
Ejercicio 16: Condición mal formulada
Enunciado: Se quiere validar que un número esté entre 1 y 100.
if (numero >= 1 || numero <= 100) {
printf("Numero valido\n");
}
Tareas:
- Explicar por qué la condición acepta valores incorrectos.
- Corregir la condición.
- Probar con valores dentro y fuera del rango.
Recursos
Para Practicar
Bibliografía
- “El lenguaje de programación C” - Kernighan & Ritchie (Capítulo 3)
- “Cómo programar en C/C++” - Deitel & Deitel