3/4/11

[Teach me!] Trucar un dado... virtual

Alguien me dijo una vez que quería aprender a programar. Bueno, realmente alguien no, bastantes alguien. Está bien. He pensado en algo.

Veréis, yo mejor que nadie puedo comprender a aquellos que sienten curiosidad y muchísimas ganas de iniciarse en el noble arte de la programación. Eso de toquetear el ordenador y ver cómo, de repente, puedes pasar de interactuar con cosas que otros han pensado a diseñarlas tú mismo y crear hasta los más descabellados productos de tu imaginación... lo que se siente no tiene precio, pero bueno, sois libres de quedaros con un excitante "¡qué guay!" también. A raíz de esto último, me veo en la obligación de comentaros que comprendo y, por supuesto, respeto que vuestro interés tenga límites. Después de todo, puede que juguetear con la programación os guste pero que entre vuestros planes no entre, ni remotamente, eso de que unos cochinos bits os vayan a dar de comer. Me hago cargo, my dears. Por ello, lo que os voy a contar no va a ser, ni mucho menos, lo que me cuentan a mí en clase. Voy a sacar mi tamiz mágico y os voy a servir los conocimientos que, pienso, son más interesantes.

Pero bueno, dejémonos de zarandajas y vayamos directos al grano. Para escribir en lenguaje Java, vamos a necesitar un programa llamado Eclipse que podéis bajar aquí (haciendo click en cualquiera de los enlaces, como por ejemplo el de Spain RedIRIS). Cuando os lo descarguéis (pesa 171MB, lo que un capítulo de anime aprox.) no hace falta que instaléis nada para poder usarlo. Simplemente, dado que os bajáis un archivo comprimido, habrá que descomprimirlo y buscar, dentro de la carpeta que se creará, el icono que inicia eclipse (una bolita redonda, morada y con tres rayitas blancas en el centro. Tenéis la chuleta en la imagen).


Bien, lo que viene a continuación lo relataré despacio:
Eclipse es un programa que nos permite escribir código y reproducirlo para ver qué ocurre. Sin embargo, para poder trabajar (antes de iniciarse nada) os va a pedir que seleccionéis un Workspace. ¿Que qué es un workspace? Fácil: tal como su nombre indica es un espacio de trabajo, un lugar en el que le pedís que os guarde todo lo que vais a ir haciendo. Crear un workspace es tan fácil como crear una nueva carpeta (donde queráis) y designarla con el nombre "Workspace Dado" o "Workspace Mastermind" o cualquier otro que describa brevemente de qué va a ir lo vayáis a crear. Después sólo tenéis que indicarle a Eclipse que queréis que ése sea el Workspace (Tenéis la chuleta en la imagen).

Para esta primera toma de contacto con Eclipse os he preparado yo misma el Workspace, con un código muy suculento que os enseñará a... trucar un dado. ¿Os gustan las trampas, queréis ganar una apuesta sin esfuerzo o, simplemente, gastarle una inocente broma a alguien? Bueno, pues con esto podréis, mis queridos y queridas pequeñuelas. Dado que el código que está escrito es bastante complejo para alguien que está empezando de cero, no os voy a hacer una gran descripción de las instrucciones que he escrito (me lo reservo para más adelante, cuando seáis unos pequeños expertos), pero sí que os voy a contar qué tenéis que tocar para que funcione y seáis capacez de trucar el dado. Podéis bajarlo de aquí (obtendréis una carpeta llamada Workspace Dado al descomprimir).

Una vez hayáis bajado el Workspace y le hayáis dicho a Eclipse que ahí es donde tiene que trabajar, el programa se iniciará y os encontraréis con algo como esto:



A la izquierda se encuentra el Package Explorer, que nos sirve para navegar por entre las cosas que tenemos creadas. De hecho, si le dais a la flechita que hay en "Dado" os enseñará un nuevo icono llamado "src" y éste os mostrará "implementacionDado" y, finalmente, éste os mostrará "Dado.java". Esto último se llama Clase. Las Clases en Java son, para que nos entendamos, algo así como moldes. En esta ocasión, yo he creado una clase, un molde, para un dado.
En el centro se encuentra el editor de código y, como podréis ver, tiene cosas escritas. Son las instrucciones para que funcione el programa. Podéis leerlas si gustáis, puesto que están comentadas. Todo aquello que empiece con una doble barra "//blablabla" se escribe en verde y significa que es un comentario. Lo mismo para las cosas que empiezan con "/**blablabla... */" y están resaltadas en azul. Los comentarios se refieren a la línea o líneas que van inmediatamente después y traducen a los humanos lo que éstas mandan que se haga.
Arriba del todo se encuentran dos barras: la de herramientas y bajo ella una barra que contiene una serie de iconos. De momento el único que utilizaremos será el que parece un play, esto es, el icono del círculo verde con un triángulo en su interior. Servirá para que el código se ejecute.
Por último, abajo del todo, justo donde acaba el editor central, se encuentra la consola. La consola es la ventanita que nos mostrará lo que ocurre cuando ejecuta el código. Si está bien implementado, mostrará lo que le hemos pedido. Si no... bueno, sino pasaría otra cosa, pero el código funciona, así que ya comentaremos otro día que sucedería.


