06 - Bucles While y Do-While
Objetivos
Completar el bloque de iteración con estructuras cuyo corte depende de una condición evaluada durante la ejecución.
- Usar
whilepara recorridos controlados por condición - Comprender cuándo
do-whileresulta más natural quewhile - Comparar
for,whileydo-whilesegún el problema - Evitar errores comunes como condiciones mal formuladas o bucles infinitos
- Usar
breakycontinuesolo cuando clarifican el recorrido
Contenidos
Del recorrido fijo al corte por condición
- Base previa: con
forya se resolvieron recorridos con cantidad prevista - Nuevo problema: a veces la cantidad de repeticiones depende de datos obtenidos durante la ejecución
- Criterio: elegir la estructura según la forma natural de controlar el recorrido
Bucle while
- Sintaxis:
while (condicion) { ... } - Lectura correcta: la condición se evalúa antes de cada iteración
- Casos típicos: validaciones, lectura hasta valor de corte, conteos y acumulaciones condicionadas
Bucle do-while
- Sintaxis:
do { ... } while (condicion); - Diferencia clave: el cuerpo se ejecuta al menos una vez
- Casos típicos: menús y situaciones donde la primera ejecución no puede omitirse
Comparación entre bucles
for: recorrido con contador o cantidad previstawhile: repetición mientras una condición siga siendo verdaderado-while: repetición con primera ejecución obligatoria- Objetivo: justificar la elección, no memorizar variantes aisladas
Control adicional
break: corta el bucle actualcontinue: salta al siguiente ciclo- Uso responsable: solo cuando dejan más claro el caso especial
Errores frecuentes
- Bucles infinitos: la condición nunca pasa a falso
- Condición incorrecta: el recorrido termina antes o después de lo previsto
- Diagnóstico: revisar estado inicial, condición y actualización
Material de Clase
Presentaciones
Práctico
Ver ejercicios
Ejercicio 1
Enunciado: Escribir un programa que lea números enteros positivos uno por uno hasta que el usuario ingrese 0. Al terminar, imprimir cuántos números positivos se leyeron y su promedio. Si no se ingresó ningún positivo, imprimir “No se ingresaron números”.
Ejercicio 2
Enunciado: Escribir un programa que solicite al usuario ingresar un número entero entre 1 y 10.
Usar un bucle do-while para repetir la solicitud mientras el número esté fuera de ese rango. Al obtener un valor válido, imprimir “Valor aceptado: N”.
Ejercicio 3
Enunciado: Escribir un programa que lea un número entero positivo e imprima cuántos dígitos tiene.
Usar un bucle while con división entera repetida.
Ejemplo: 4537 tiene 4 dígitos.
Ejercicio 4
Enunciado: Escribir un programa que lea una base entera y un exponente entero no negativo, y calcule la potencia usando un bucle while con multiplicaciones sucesivas. Imprimir el resultado.
Ejercicio 5
Enunciado: Escribir un programa que lea dos enteros positivos N y M, e imprima todos los múltiplos de N que sean estrictamente menores que M, separados por espacios.
Ejercicio 6
Enunciado: Escribir un programa que lea un número entero positivo e imprima sus dígitos en orden inverso formando un nuevo número. Usar while con módulo y división entera.
Ejemplo: Si el usuario ingresa 1234, el programa debe imprimir 4321.
Ejercicio 7
Enunciado: Escribir un programa que lea un número secreto entero, luego pida al usuario que lo adivine usando un bucle do-while. En cada intento, indicar si el número ingresado es mayor, menor o igual al secreto. Repetir hasta que el usuario acierte, e imprimir cuántos intentos necesitó.
Ejercicio 8
Enunciado: Escribir un programa que lea números enteros uno por uno hasta que el usuario ingrese 0. Al terminar, imprimir cuántos números positivos y cuántos negativos se ingresaron.
Ejercicio 9
Enunciado: Escribir un programa que lea un entero N (mayor que 0) e imprima los primeros N términos de la serie de Fibonacci separados por espacios. La serie comienza con 0, 1, 1, 2, 3, 5, 8, …
Ejercicio 10
Enunciado: Escribir un programa con menú usando do-while que ofrezca tres opciones de conversión: (1) kilómetros a millas, (2) kilogramos a libras, (3) grados Celsius a Fahrenheit, y (4) salir. En cada iteración, leer la opción, leer el valor a convertir e imprimir el resultado. Repetir hasta que el usuario elija salir.
Recursos
Para Practicar
Bibliografía
- “El lenguaje de programación C” - Kernighan & Ritchie (Capítulo 3)
- “Cómo programar en C/C++” - Deitel & Deitel