Clayder

Máximo común divisor y mínimo común múltiplo según Euclides

Euclides fue un matemático griego que vivió desde el año 325 hasta el 265 a.C. También es conocido como el padre de la geometría. La cuestión es que el patín este, en una de sus tantas masturbaciones cerebrales, eyaculo un método muy eficaz para calcular el máximo común divisor de 2 números; es decir, cualquiera de nosotros, mediante la forma que nos fue enseñada en el colegio, es capaz de hacer un programa para que calcule el máximo común divisor de 2 números, pero la cuestión es que, Euclides ideó un algoritmo que lo hace con menor cantidad de operaciones, ósea de menor complejidad computacional en comparación al algoritmo clásico del MCD.

El algoritmo comprende de pocas operaciones, sin embargo Euclides debe haber tenido una gran imaginación para encontrar una relación entre el MCD y la operación de modulo o resto; siendo esta ultima operación sobre la que este algoritmo basa su funcionamiento. Su implementacion en el lenguaje de programación Java es como sigue:

Seguir leyendo …

Brazo robot controlado por voz II

Anteriormente ya había posteado el video de un trabajo de un brazo robot controlado por instrucciones de voz y programadas en lenguaje ensamblador de PIC. En este oportunidad grabé otro video, pero el algoritmo esta vez esta implementado en PIC C, el cual me permite mas fácilmente trabajar con enteros de 16 bits, los cuales me ayudan a diferenciar los diferentes rangos de las instrucciones de voz.

El circuito de este proyecto consiste simplemente en 1 microcontrolador, 1 microfono, y 1 pantalla lcd de 2×16, esta ultima solo es util para el momento de entrenar la voz, ya que es ahí donde se muestra la intensidad de sonido y la longitud de cada instrucción de voz.

httpv://www.youtube.com/watch?v=0zhj25Yz99g

Si les interesa el diagrama del circuito me escriben para postearlo.

Saludos.

Feliz año 2011!!!

El año 2010 ya se esta yendo[ya se fue ¬¬] y en él han quedado grabadas todas nuestras experiencias vividas; buenas y malas, divertidas y aburridas, cosas que hicimos y que nos llenan de orgullo, cosas que hicimos y que nos arrepentimos de haber hecho, amistades que se hicieron mas fuertes, amistades que se debilitaron, amores no correspondidos, amores concretados…, en fin tantas cosas que uno ha hecho y que ha dejado de hacer en este año que ya se va, y las cuales de alguna u otra forma nos han hecho ganar experiencia y además, aprender y comprender que nuestra estancia en este mundo no es tan fácil como se piensa.

Personalmente, este no fue un buen año para mi; sin embargo, me sirvió –creo- para darme cuenta que aun tengo muchos puntos débiles que fortalecer, puntos débiles que debo erradicar de mi forma de ser, puntos débiles que, quizás, son producto de mi inmadurez y mi forma errónea de ver la vida. Y así pues como lo hacen las redes neuronales, uno debe equivocarse, pero para aprender a no cometer los mismos errores; así como el backtracking usa el segmento de pila y sus llamadas recursivas para encontrar la salida del laberinto; así como un carrito seguidor de líneas se ayuda de su CNY70 para no salirse del camino…

Para IFX, este año fue menos intenso que el anterior; es decir, ya no hubo aquellas reuniones entre Will y Clayder como las solían haber, ni las amanecidas de programación, ni las caminatas al Super Win por una cangreburguer. Por otro lado, en la parte creativa se propusieron muchas ideas, se intentaron algunas, resultaron fallidas todas; falta de organización aparentemente, y falta de interés de mi parte debido a que por épocas entro en un bucle infinito en el cual hay solo un if() que es el único que puede llevarme al break que terminará momentáneamente con el bucle, al cual luego volveré mas adelante por culpa de un goto que hasta el momento no puedo evitar.

En resumen, aunque mis metas no han cambiado, me he alejado mucho de los objetivos que van junto a ellas para lograrlas; y aunque no tengo mucha experiencia, solo me queda decirles algo, cada uno tiene su misión en este mundo, no intenten comportarse, ni traten de ser alguien que uno no es, eso solo traerá situaciones incomodas, ya que estar fuera de nuestro hábitat es muy incomodo -lo digo por experiencia propia. Si te crees que lo tuyo es salir a juerguear, bien! haz todo por ser el mas juerguero, si crees que lo tuyo es solo estudiar, también bien!, trata de sobresalir en el aspecto académico; si quieres buscar el equilibrio, pues es la mejor opción y la mas difícil –creo- solo una recomendación, siempre hay un proceso con mayor prioridad solo trata de que, en función del tiempo, el proceso con mayor prioridad sea aquel del cual sacarás mas provecho y si en serio vale la pena otórgale todo los recursos que requiera. Lo ultimo que diré no se quien lo dijo, solo lo parafrasearé:

Estudia como si fueras a vivir siempre; vive como si fueras a morir mañana.