Bien, y ahora os voy a enseñar cómo hacer que funcione este cacharro. Veréis, lo único que tenéis que hacerle es darle al botoncito de play y contestar a dos preguntitas. Para contestar a las preguntas tenéis que pinchar en la consola y escribir. Lo que el programa necesita que le suministréis son números (números así: 3, NO así: tres). La primera pregunta os requerirá el número de caras que tiene que tener vuestro dado. La segunda se refiere al número de dados que queréis tirar. Por ejemplo, en la oca, (si mal no recuerdo) creo que se tiran dos dados. Aquí teneís un ejemplo visual de lo que habría salido si yo hubiese tirado un dado de diez caras siete veces:



Y ahora... vamos a trucarlo :D

Sin embargo, my dears, os advierto de que tenéis que ser coherentes. Si queréis trucar un dado, tenéis que tener en cuenta de cuántas caras va a ser y cuál es el resultado que queréis que salga. Si lo que buscáis es, ajem, putear a alguien... pues, obviamente, querréis que siempre le salga el número más bajo. Y el número más bajo de un dado es el 1, no el cero, que os conozco. Si lo que queréis es favoreceros con una tirada perfecta, pues lo mismo pero al revés. El máximo número que podrá salir será el máximo de caras que tenga. Pero bueno, que me estoy enrrollando, ¿qué tenéis que tocar? ÚNICAMENTE ESTO, LO QUE OS HE PUESTO AQUÍ EN ROJO:

private static int generaNumeroAleatorio(int unNumero ) {
/*Generamos un número aleatorio cuyo máximo valor se corresponda con el parámetro recibido y le pedimos que se quede sólo con la parte entera.*/
       double f=Math.random()*(unNumero+1);
        int a=(int)f;
        //Evaluamos si el número generado es cero. De ser así lo cambia.
        while(a==0){
            f=Math.random()*(unNumero+1);
            a=(int)f;
        }
        return a;
    }



Bien, lo que está en rojo es una condición a evaluar. Ahora mismo significa que, cuando el programa genere un número aleatorio y éste resulte ser un cero, que lo descarte y saque otro número aleatorio (los dados no tienen cero). Pero podéis decirle que, mientras que el número que se haya generado no sea el que vosotros queréis, vuelva a generar otro número. ¿Cómo se escribe esto en Java? Así:

a!=6 Esto significa que mientras el número que se saque sea diferente de seis, vuelva a generar otro número.
a!=10 Esto significa lo mismo pero poniéndole en vez de un seis un diez.
a!=1 Y, esto último, exactamente lo mismo pero con un uno.

Es decir, que tenéis que poner a!= seguido del número que queráis sacar. ¿Fácil, verdad? Por cierto, por si no encontráis dónde está situada esa parte del código, os diré que está en la línea 42, más o menos en la mitad.

Bueno y para terminar, comentaros que hay infinidad de maneras de trucar un dado. Nosotros lo hemos hecho para que nos salga un sólo número todo el rato... pero claro, si tirasemos muchos dados sería fácil que nos descubrieran, ¿no? Por ello también podemos pedirle al programa que descarte siempre los unos, o que sólo saque los números de un determinado intervalo, o etc, etc... todo lo que esas retorcidas cabecitas vuestras puedan pensar. Y eso es todo, ahora os toca a vosotros. ¡Manipulad el dado y sentíos los dueños del universo!

30/3/11

¡No sé por qué lo he pensado siquiera!

 
No sé por qué, pero ea, ya está bien de tanta memez. Este mismo fin de semana me calzo los patines y me voy a patinar tan ricamente. Si no hay nadie en este ancho, largo y vasto mundo que quiera hacerlo conmigo... qué demonios, ¿y a mí qué me importa?
La gente vive obsesionada con la soledad, con el "morirás solo y rodeado de gatos" (frase a la que nunca le vi sentido, ¿qué habrán hecho los gatos? Si son adorables... No, no es una pregunta. Vamos, repítelo. Repítelo. Eso es, así me gusta), y, aunque me joda una y mil veces tener que admitirlo, creo que últimamente he estado experimentando esa estúpida forma de pensar. ¡Argh! Disculpadme, voy a empezar a vomitar sapos y culebras. En tres, dos...

