Construcción de acordes – 23: menor séptima, novena y oncena

Objetivo: extender el acorde menor hasta la oncena y presentar su fórmula.

En las dos últimas entregas de la serie extendimos el acorde mayor hasta la oncena, tanto en sus sabores 11 (disonante, por su cercanía sonora a la tercera) y #11 (más abierto y común en un acorde mayor). Ha llegado el turno de que tratemos la misma extensión sobre un acorde menor.

Si extendemos el acorde menor séptima con novena superponiendo la siguiente tercera, obtenemos nuestro artefacto de hoy:

m7(9)(11): 1 – b3 – 5 – b7 – 9 – 11

La 11 (que equivale a una cuarta, en su reducción a la primera octava) no entra en conflicto con la tercera esta vez, ya que se trata de un acorde menor(b3).

Calculemos, por ejemplo, la composición de Cm7(9)(11) y Am7(9)(11).

Como siempre, partiremos de las respectivas escalas mayores, pues la fórmula está referenciada en relación a estas:

Do mayor: C – D – E – F – G – A – B – C – D – E – F (extendiendo hasta la 11)

La mayor: A – B – C# – D – E – F# – G# – A – B – C# – D

Tomamos, uno a uno, los grados indicados en la fórmula, prestando atención en bajar un semitono los grados tercero y séptimo (b3 y b7):

Cm7(9)(11): C – Eb – G – Bb – D – F

Am7(9)(11): A – C – E – G – B – D

Naturalmente, la realización práctica de estos acordes supone con frecuencia prescindir de algunas notas, particularmente si se es guitarrista. La primera en caer suele ser la quinta, que poco aporta a la cualidad del acorde. La tercera es sagrada, pues identifica el sexo del acorde; la séptima la dejamos (ya sabes que los acordes que tengan una novena sin séptima se denominan add9, de novena añadida). Así que la novena (en general, las extensiones comprendidas entre la séptima y la máxima) tiene todas las papeletas de ser la siguiente. Y, por supuesto, la fundamental, sobre todo si ya está siendo facilitada por un bajista.

En la guitarra, la siguiente voz del acorde me resulta conmovedora:

Am11: 5 – x – 5 – 5 – 3 – x (los números indican el traste)

Es decir, la disposición:

1 – x – b7 – b3 – 11 – x

en la que hemos sacrificado la quinta y la novena.

Es un acorde móvil que, por supuesto, puedes trasladar a cualquier tonalidad sin más que localizar la fundamental en la sexta cuerda, construyendo la misma forma a partir de allí. Hablaremos con más detalle de este tipo de asuntos en la sección práctica aplicada a la guitarra.

Javier Montero Gabarró


Construcción de acordes – 23: menor séptima, novena y oncena


El texto de este artículo se encuentra sometido a una licencia Creative Commons del tipo CC-BY-NC-ND (reconocimiento, no comercial, sin obra derivada, 3.0 unported)


El Club del Autodidacta


Tabla de referencia de construcción de acordes.


Índice de todos los artículos de armonía.

LaTeX: Sumatorio y Productorio

Objetivo: aprender a generar los símbolos Sumatorio y Productorio con sus respectivos límites superior e inferior.

No hay símbología que se le resista a \LaTeX. Esta afirmación, que alguien podría discutir como tal vez algo exagerada, es absolutamente rotunda en el ámbito matemático, razón primigenia de la existencia de este sistema de preparación documental.

Escribir el símbolo de sumatorio es sumamente sencillo con el comando \sum

\[
\sum
\]

sumatorio-1

Para decorarlo con sus correspondientes límites superior e inferior recurrimos a la notación de subíndice y superíndice, de común aplicación en el modo matemático de \LaTeX, del mismo modo que hicimos cuando tratamos la integral definida.

Así pues, introducimos el límite inferior, como si de un subíndice se tratara, empleando el símbolo de subrayado (guión bajo, _). Para indicar el límite superior utilizamos la caperuza (el caret, ^).

\[
\sum_{i=1}^{3}x_{i}=x_{1}+x_{2}+x_{3} 
\]

sumatorio-2

Todo lo explicado para el sumatorio es igualmente aplicable al productorio, que obtenemos a través del comando \prod

\[
\prod_{i=1}^{3}x_{i}=x_{1}\cdot x_{2}\cdot x_{3} 
\]

sumatorio-3