Ya es 2 de enero del 2011, me demoré en escribir este post porque estoy de mala noche. Todos los exitos del mundo para ustedes.

Hasta otro post…

Brazo robot controlado por voz

Este es un proyecto en el que vengo trabajando hace 3 meses, más o menos. El proyecto consiste en que mediante un micrófono, el kit de brazo robótico OWI-535, responda a instrucciones pre-definidas en el programa almacenado en un microcontrolador pic.

Este proyecto tiene parte electrónica en la cual no ahondaré mucho ya que no es mi área, solo diré que toda la voz es procesada por el pic y luego la señal de activación de la orden va como entrada a un l293B, el cual permite amplificar el amperaje para hacer que se mueva el brazo robot. Para la parte del algoritmo tampoco es muy complicado, solo que estoy haciendo un informe bien preparado para que así pueda ser entendido el algoritmo.

Esta es en realidad la segunda prueba del proyecto en el cual le agregue una instrucción mas de voz “arriba” , “para” y “salúdame”. Como pueden ver, para mi algoritmo le es más difícil diferenciar el “arriba” del “para”, ya que hay una orden mas agregada al programa, la cual hace que mezcle a veces los valores de los rangos de cada orden.

Para ser implementado con los registros de propósito general de 8 bits del 16f877A, ya es suficiente con 3 instrucciones de voz. Espero actualizar el algoritmo de procesamiento de voz, pero ya implementarlo en PIC C.

PD: Ahora esta implementado en asm de pic

Merece Windows ser tan vapuleado?

Antes que todo, empezaré diciendo que este es un post de mi opinión y experiencia personal, la cual tampoco es mucha. Lo que quiero evitar –como dice Borja Perez- es que salga el típico listo sabelotodo y que salte sobre las opiniones vertidas sobre este post. No quiero que no comenten, sino dejar en claro que es una opinion personal u_U.

Veamos; desde hace algunos años que esto del software libre se esta haciendo cada vez mas famoso y cada vez mas accesible a los usuarios finales, como es el caso de la distribución de gnu/linux, Ubuntu. Esto, también esta trayendo cada vez mas gente muy radical con respecto a eso; en el sentido de que piden que se use software libre para todo; y pues aunque yo también estaba metido antes en ese grupo de apoyo incondicional al sw libre, ahora expondré, de acuerdo a mi experiencia estudiantil personal, que tenemos mucho que agradecerle al software propietario y mas específicamente al tan odiado WINDOWS.

image

Desde que era niño, mi viejo me tenia traumado con las computadoras; recuerdo que cuando tenia 7 años dormía con una música de fondo bastante particular, la cual era dada

Seguir leyendo …

La clase Robot de Java

Hace tiempo, cuando recién empezaba a programar en Java, ví el nombre de esta clase Robot. A mi me pareció un nombre bastante atractivo, por lo que decidí ver en la documentación del API de Java para saber como usarla.

Yo tenía las sospechas de que seria algo bastante dificultoso de hacer, pero no fue así; solo sabiendo lo básico de la programación orientada a objetos fue necesario para poder hacer unos ejemplos.

Esta clase nos permite manejar mediante metodos las pulsaciones del teclado y del mouse e incluso añadirles un cierto delay(retardo), por lo que se me ocurrio jugarle una broma a mis amigos.

El código lo adjunto aquí en archivo rar que contiene el fuente .java, está un poco desordenado ya que no es un trabajo o algo por estilo, sino un programa que se me ocurrio hacer en mis tiempos de ocio para probar el funcionamiento de esta clase(^^’).

El fuente es un applet, por lo que no podran ejecutarlo así como así, ya que al acceder a metodos nativos del sistema(pulsaciones de teclado), necesito primero firmarlo, lo cual si les interesa lo pueden buscar en google o simplemente me lo hacen saber para responderles.

Además les dejo la url del applet ya subido a un hosting gratuito, en donde podran ver en funcionamiento la broma, la cual no hace mas que escribir algo en el bloc de notas y luego te reinicia la pc.

http://claydergc.webs.com/applet.htm

Como decía es necesario firmar el applet, por lo que por ser una broma les aparecerá que acepten que se ejecute el applet en su browser el cual esta con un nombre que no es mio, si mal no recuerdo el nombre que le puse fue “Juan”, para que mis amigos no sepan que fui yo.

Por lo demás no se preocupen, solo es una prueba del funcionamiento de la clase java.awt.Robot, lo unico si les recomiendo que guarden todo lo que esten haciendo porq les reiniará la pc; en todo caso eso pueden verlo en el codigo que adjunté si es que no deseean ejecutar el applet.

http://seccperu.org/files/PruebaRobot.rar

Bueno, espero les haya servido de algo este post.

Saludos.

Uso de la Notación Postfija en la diagonalización de matrices [ I ]