Me di cuenta este mismo lunes. Patricia, mi genial compañera de proyectos, y yo estábamos en Programación Orientada a Objetos, haciendo bailar a las excepciones a través de balazos de teclado, cuando, de repente, nuestro maravilloso profesor se molestó en cruzar la enorme clase alicatada hasta el techo de ordenadores para ir a nuestro sitio. Me temblaron hasta las gafas (que, en ese momento, llevaba por hacer el chorra) y me apresuré a hostigar a mi compañera a cerrar tuenti y demás páginas no recomendables en horario lectivo justo antes de ser consciente de que era yo misma quien empuñaba el ratón. Dicho y hecho, el profe se acercó, echó una ojeada por detrás mientras a nuestras espaldas les castañeteaban los dientes y, acto seguido, nos llamó la atención. Pero lo que aquel hombre quería hacer era felicitarnos. Un diez en la primera práctica, aquella en la que teníamos que modelar una universidad. Un proyecto fantástico, le había encantado.

Naturalmente, ya sabíamos que teníamos un diez porque habían colgado las notas hacía días, pero oírlo de su boca fue algo más que reconfortante. Fue tan agradable. Lo fue tanto que se convirtió en demasiado. Me di cuenta, caprichosas sinapsis neuronales, justo en ese instante de hasta qué punto había dejado que esa forma de pensar se hiciese un hueco en mi mente. No sé por qué, o quizá sí y no os lo vaya a decir, pero... it's over, baby. Aquí no te quiero.

Y, para celebrarlo, me voy yo sola. Y a patinar.

20/3/11

I never meant to break


Actually, I do mean exactly that. You know, about the break thing. So tired. And I do hate waiting. Besides, waiting the fuck for...?

Just watch my wildest dreams come true, not one of them involving you!
Not one of them.

26/2/11

Momento vacuo


Una de las mejores sensaciones que conozco es la de aprender el significado de una nueva palabra y que éste me impacte. Puede ser algo totalmente mundano, una palabra muy corta, una nueva forma de referirme al mismo concepto de siempre... no importa, cuando ocurre ya es demasiado tarde, la tengo presente durante todo el tiempo que la mecha de la atracción permanezca prendida. Después... bueno, después será otro de los registros que guardo, con algo más de historia que la mayoría de los que aprendí allá por el siglo pasado, cuando daba mis primeros pasos por esta vida y mis padres me enseñaban a hablar.
Sin embargo, poco tiene que ver esto con lo que quería hablar hoy. El hecho de distinguir el modo en que me relaciono con mi lengua materna me ha arrancado una sonrisa un tanto sardónica, ahora entenderéis por qué.

Sé que, alguna que otra vez, habré dado a entender que no soy una persona religiosa. Quizá incluso lo hayáis deducido por la manera en la que me expreso, las cosas que comento, las que me reservo o las que no comparto. Bueno, el caso es que es cierto, no soy una persona religiosa. No pertenezco a ninguna casa celestial, mi entendimiento no concibe la existencia de un ente más poderoso que el ser humano, no se me ha inculcado ninguna fe al ser pequeña y me desconcierta sobremanera escuchar, desde mi perspectiva, los conceptos religiosos (hasta los más simples y básicos, no os creais). Si alguien ha empezado a sudar frío ante el pensamiento de que me haya convertido a alguna secta o a alguna de las religiones fuertes de hoy en día, que no cunda el pánico porque no es eso (¡Nacho es quien ocupa ese lugar desde hace mucho!)

Creo que hoy ha sido el primer día en que de verdad me he dado cuenta de lo que es vivir sin creer en nada. Sin tener una fe ciega en absolutamente nada de lo que te rodea, de lo que es carecer de una relación indestructible y poderosa como esa. Hace mucho que pienso que uno ha de valerse por sí mismo, que ha de cuidar las cosas que hace para que salgan tal como ha previsto, que no sirve culpar a los demás porque ellos tenían que encargarse de hacer tal o cual cosa en el proceso. Al fin y al cabo, si no te esfuerzas de verdad, si no das todo lo que tienes y plantas sobre la mesa todo lo que sabes para conseguir tu objetivo, ¿en qué extraña y retorcida idea te basas para confiar o suponer que otro lo hará y además por ti? Hace mucho tiempo que pienso así, pero lo que intento explicar es diferente.