Típicamente utilizarás como límite superior infinito. Lo obtienes simplemente con el comando \infty, que ya presentamos al tratar el límite de funciones y sucesiones.

\[
\sum_{i=0}^{\infty}x^{i}=1+x+x^{2}+x^{3}+\ldots = 
\frac{1}{1-x}\qquad \left( \left| x \right| <1 \right)
\]

sumatorio-4

Por lo general, los subíndices y superíndices se tragan lo que les eches, sin importarles si lo que escribes tiene el mínimo sentido matemático:

\[
\sum_{i=1}^{\skull}x_{i}=x_{1}+ x_{2}+\ldots + x_{\skull} 
\]

sumatorio-5

conocida como Ley Carpe diem de Pradery.

Esta graciosa calavera la hemos representado con el comando \skull, disponible en el paquete del mismo nombre.

Javier Montero Gabarró


http://elclubdelautodidacta.es/wp/2013/03/latex-sumatorio-y-productorio/


El texto de este artículo se encuentra sometido a una licencia Creative Commons del tipo CC-BY-NC-ND (reconocimiento, no comercial, sin obra derivada, 3.0 unported)


El Club del Autodidacta


Índice completo de artículos relacionados con \LaTeX.

Trigonometría en Python

Objetivo: presentar las funciones trigonométricas disponibles en el módulo math de Python.

La mejor manera de acercarse e ir conociendo la inmensa biblioteca estándar de Python es dividiéndola en pequeños bloques temáticos. En el artículo de hoy nos ocuparemos de un subconjunto muy específico: las funciones trigonométricas.

La primera aproximación a las matemáticas en Python es a través del módulo math, incluido directamente en la propia distribución. Más adelante hablaremos de extensiones de terceros como NumPy o SciPy que harán la delicia de matemáticos, físicos e ingenieros. No en vano, Python es cada vez más utilizado por la comunidad científica, que encuentra unidas toda la potencia del lenguaje junto a funcionalidad y herramientas que tradicionalmente sólo han estado disponibles adquiriendo costosos programas como Mathematica o Matlab.

Para disfrutar de todo lo que math nos ofrece debemos importarlo:

>>> import math

En el próximo artículo veremos otros estilos de importación, cada uno con sus ventajas e inconvenientes. Pero con esa simple instrucción tienes acceso ya a todo el espacio de nombres del módulo math, repleto de decenas de funciones entre las que se encuentran las que hoy trataremos.

Básicamente, necesitaremos poder calcular el seno, coseno y la tangente de un ángulo, así como sus funciones inversas (dada alguna de estas magnitudes, conocer a qué angulo se corresponden). Además, nos gustaría poder trabajar tanto en radianes como en grados, de modo que nos sería útil también poder disponer de las funciones de conversión adecuadas.

El seno, coseno y tangente de un ángulo los obtenemos con las funciones sin(), cos() y tan(), respectivamente:

>>> sin(0)
0.0
>>> cos(0)
1.0

Debes tener en cuenta que estas funciones esperan que el argumento se facilite en radianes, y no en grados. A tal efecto, te gustará saber que dispones de la siguiente constante:

>>> math.pi
3.141592653589793

de modo que podemos usar esa expresión en lugar del valor númérico:

>>> math.sin(math.pi/3)
0.8660254037844386
>>> math.cos(math.pi/3)
0.5000000000000001

No existe una función directa para la cosecante, secante y cotangente, pues no es necesario, ya que simplemente se trata de los recíprocos del seno, coseno y tangente, respectivamente.

Las funciones inversas, arcoseno, arcocoseno y arcotangente, se obtienen, respectivamente, con asin(), acos() y atan():

>>> math.atan(1)
0.7853981633974483

Del mismo modo que antes, el ángulo devuelto es en radianes también. Si queremos trabajar en grados deberemos efectuar la conversión con degrees(), que toma como argumento un ángulo en radianes y lo devuelve en grados:

>>> math.degrees(0.7853981633974483)
45.0

La operación contraria, el paso de grados a radianes, se obtiene con radians():

>>> math.radians(90)
1.5707963267948966

que es justamente \pi/2 radianes:

>>> math.pi/2
1.5707963267948966

Otra función útil de math nos permite conocer el valor de la hipotenusa de un triángulo rectángulo dados sus catetos, ahorrándonos tener que calcular la raíz cuadrada de la suma de los cuadrados de estos:

>>> math.hypot(3, 4)
5.0

Para finalizar, vamos a diseñar nuestra propia función seno, que denominaremos sen() (a nuestra usanza) y aceptará directamente ángulos en grados.

import math

def sen(grados):
    return math.sin(math.radians(grados))

Ejecútalo y ya podrás hacer cosas como esta:

>>> sen(30)
0.49999999999999994

En definitiva, ½, tal como nos enseñaron en la escuela…

Javier Montero Gabarró


Trigonometría en Python


El texto de este artículo se encuentra sometido a una licencia Creative Commons del tipo CC-BY-NC-ND (reconocimiento, no comercial, sin obra derivada, 3.0 unported)


El Club del Autodidacta


Consulta el índice completo de artículos relacionados con Python.

Hola mundo, hola Java

lasecreObjetivo: escribir un primer programa en Java y verificar el entorno de compilación y ejecución.

Una vez instaladas las herramientas de desarrollo llega el momento sublime del rito de iniciación. Sea cual sea tu lenguaje de programación, si quieres que las cosas te vayan bien como programador necesitarás invocar a los dioses del código para que te insuflen el don del buen hacer, la inspiración algorítmica y la creatividad. Y esto sólo se logra de un modo: escribiendo un primer programa que imprima en pantalla el texto Hola mundo. Cualquier otra frase, una simple variación, y sería una apuesta segura hacia el fracaso.

Toma tu editor de texto plano favorito y escribe el siguiente código:

public class HolaMundo
{
  public static void main(String[] args)
  {
    System.out.println("Hola mundo");
  }
}

No te preocupes ahora si no comprendes su significado. La misión principal del primer programa no es otra sino la verificación de que nuestro entorno de desarrollo está correctamente instalado y conocer los rudimentos básicos de la compilación y ejecución en Java.

Si no puedes evitar trastear, presta atención a la instrucción

System.out.println("Hola mundo");

El texto que figure dentro de los paréntesis, rodeado entre comillas dobles, será, obviamente, el que aparecerá impreso.

Guarda el fichero y ponle de nombre HolaMundo.java

Es muy importante que el nombre del fichero coincida exactamente con el que aparece en la línea

public class HolaMundo

Cuando digo coincidencia exacta me estoy refiriendo también a las mayúsculas y minúsculas. Java distingue entre ambas y aunque a tu sistema operativo pueda no importarle el asunto, a Java sí.

Fíjate en la extensión del fichero. El código fuente en Java se almacena en ficheros con extensión .java

C:\javacode>dir
 El volumen de la unidad C no tiene etiqueta.
 El número de serie del volumen es: FC32-C34D

 Directorio de C:\javacode

14/03/2013  11:38    <DIR>          .
14/03/2013  11:38    <DIR>          ..
14/03/2013  11:50               117 HolaMundo.java
               1 archivos            117 bytes
               2 dirs  39.903.391.744 bytes libres

Para compilar el programa ejecutamos el comando

javac HolaMundo.java

Si todo va bien no te aparecerá ningún error:

C:\javacode>javac HolaMundo.java

C:\javacode>

En caso contrario se te mostrará un informe que te dará buenas pistas de lo que puede estar sucediendo. Típicamente será un error de sintaxis en el código fuente; asegúrate de que esté escrito tal cual aparece aquí. Otros errores comunes en la primera compilación son que no se encuentre el programa javac en el PATH de búsqueda (algo que explicamos en el artículo anterior), que la variable de entorno CLASSPATH no contenga el directorio actual (.), o que emplees codificación UTF-8 con BOM. Si te atascas tratando de resolver estos problemas, siéntete libre de dejar un comentario en el blog, por si puedo ayudarte.

Si todo va bien, un nuevo fichero habrá entrado en escena:

C:\javacode>dir
 El volumen de la unidad C no tiene etiqueta.
 El número de serie del volumen es: FC32-C34D

 Directorio de C:\javacode

14/03/2013  12:07    <DIR>          .
14/03/2013  12:07    <DIR>          ..
14/03/2013  12:07               422 HolaMundo.class
14/03/2013  12:06               114 HolaMundo.java
               2 archivos            536 bytes
               2 dirs  41.376.903.168 bytes libres

Menuda sorpresa… Tal vez esperabas encontrar un HolaMundo.exe; en su lugar te ha aparecido HolaMundo.class.

