Escribir un convertidor de temperatura simple suena trivial hasta que te das cuenta de la facilidad con la que se rompe la lógica básica. Comienzas con un bucle ” while “, generas una tabla de grados Fahrenheit a Celsius y todo parece estar bien. Pero entonces necesitas un punto de datos específico, como la temperatura del cuerpo humano, y de repente tu código limpio se convierte en una pesadilla de depuración.
A continuación se ofrece una mirada real a cómo funcionan los bucles en C, por qué es importante la precisión y cómo evitar que sus programas se cuelguen para siempre.
Conceptos básicos: bucles de números enteros
Veamos la versión más simple posible. Quiere imprimir una tabla de 0 a 100 grados Fahrenheit, saltando de 10 en 10. Usas un número entero int para el contador a.
Ejecute esto y obtendrá una cuadrícula limpia:
Es funcional. Es rápido. Pero es feo. ¿Por qué? Porque la división de enteros trunca los decimales. (a - 32) * 5/9 elimina la parte fraccionaria antes de imprimir. Si necesita precisión, necesita números de punto flotante.
Precisión de coma flotante
Cambiar a “flotar” cambia las matemáticas. También necesita cambiar el especificador de formato de %d a %f. El siguiente código utiliza %6.2f, que le indica a la impresora que reserve seis espacios, manteniendo dos dígitos después del punto decimal.
Ahora la salida tiene decimales reales. Parece profesional. Pero ¿qué pasa si necesitas un valor específico que no se ajusta al patrón?
El error de la temperatura corporal
Imagine que desea insertar 98,6 °F (temperatura normal del cuerpo humano) en esa tabla. No cae en un múltiplo de 10. Entonces agrega una declaración “si”.
Funciona para 100. Pero cambie el límite del bucle a 200 y la lógica colapsará. La condición if (a > 98.6) permanece verdadera en cada iteración posterior. Imprimirás 98,6°F una y otra vez.
¿Por qué sucede esto? Porque la condición verifica si el número actual es mayor que 98,6. Una vez que “a” llegue a 100, siempre será mayor que 98,6. No estás comprobando si acabas de aprobarlo. Estás comprobando si estás más allá de ello.
La solución: estado de seguimiento
Para solucionar este problema, debe recordar el valor anterior. Introduces una segunda variable, b, inicializada a -1.
Ahora la lógica es sólida. Solo imprime la línea adicional si a está actualmente por encima de 98.6 Y b estaba anteriormente por debajo de 98



