La notación postfija o notación polaca inversa (eso sonó a pose del kamasutra), es un método algebraico alternativo de introducción de datos. Su nombre viene por analogía con la relacionada notación polaca, una notación de prefijo introducida en 1920 por el matemático polaco Jan Lukasiewicz, en donde cada operador está antes de sus operandos [Wikipedia].

Nosotros normalmente escribimos en la forma infija, es decir:

OPERANDO1 OPERADOR OPERANDO2

5                    +                2

La forma postfija consiste en poner el operador al final, lo que seria equivalente a:

OPERANDO1 OPERANDO2 OPERADOR

5                   2                 +

La notación postfija también puede ser representada en el recorrido en post-orden de un árbol binario que contenga de forma ordenada la expresión algebraica que estamos representando, es decir, si recorremos de la forma IZQUIERDA – DERECHA – RAIZ.

image

Seguir leyendo …

Communications of the ACM de marzo y abril

Para todos los entendidos en computación creo que es harto conocido la ACM, ya que esta asociación controla prácticamente todo lo que con computación tiene que ver. Bueno, la acm saca mensualmente varios revistas como por ejemplo el CROSSROADS o el COMMUNICATIONS of  the ACM.

En esta oportunidad solo quiero compartir la segunda revista en versión digital, de los meses de marzo y abril. Entre los artículos de la revista de marzo personalmente me gusto el articulo de “The Google File System” y de la revista de abril recomiendo el articulo de “Data-Structure Canon”.

Sin nada mas que decir pondré a continuación el link para que puedan bajarse las revistas en versión pdf.

Communications Marzo 2010

Communications Abril 2010

My academic performance

Yo no soy una persona muy estudiosa, ni tampoco soy muy inteligente; las cosas que hecho las he conseguido sacándome la mugre en lo que hacia, pero eso si, soy una persona completamente obsesiva, tanto es asi que si se mete en la cabeza hacer un robot que pueda pensar por si solo, no pararía hasta lograrlo, quizás este exagerando un poco pero es que las únicas veces que he sacado buenas notas en la universidad fueron cuando en realidad quise sacar buenas notas, las demás veces, pues simplemente soy un dejado, ya que si tengo –por ejemplo- tarea de matemáticas y se me antojo programar, pues simplemente programo y dejo la tarea para después.

image

Mi comportamiento obsesivo, a veces, como que no ayuda mucho, ya que mi otra obsesión es el ejercicio y mas específicamente las maquinas de gimnasio. Esto ultimo merma algunas veces mi rendimiento académico, y en especial en las noches que necesito energías extras para seguir estudiando. Generalmente en esas noches lo único que hago es dar una repasada rápida e irme a dormir, ya que mi cuerpo no da mas.

Otro factor que modifica mi normal desempeño académico es mi obsesión con las chicas y que parafraseando a mi primo se resumen en: “estas mas salado que calzoncillo de pescador”, lo cual estoy empezando a creer. Y es que me da tanta cólera fracasar cada que intento algo con alguna chica, que mis ganas de programar simplemente se van al carajo y pues solo salgo a caminar por ahí con Rex (mi perro), y ni que decir de las ganas de estudiar.

En resumen, soy una persona muy obsesiva, lo cual a veces juega a favor y/o en contra de mi rendimiento académico. Esto a veces llega a hacerme creer que soy la persona mas inteligente del mundo, o hasta llega a hacerme creer que soy la persona mas estúpida del mundo y con menos neuronas que otras. Parecerían estupideces, no?, pero para mi, mi comportamiento es un arma de doble filo.

Noches de programación…

La programación ha estado en mi vida desde que tengo 12 años. En esos tiempos recuerdo que programaba por placer, incluso no entendía mucho lo que hacía, pero no se como me ponía a modificar partes de programas pequeños ya hechos para acomodarlos a mi gusto.

frustration[1]Hoy en día, programar sigue siendo mi pasión, pero a diferencia de mi primera etapa como programador, se sumaron algoritmos mas complejos que programar, y los cuales debía terminar en poco tiempo. Presión!, es la palabra que odio, y que en estas dos ultimas semanas estuvieron en mi vocabulario diario. Generalmente cuando estoy presionado, me bloqueo completamente y creo que hasta me es difícil programar una suma de dos números; lo contrario sucede cuando programo por placer, ya que puedo apuntar, en un pequeño cuaderno que tengo, los errores que tengo para corregirlos mas adelante.

Finalmente, creo que debo aprender a lidiar con ello, ya que mi entorno estudiantil esta conformado por gente muy académica y competitiva, los cuales al mismo tiempo me incentivan a superarme mas, ya que cada vez que creo que he tocado techo con algún proyecto, las ganas de superarse de ellos mismos, me hacen ver que aun me falta mucho por aprender, muchos libros mas que leer, y –claro- muchas otras trasnochadas que pasar; y con respecto a la presión pues creo que hoobastank tiene la respuesta en una parte de la canción de The Reason: “It’s something I must live with everyday”