viernes, 30 de julio de 2010

Juego de Damas en Prolog


Para días de junio, unos amigos de la UPN me mandaron a hacer un proyecto de su curso Lenguajes de programación...
Fue así como asumí el reto de realizar un proyecto de curso en 2 días.
El proyecto consistía en realizar un juego de Damas en prolog, particularmente swi-prolog.

Así que, sin más preludios, voy directo al grano:
Y como el post va a ser realmente extenso, voy a dedicarle varias entradas

Tuve que clasificar los predicados según su tarea... y así reduje a 4 clases:

1. Hechos:
  • fichaEsImg(numeroEnMatriz, idImagenEnMemoria).
2. Operaciones de Listas y Matrices:
  • extraerElementoLista(Lista, Posicion, Elemento).
  • extraerElementoMatriz(Lista, CoordX, CoordY, Elemento).
  • mostrarLista(Lista).
  • mostrarMatriz(Matriz).
  • cambiarElementoLista(Lista, Posicion, Elemento, NuevaLista).
  • cambiarElementoMatriz(Matriz, CoordX, CoordY, Elemento, NuevaMatriz).
  • esPar(Ficha).

martes, 11 de agosto de 2009

Los 10 mandamientos para crear buen código


Una cadena de enlaces... encontré éste link desde la página de Angel "Java" López; quien a su vez referencia la página donde encontró el original: making good software.

El artículo, la traducción, me parecen tan buenos, y los comentarios agregados tan puntuales y prácticos, que cometeré el pecado de copiarlo textualmente:

Los 10 mandamientos para crear buen código
(10 commandments for creating good code)

1. DRY - Don't repeat yourself – No se repita
DRY es usualmente el principio más fácil de entender, pero el más difícil de aplicar. Significa que cuando encontramos código similar en uno o más lugares, deberíamos abstraerlos en un nuevo método y cambiar los anteriores fragmentos de código para que llamen al nuevo método con los parámetros apropiados.
DRY es posiblemente el principio de codificación más universal, yo nunca he encontrado un desarrollador que argumentara que repetir código es bueno, pero, he encontrado desarrolladores que olvidan este principio cuando codifican pruebas unitarias, como ejemplo: imaginen que han cambiando la interface de una clase que tiene montones de pruebas unitarias, si no han usando DRY, tendrán que cambiar a mano las llamadas a esa interface para cada caso de prueba.


"Pienso que podemos repetirnos, siempre y cuando tengamos planeado el refactoreo del código. Si siguen Test-Driven Development, no hay que hacer hincapié en este principio siempre, sino tenerlo presente en la etapa de refactoreo. A veces, no tenemos claro cuál es la implementación que necesitamos abstraer, hasta que tengamos varios casos resueltos."

miércoles, 28 de enero de 2009

El primer Bug informático


Un clásico en la historia de la computación:

"First actual case of bug being found"

La palabra "bug" se usa para denominar a los errores en los programas, y que dicho término se debía a que, alguna vez, se encontró una polilla en el interior de una computadora, lo cual provocó un error en el funcionamiento de la misma.

La fotografía es de esta polilla, sobre las notas del ingeniero que la descubrió.

sábado, 27 de diciembre de 2008

Abrir carpetas en una sola ventana


Por eliminar un virus, jugar con el regedit, y jugar con:
Herramientas → Opciones de Carpeta → Tipos de Archivos ;
Fregué el modo de abrir carpetas en Windows; a pesar de tener la configuración correcta: "Abrir las carpetas en la misma ventana" en "Examinar carpetas";
Igual, cada vez que abría una carpeta contenida en otra, las habría en distintas ventanas, y se me acumulaban ventanas abiertas innecesarias. (Ver imagen)

Configuración normal:


Entonces, en vista de que de la forma anterior no me funcionaba, recurrí a hacer los siguientes pasos para solucionarlo:

1. Abrir el editor de registros (regedit.exe)

* Se puede acceder desde: Inicio→Ejecutar... ; y escribiendo "regedit"

2. Al acceder al registro, expandir las carpetas así:
HKEY_CLASSES_ROOT → Directory → shell


3. En el bloque derecho, dale doble clic al elemento "(Predeterminado)", y escribe el valor "none" (sin comillas).
Quedando como en la 3º imagen.

voilà.

fuente: noticias3d.

domingo, 21 de diciembre de 2008

Validación de Windows (Windows Genuine Advantage)


De la noche a la mañana me apareció el mensaje:


Podría ser víctima de una falsificación de software.
Esta copia de Windows no ha superado el proceso de validación de Windows original.

Un mensaje de WGA (Windows Genuine Advantage) el cual -valga la redundancia- verifica que la versión del windows que utilizas, sea original.

Y ese mensaje me sorprendió muchísimo, pues yo pagué $2 por el CD que me vendieron de windows XP (nótese el sarcasmo :)

En fin, la solución no fue tan difícil de hallar (felizmente)

Primero, es necesario descargar éste archivo:

jueves, 4 de diciembre de 2008

Algoritmo de Booth en Java


El algoritmo de Booth, es un método para multiplicar en binario.

Este algoritmo es enseñado en cursos como "Introducción a la Arquitectura de computadores" o "Arquitectura y Organización de computadores".

Para entenderlo (en mis épocas no me lo enseñaron... si es que existía) acudí a google, que me dirigió a emezeta, donde lo programé mientras recién lo aprendía.

Para la implementación, creé 3 clases:
  1. OperacionesBinarias
  2. AlgoritmoBooth
  3. IU_Principal