Repetir hasta lograrlo
A veces no sabes cuántas vueltas faltan, solo cuándo parar.
1Por qué
El for sirve cuando sabes cuántas vueltas quieres: del 1 al 5, del 1 al 100. Pero muchas veces no lo sabes de antemano.
¿Cuántas veces se puede partir un número por la mitad antes de llegar a 1? Con 8 son tres veces: 8, 4, 2, 1. Con otro número serían otras. No hay un número de vueltas que escribir — solo se sabe cuándo parar.
Para eso está while: repite mientras la pregunta siga siendo que sí, y para apenas deja de serlo. La pregunta se hace antes de cada vuelta, no después.
Y aquí está la trampa clásica, la que hace que un programa se quede colgado: si dentro del ciclo nunca cambias lo que la pregunta mira, la respuesta siempre va a ser la misma y las vueltas no terminan nunca. Si eso pasa, el taller te lo va a decir en vez de quedarse pensando para siempre.
2Míralo andar
Este programa funciona. Léelo, y después ejecútalo sin cambiar nada.
#include <stdio.h>int main(void){int n = 8;int veces = 0;while (n > 1){n = n / 2;veces = veces + 1;}printf("8 se parte %d veces\n", veces);return 0;}
- línea 8
La pregunta: «¿n todavía es mayor que 1?». Se hace antes de cada vuelta. - línea 10
Aquí n se achica. Esta es la línea que hace que el ciclo termine: sin ella, n valdría siempre 8 y la pregunta nunca cambiaría de respuesta. - línea 11
Una cajita aparte que va contando las vueltas. Empieza en 0 y sube de a uno.
3Ahora tú
Este programa cuenta las vueltas pero nunca para. Escribe la línea que hace que n se achique, para que diga: 32 se parte 5 veces
#include <stdio.h>int main(void){int n = 32;int veces = 0;while (n > 1){veces = veces + 1;}printf("32 se parte %d veces\n", veces);return 0;}
↖︎ Tu línea va aquí. Tiene que cambiar n, o la pregunta de arriba nunca cambia de respuesta.
Ejecutar
Lo que dice tu programa
↖︎ Escribe tu parte y dale a Ejecutar
Qué pasó
Aquí te aviso si tu programa hace algo raro.
4Qué guarda tu programa
Lo que tu programa recuerda
↖︎ Ejecuta el programa para ver qué pasa por dentro