Tener ideas propias y llevarlas, sino todas las veces la gran mayoría, a la práctica, vivir la vida de una forma despreocupada y desconectada de las creencias de nuestro tiempo, fluyendo a contracorriente sin miedo a la represión, tortura física o muerte... sí, está bien. Elegir está muy bien. Hasta ahora no le había dado demasiada importancia a no creer en nada ni en nadie. ¿Qué necesidad tenía de una cadena semejante? Confío en mí, sé que yo siempre estaré presente en el momento en que necesite que me salven. También confío en las personas, y quiero a mis amigos, parejas o personas que no he visto jamás pero con las que me relaciono en mi elemento. Soy un ser humano entrañable, ¿a que sí? Pero hoy me he dado cuenta de que...

Hoy me he dado cuenta de que no tengo ninguna cuerda. No poseo ningún anclaje que tenga la infinita fuerza y resistencia que un ser humano es capaz de desarrollar cuando entrega su fe. Su creencia no racional, sus sentimientos puros, sus instintos, su ESPERANZA. No hay ningún colchón sobre el que dejarme caer cuando me sienta desfallecer. No hay trago de agua viva y refrescante al cruzar las arenas del desierto en un viaje sin pausas. No tengo ningún objeto, ninguna invención, ninguna historia, ninguna nada que me relacione con esa parte de mi humanidad. ¿Comprendéis lo que quiero decir? ¿Comprendéis lo desgarrador que es este pensamiento?

La certeza del vacío que hay en esa parte de tu vida. Momento de vacuidad.

21/2/11

Overflow



¿Y qué hacer cuando no sabes de qué color tendrá el pelo? Cuando desconoces si será rojo como una bocanada de fuego, rubio como una cortina de luz, negro como los días cerrados del invierno o marrón como la corteza nudosa de los árboles. ¿Qué hacer cuando no sabes que aspecto presentará su tez? Si ésta será palida, si sus mejillas estarán siempre coloreadas o no, si nació tiznado del color del chocolate. ¿Y sus facciones? ¿Y su mirada? ¿Cómo saber si su rostro lo compondran formas suaves, redondeadas, angulosas, afiladas..? ¿Y qué hacer con sus ojos si reflejan ecualipto, menta, agua de mar o una sombra de pedernal grisáceo? ¿Cómo intuir una espalda ancha, unos hombros recios, unos brazos delicadamente sombreados por músculos que comienzan a despertar? ¿Cómo buscar entre los pliegues de su ropa el color, la textura, el corte, la caída? ¿Dónde encontrar las sutilezas de cada gesto, de cada palabra, de cada parpadeo, de cada movimiento...?

Las únicas pistas son pequeñas migajas de información que parecen haberse desprendido por cuestión de puro azar de la gran barra de pan a la que pertenecen.

Imaginación, maldita seas.

11/2/11

Break! Altera el flujo de control del programa


¡BRR! ¡Me queman los dedos!

Estoy harta de números, gráficas, comandos, instrucciones, de tener que dimensionar variables, reservar bits, convertir de un sistema de representación a otro, medir la eficiencia de los algoritmos, representar vectores, rectas, planos, hiperplanos y ver cómo demonios se relacionan entre ellos (buenos días señor vector, buenos días señora recta, ¿son ustedes paralelos, perpendiculares... MARIDO Y MUJER?), rellenar el log de PISWI con estimaciones en el tiempo, construir clases y relaciones entre ellas en forma de diagramas, leer y leer y leer más malditas fórmulas, números, y tan excesivamente pocas palabras.
No me malinterpreteis, todo esto es mi gran pasión, pero es que ahora mismo necesito palabras, necesito dar rienda suelta a la imaginación de una forma que, con mi nivel de conocimientos actuales sobre informática, todavía no puedo por medio de fórmulas matemáticas (que podré, está claro, pero todavía me queda).

Programar es una labor preciosa, me robó el corazón sin remedio la primera vez que probé su sabor, pero ahora mismo no tengo ningún gran proyecto en el que trabajar. Acabamos de empezar el cuatrimestre y todavía estamos probando nuestra destreza con pequeñas prácticas que no implican excesivo esfuerzo, así que debo ahogar mis necesidades creativas leyendo. Estoy tan enganchadísima a la saga de Los hijos de la tierra que no me extrañaría que de un momento a otro me brotasen llamas en los dedos... ¡Por el amor de Nacho, necesito escribir!

Y ya tengo personaje. Ha sido un parto largo, ha llevado su tiempo, pero lo tengo perfectamente claro en mi cabeza. Sólo necesito una ficha... y mucho espacio en blanco.