La compilación no nos ha generado código ejecutable directamente por el sistema operativo. En su lugar, aparece una suerte de código intermedio, denominado bytecode, que será ejecutado mediante una máquina virtual Java. En este esquema reside la clave de la portabilidad de Java, pues el bytecode es el independiente de la plataforma.

Para saludar al mundo y cumplir el guión del ritual, escribimos:

C:\javacode>java HolaMundo
Hola mundo

Observa que no es necesario indicar la extensión .class. De hecho, hacerlo provocaría un error.

Suelo decir que cuando uno hace funcionar un «Hola mundo», ya tiene recorrida la mitad del camino aprendiendo un lenguaje. El resto será fácil…

Javier Montero Gabarró


Hola mundo, hola Java


El texto de este artículo se encuentra sometido a una licencia Creative Commons del tipo CC-BY-NC-ND (reconocimiento, no comercial, sin obra derivada, 3.0 unported)


El Club del Autodidacta


Índice completo de artículos sobre Java.

La escala mixolidia

Objetivo: presentar las fórmulas de la escala mixolidia.

La escala mixolidia es el quinto modo de la escala mayor. Si, por ejemplo, sobre Do mayor

C – D – E – F – G – A – B – C

construimos la escala que comienza en el quinto grado (G, Sol) empleando exactamente las mismas notas, obtenemos:

G – A – B – C – D – E – F – G

Esta disposición particular de notas con tónica en Sol recibe el nombre de Sol mixolidia.

Toma cualquier escala mayor, elabora una nueva a partir del quinto grado y obtendrás una escala mixolidia.

Otro ejemplo: tomemos la escala Fa mayor,

F – G – A – Bb – C – D – E – F

El quinto grado es C (Do). A partir de ahí tenemos:

C – D – E – F – G – A – Bb – C

que no es otra escala sino Do mixolidia.

Aprovechando que, casualmente, hemos aterrizado en Do, utilicemos esta escala para obtener la fórmula relativa de la escala mixolidia. Ya sabes, hay que compararla con la escala mayor.

Do mayor: C – D – E – F – G – A – B – C
Do mixolidia: C – D – E – F – G – A – Bb – C

Observa que son dos escalas casi idénticas. Su única diferencia está en el séptimo grado. En la mixolidia es un semitono más bajo que en la escala mayor. Mientras que en esta la septima es mayor, en aquella es menor (b7).

Ya tenemos, por lo tanto, la fórmula buscada:

Escala mixolidia: 1 – 2 – 3 – 4 – 5 – 6 – b7

Para deducir la fórmula absoluta basta con que calculemos la distancia existente entre grados sucesivos:

Entre C y D: 1 tono (T)
Entre D y E: 1 tono (T)
Entre E y F: 1 semitono (S)
Entre F y G: 1 tono (T)
Entre G y A: 1 tono (T)
Entre A y Bb: 1 semitono (S)
Finalmente, entre Bb y C: 1 tono (T)

De modo que la fórmula absoluta de la escala mixolidia es:

Escala mixolidia: T – T – S – T – T – S – T

Se habría llegado a la misma conclusión partiendo de la fórmula absoluta de la escala mayor (T – T – S – T – T – T – S) reconstruyéndola partiendo del quinto término (que aparece rodeado con un círculo en el gráfico), continuando por el principio una vez se alcanza el final:

mixolidia

Recuerda este truco cuando tengas que deducir la fórmula de cualquier otro modo de la escala mayor.

Asegúrate, al menos, de tener bien memorizada la fórmula absoluta de la escala mayor. Si necesitas una ayuda nemotécnica, piensa que la fórmula es » Dos tes, Tres tes», es decir «Dos TT en plural, S y tres TTT en plural S». Aunque el resto de los modos se pueden deducir a partir de esa fórmula, conviene que poco a poco interiorices individualmente los intervalos de cada escala, algo que te será de suma utilidad para dominar con soltura su aplicación práctica en el instrumento.

Como ejercicio, vamos a calcular las notas de Re mixolidia empleando ambas fórmulas:

a) Fórmula absoluta: T – T – S – T – T – S – T

Partimos de Re (D):

Subimos un tono: E
Subimos un tono : F#
Subimos un semitono: G
Subimos un tono: A
Subimos un tono: B
Subimos un semitono: C
Subimos un tono, regresando a D

