Funciones recurrentes: Bloodtraining Lógico
Escrito por José Cabo Explicados los lenguajes esotéricos, quizás en clave de humor o quizás algo serio. Quisiera aportar algo sobre lenguajes algo más útiles. En este caso del lenguaje C aunque posiblemente aplicable a muchos otros.
No voy a expandirme pues no pienso profundizar demasiado, pero espero que la mayoría lo conozcáis o al menos sepáis en que consiste. Tenéis más información al respecto en la Wikipedia sobre la historia de este lenguaje.

Recientemente en clase de Programación de mi Universidad nos han enseñado un método de programación que hace uso de la recurrencia y de las funciones. Es decir, nos han enseñado las llamadas funciones recurrentes. Estas funciones son aquellas que se llaman a sí mismas hasta llegar a resolver la forma más simple de un problema. Un ejemplo de código sería:
-
-
/*Factorial de un número*/
-
int func (int var) {
-
if (var==1) return 1;
-
else return func(var-1)*var;
-
}
-
Este método es fácil de entender, es más, no tiene mayor complicación que el hecho de entender la propia recurrencia. Pero me gustaría compartir con vosotros que fue gracias a este método que estoy desarrollando un programa capaz de calcular las tablas de verdad de un circuito lógico. Hablo de Bloodtraining Lógico (nombre todavía pendiente…). ¿Tablas de verdad?, ¿circuito lógico? Bueno… es la unión de varias cosas de estas.
Ahora, llegando al punto de hacer publicidad de mi programa relativamente útil y, después de que comprendáis el porqué de su comienzo…

El programa más que por su utilidad me sirvió para entender las funciones recurrentes y, además, para echar una mano a mis compañeros de clase que usan un sistema diferente a Windows (Bloodtraining también es compatible con Windows). Podéis acceder a Bloodtraining Lógico desde Codis, descargarlo y comprobar todas sus últimas features (Y decirme como solucionar los errores que encontréis que los hay):
- Actualmente soporta cualquier entrada de datos de tipo: (variable1,&,variable2) en donde variable1 es a y variable2 es b.
- Soporte de puertas: AND &; OR |; NAND /&; NOR /|
- Además, pueden negarse las salidas tanto de las variables (variables negadas) como de las salidas (puertas NAND y NOR) escribiendo el carácter / delante de la correspondiente variable o puerta. Ejemplo: (a,/&,/b) –> Es una puerta NAND de dos entradas con la variable b negada.
- Se permite la composición de circuitos. Ejemplo: ((a,&,b),/|,((/a,&,b),|,b)).
Actualmente es una rc1 pero en breve sacaré la 1.0 cuando corrija los bugs que han quedado por ahí sueltos.
Categorias: Aplicaciones, C, GNU/Linux, Multiplataforma, Software libre, Windows |
1 comentario »


