Entradas

Mostrando las entradas etiquetadas como bucle de manolo

Desafiando las leyes de la computación (II)

Imagen
¡Hola a todos de nuevo! Después de casi seis meses sin escribir, vuelvo al blog con una nueva meta: refutar el problema de la parada de Alan Turing . El problema de la parada enuncia, a grandes rasgos, que es imposible escribir un programa que detecte que otro se bloquearía en algún caso. Nosotros lo hemos complicado aún más: ¿Se puede hacer un programa que detecte que él mismo se ha bloqueado? ¡Y hemos encontrado la forma! La solución es muy sencilla: construimos una aplicación con dos hebras que se envían señales entre sí . Si una de ellas se bloquea, la otra se daría cuenta al enviar señales pero no recibir respuestas. Presentamos un programa que se divide en dos hebras: una de ellas dibuja figuras en memoria, y la otra representa en pantalla lo que la primera ha escrito. La hebra principal envía cada segundo una señal a la auxiliar, y ésta devuelve una respuesta. Si tarda más de medio segundo en hacerlo, la primera mostrará una alerta. En el programa encontramo...

Desafiando las leyes de la computación (I)

Imagen
¿Decíais que no? ¿Que un programa se bloquea por entrar en un bucle infinito? Bueno, hablemos de ello. Para los más profanos, un bucle es un fragmento de código que se repite , atendiendo a una condición. Mientras ésta se cumpla, el bucle sigue en funcionamiento. Claro que la limitación que impongamos es harina de otro costal. No vamos a entrar en detalles de programación. El bucle de Manolo , así bautizado esta mañana en una clase de Informática, juega con esta cláusula e introduce el concepto de falso infinito , que nos acabamos de inventar. for (i = 1; i > 0; i++) { } ¿Qué ocurre con esta sentencia? ¿Es un bucle infinito? Pues sí, pero no: es un bucle de Manolo. Lo que expresa es lo siguiente: Sea i un valor numérico que, inicialmente, vale 1 . Mientras i sea estrictamente mayor que 0 , ejecutar el código entre llaves e incrementar i en una unidad. Visto desde un punto de vista matemático, dado que los números son infinitos, el programa que impleme...