Re mixolidia: D – E – F# – G – A – B – C – D

b) Fórmula relativa: 1 – 2 – 3 – 4 – 5 – 6 – b7

Partimos de Re mayor:

D – E – F# – G – A – B – C# – D

y tomamos los grados indicados; es decir, bajamos un semitono el septimo (C#):

Re mixolidia: D – E – F# – G – A – B – C – D

Como curiosidad, ¿sabrías decir de qué escala mayor es modo Re miloxidia?

Como se trata del quinto modo, habría que descender una quinta justa (o subir una cuarta justa, lo que sería lo mismo). Descubrimos así que Re mixolidia es el quinto modo de Sol mayor:

Sol mayor: G – A – B – C – D – E – F# – G

En un sentido más práctico, aprender la escala mixolidia en tu instrumento es algo relativamente sencillo. Si ya conoces las escalas mayores, presta atención al séptimo grado y, cuando te encuentres con él, disminúyelo un semitono.

La escala mixolidia se utiliza ampliamente para la improvisación sobre acordes de séptima, de ahí su presencia habitual en géneros como el blues o el jazz, que hacen uso intensivo de este tipo de acordes.

En efecto, si recuerdas la fórmula del acorde de séptima:

7: 1 – 3 – 5 – b7

observarás que todos sus grados están incluidos directamente en la fórmula de la escala mixolidia.

Hay otras escalas que funcionan bien sobre acordes de séptima; las iremos conociendo a lo largo de esta serie.

Javier Montero Gabarró


http://elclubdelautodidacta.es/wp/2013/03/la-escala-mixolidia/


El texto de este artículo se encuentra sometido a una licencia Creative Commons del tipo CC-BY-NC-ND (reconocimiento, no comercial, sin obra derivada, 3.0 unported)


El Club del Autodidacta


Índice completo de artículos sobre armonía.

Python: Conoce tu IDLE

Objetivo: invitación a aprovechar al máximo las características de un IDE y presentar un truco sencillo en IDLE.

Aunque para muchos les es suficiente tener abiertos un simple editor de texto y un terminal, lo cierto es que los IDEs surgen con la idea de hacernos la vida más fácil.

Tienes un amplio abanico de IDEs a tu disposición para programar en Python. Echa un vistazo a esta wiki para hacerte una idea.

Uno de mis favoritos es, sin lugar a dudas, IDLE, incluido directamente en las distribuciones Python sobre Windows y a un solo comando de instalación en cualquier Linux. Es relativamente simple, pero aún así ofrece las características mínimas que debe cumplir cualquier IDE que se precie.

Pero, la cuestión, independientemente del IDE de que se trate, ¿conoces y utilizas todo lo que te ofrece?

Muchas veces es como tener un coche de gama alta, repleto de posibilidades, pero conformarnos con que sea capaz de conducirnos de un lado a otro y no beneficiarnos de sus comodidades.

Merece la pena invertir un día o dos descubriendo las maravillas de nuestros IDEs, créeme. Todo el tiempo que emplees te será devuelto con creces; además, queda muy profesional ver manejar un IDE con soltura.

Voy a aprovechar la coyuntura para contarte un truco sencillo para IDLE pero que resulta muy práctico…

Para ilustrar en qué consiste, vamos a escribir un programa muy básico. Lo he dividido en dos módulos para que haya varios ficheros implicados.

# principal.py
# Cálculo del importe por comensal

import auxiliar

total_factura = input('¿A cuánto asciende la broma? ')
asistentes = input('¿Entre cuántas personas hay que repartir? ')
print('Tocamos a', auxiliar.importe(float(total_factura), float(asistentes)))

# auxiliar.py

def importe(cuenta, comensales):
    return cuenta/comensales

El programa simplemente calcula cuánto tiene que pagar cada comensal en una comida en grupo en un restaurante. En el fichero auxiliar.py está definida la función que calculará la división. Obviamente, no es necesario escribir una función para eso, pero lo he hecho para poder justificar un segundo fichero en el proyecto.

>>> 
¿A cuánto asciende la broma? 200
¿Entre cuántas personas hay que repartir? 10
Tocamos a 20.0

Vamos a provocar, deliberadamente un error en tiempo de ejecución. Tal como está escrito, el programa se halla indefenso ante un intento de división por cero:

>>> 
¿A cuánto asciende la broma? 200
¿Entre cuántas personas hay que repartir? 0
Traceback (most recent call last):
  File "C:\Users\javier\My Dropbox\pythonprad\pruebas\principal.py", line 8, in <module>
    print('Tocamos a', auxiliar.importe(total_factura, asistentes))
  File "C:\Users\javier\My Dropbox\pythonprad\pruebas\auxiliar.py", line 4, in importe
    return cuenta/comensales
ZeroDivisionError: division by zero

Como puedes comprobar, Python es muy generoso a la hora de proporcionar información sobre lo sucedido. Se ha provocado un ZeroDivisionError que ha hecho abortar el programa. Te indica además qué lineas de código provocaron el error y dónde están ubicadas. En el módulo principal, en el momento de la invocación y, en última instancia, en el auxiliar al realizar una operación no permitida.

Con esos datos, sólo te resta dirigirte al lugar donde se localiza el error y subsanarlo.

IDLE dispone de un modo muy rápido de hacerlo. Haz clic con el botón derecho sobre cualquier lugar de la línea que contiene la localización del error. Se te abrirá un pequeño menú contextual con la única opción:

Go to file/line

Haz clic y te aparecerá inmediatamente el módulo que contiene el error, posicionado en la línea crítica que lo provocó. Como aparecieron dos errores, uno en cada módulo, en función del lugar donde hagas clic con el botón derecho te llevará a uno u otro.

Ahora sólo falta subsanarlo:

# principal.py
# Cálculo del importe por comensal

import auxiliar

total_factura = input('¿A cuánto asciende la broma? ')
asistentes = input('¿Entre cuántas personas hay que repartir? ')
if asistentes == '0':
    print('¿Me estás vacilando o qué?')
else:
    print('Tocamos a', auxiliar.importe(float(total_factura), float(asistentes)))

O, mucho mejor aún:

# principal.py
# Cálculo del importe por comensal

import auxiliar

total_factura = input('¿A cuánto asciende la broma? ')
asistentes = input('¿Entre cuántas personas hay que repartir? ')
try:
    print('Tocamos a', auxiliar.importe(float(total_factura), float(asistentes)))
except:
    print('¿Me estás vacilando o qué?')

De este modo estaremos protegiendo nuestro código no sólo ante una eventual división entre cero, sino también ante la introducción por parte del usuario de un valor que no pudiera ser convertido a número:

>>> 
¿A cuánto asciende la broma? 200
¿Entre cuántas personas hay que repartir? pimiento
¿Me estás vacilando o qué?

Hablaremos del bloque try y la captura de excepciones en un artículo posterior.

En este caso el ejemplo era sumamente simple, pero tu proyecto podría estar compuesto de centenares de líneas dispuestas en varios ficheros. Desplazarse al punto en el que se ha producido un error puede ser una tarea incómoda. IDLE lo logra instantáneamente, pero tienes que conocerte el truco. Por lo general, dominar un IDE supone aprender un buen puñado de trucos así, pero es un esfuerzo que te ahorrará mucho tiempo, especialmente si pasas muchas horas programando.

Javier Montero Gabarró


Python: Conoce tu IDLE


El texto de este artículo se encuentra sometido a una licencia Creative Commons del tipo CC-BY-NC-ND (reconocimiento, no comercial, sin obra derivada, 3.0 unported)


El Club del Autodidacta


Consulta el índice completo de artículos relacionados con Python.

Ajedrez y LaTeX

Objetivo: aprender a generar documentos relacionados con el ajedrez empleando \LaTeX.

Siempre he dicho que un tablero de ajedrez es como una ventana a otro mundo.

Qué tiene el ajedrez que una vez te pica el gusanillo formará parte de ti durante toda la vida… Podrás pasar temporadas apartándolo de tu lado, hastiado, quizás agotado, pero sabes que la llama nunca se apagará y bastará un comentario en algún medio, una partida, un libro que hojees, para que otra vez vuelvas a entregarte con pasión en los brazos de Caissa.

A los que adoramos el ajedrez nos gusta hablar, leer sobre ello y, ¿por qué no?, escribir también.

Y como ya tenemos algunas nociones de \LaTeX y conocemos de primera mano la calidad tipográfica de los documentos que genera, resulta natural que nos preguntemos qué puede hacer \LaTeX por nosotros como escritores ajedrecistas.

Voy a dedicar un par de artículos a hablar sobre el tema. Los incluiré también en la categoría Ajedrez a modo de cebo, a ver si consigo que algún ajedrecista despistado se interese de rebote también por \LaTeX.

Es que, una vez el vampiro de \LaTeX hundió sus colmillos en mi yugular, vago como un zombie errante buscando nuevas víctimas a las que transmitir la adoración que tengo por este sistema de preparación documental.

Para jugar al ajedrez en \LaTeX debemos ampliar su funcionalidad. Ya sabes que para eso están los paquetes, esa maravilla que hace que \LaTeX sirva para casi cualquier cosa.

Vamos a necesitar el paquete skak. El proceso de instalación dependerá de la distribución \LaTeX en particular que tengas, pero hoy día ya es algo sumamente sencillo en cualquier sistema.

Yo uso MiKTeX, que lo hace automáticamente. Cada vez que detecta que quiero utilizar un paquete que no tengo instalado me pregunta si quiero descargarlo del repositorio y se ocupa del asunto sin que sea necesaria mi intervención.

Entra en esa ventana al otro mundo escribiendo en el preámbulo:

\usepackage{skak}

Con este pequeño gesto, toda una colección de nuevos comandos estará a tu disposición. Vamos a comenzar dibujando un tablero vacío:

\documentclass{article}
\usepackage[spanish]{babel}
\usepackage[utf8]{inputenc}
\usepackage{skak}  % Vamos al jugar al ajedrez

\begin{document}
\showboard
\end{document}

latex-chess-1

El comando showboard no puede ser más explícito: muestra el tablero.

Fíjate que aparece hasta el sistema de coordenadas.

Coloquemos los trebejos sobre él. Para eso hay que decirle a \LaTeX que queremos comenzar una nueva partida con el comando newgame:

\newgame   % Comenzamos una nueva partida
\showboard % Y mostramos el tablero a continuación

latex-chess-2

En la siguiente entrega moveremos ficha y anotaremos una partida. Entre tanto, para aplacar la sed, hundiré mi hocico en algún Informator para embriagarme del olor del papel y reproduciré alguna partida elegida al azar.

Javier Montero Gabarró


Ajedrez y LaTeX


El texto de este artículo se encuentra sometido a una licencia Creative Commons del tipo CC-BY-NC-ND (reconocimiento, no comercial, sin obra derivada, 3.0 unported)


El Club del Autodidacta


Índice completo de artículos relacionados con \LaTeX.

Instalación del Kit de Desarrollo Java (JDK) en Windows

lasecreObjetivo: instalar el kit de desarrollo Java (JDK) en una plataforma Windows.

De modo que te has decidido a aprender a programar en Java

Quizás haya sido porque se trate del lenguaje de programación más utilizado y, como programador, no quieras permanecer ajeno a la fiesta. Tal vez te haya atraído su extraordinaria portabilidad o la capacidad para desarrollar programas para cualquier plataforma.

O simplemente te fascina la programación orientada a objetos. En Java, al contrario de lo que sucede en otros lenguajes, las clases y los objetos no son una opción, algo de lo que te darás cuenta en cuanto escribamos el Hola mundo de rigor.

Sea lo que sea lo que te ha movido, celebro tu decisión.

El primer paso, naturalmente, consiste en preparar el entorno de desarrollo. En el artículo de hoy mostraremos cómo instalar el JDK (Java Development Kit) para la edición estándar de Java sobre una plataforma Windows. En un artículo posterior realizaremos la instalación en alguna máquina Linux.

El proceso es bien sencillo y casi anecdótico, como podrás comprobar.

Comenzamos accediendo a la página oficial de descarga, desde la cual descargaremos el JDK de Java SE 7u17, es decir, la versión 7, update 17 (la actual en el momento de escribir esto) de la edición estándar de Java.

jdk-install-1

Llegado a este punto tienes que tener muy clara la diferencia entre el JDK y el JRE. El JRE (Java Runtime Environment) contiene la máquina virtual Java, y es necesario para poder ejecutar aplicaciones creadas en Java. Pero, como programador, lo que necesitas es el kit de desarrollo, el JDK, que además incluye el propio JRE.

Haz clic, entonces, en alguno de los iconos que he rodeado con un círculo rojo (ambos apuntan al mismo destino) para acceder a la página que contiene los enlaces de descarga.

jdk-install-2

Acepta los términos de licencia de Oracle para que los enlaces se activen.

Elige la opción adecuada en función de si tienes un sistema de 32 o 64 bits.

jdk-install-3

La instalación es poco más que hacer doble clic sobre el instalador y aceptar las opciones por defecto:

Nota: las imágenes, de aquí en adelante, corresponden al Update 15, versión de Java existente en el momento en que fueron capturadas, pero la instalación del Update 17 es exactamente la misma.

jdk-install-4

Pulsa sobre Next y que empiece el show.

Para amenizarte el proceso, la instalación te recordará que 3 billones de dispositivos utilizan Java. Son billones anglosajones (1000 millones), no de los nuestros (un millón de millones), pero aún así puedes hacerte una idea del orden de magnitud del despliegue de Java en la actualidad.

jdk-install-7

Si no ha habido sorpresas, enhorabuena, tu kit de desarrollo Java estará instalado.

jdk-install-8

Vamos a asomarnos a la carpeta de instalación. Navega hasta Archivos de Programa | Java | jdk1.7.0_15 | bin , donde se encuentran los ejecutables.

jdk-install-9

El corazón del kit lo conforman los ficheros javac.exe, el compilador, y java.exe, la máquina virtual Java. Obsérvalos en la figura.

Por lo general hay dos formas de programar en Java: empleando un IDE (como Eclipse o NetBeans, de los que hablaremos a su debido momento) o a pelo, sin más que un editor de texto plano y la línea de comandos, que es como trabajaremos en los siguientes artículos.

Pero, para poder invocar el compilador desde cualquier lugar en la línea de comandos, es necesario que la carpeta bin de arriba figure en el PATH del sistema.

Para asegurarte que no cometes ningún error trascribiendo la ruta exacta, te recomiendo que te sitúes sobre la dirección, en la parte superior del explorador de windows, hagas clic con el botón derecho y elijas Copiar dirección como texto. De este modo la ruta se copiará al portapapeles dispuesta a que la agreguemos a la variable PATH.

Accede, a continuación al cuadro de diálogo Propiedades del sistema:

jdk-install-10

Hay varios modos de llegar a él. Por ejemplo, botón derecho sobre Equipo | Propiedades | Configuración avanzada del sistema.

Dentro de la pestaña Opciones avanzadas, pulsa sobre el botón Variables de entorno para acceder al cuadro de diálogo que nos permite editarlas.

jdk-install-11

En el cuadro Variables del sistema, localiza la variable Path, selecciónala y pulsa el botón Editar.

jdk-install-12

Desplázate al final, agrega un punto y coma como separador y pega a continuación el contenido del portapapeles, que contiene la ruta completa al compilador de Java.

jdk-install-13

Acepta todo lo que haya que aceptar y probemos nuestra instalación.

Abre un intérprete de comandos y ejecuta los comandos:

javac -version
java -version

jdk-install-14

Como ves, no sólo hemos verificado que el compilador y la máquina virtual se encuentran accesibles desde cualquier ubicación; además, comprobamos que las versiones son las correctas.

Ahora sí, ya estamos en condiciones de escribir nuestro primer programa en Java.

Javier Montero Gabarró


http://elclubdelautodidacta.es/wp/2013/03/instalacion-del-kit-de-desarrollo-java-jdk-en-windows/


El texto de este artículo se encuentra sometido a una licencia Creative Commons del tipo CC-BY-NC-ND (reconocimiento, no comercial, sin obra derivada, 3.0 unported)


El Club del Autodidacta


Índice completo de artículos sobre Java.

Presentación de la categoría JAVA

Hace ilusión estrenar nueva categoría…

Comienza otra sección más dedicada a la programación. Además de los artículos habituales sobre Python, iré incluyendo otros relacionados con la programación en Java.

Después de todo, lo que caracteriza a un programador NO es precisamente el lenguaje que utiliza, que no supone sino un medio de expresión. En este sentido, aprender Java significa adentrarnos en un fascinante mundo en el que hasta nuestros sueños podrán ser modelados como objetos.

Espero que sea de tu agrado.

Javier Montero

Uso de cookies

Este sitio web utiliza cookies para que usted tenga la mejor experiencia de usuario. Si continúa navegando está dando su consentimiento para la aceptación de las mencionadas cookies y la aceptación de nuestra política de cookies, pinche el enlace para mayor información.plugin cookies

ACEPTAR
Aviso de cookies