Construcción de acordes – 24: séptima mayor con 9, 11 y 13

Objetivo: aprender a construir el acorde de séptima mayor con novena, oncena y trecena.

Una vez visto cómo podemos extender los acordes hasta la oncena, el siguiente salto de tercera nos permite alcanzar la trecena (13), que ya sabes que es equivalente a una sexta (13 – 7 = 6), pero una octava por encima.

Las combinaciones que podemos formar son muchas, y es posible que no todas dispongan de entrada propia en el blog. En cualquier caso, el objetivo de esta serie es que tengas conocimientos suficientes para ser capaz de construir por ti mismo cualquier acorde a partir de su nombre, de modo que eso no debe preocuparte.

Cualquier tipo de acorde que hemos tratado hasta ahora es susceptible de ser extendido hasta la 13, que a su vez podrá ser mayor o menor, 13 o b13, respectivamente, de modo que hazte una idea del total de posibilidades. Además, será frecuente omitir ciertas notas, pues un acorde de trece completo contiene ¡7 notas diferentes! Cada omisión provoca un color diferente en el acorde y en ocasiones será práctico reflejarlas en la propia nomenclatura (por ejemplo, F7(9)(13) (no 5th), acorde de séptima de dominante con novena y trecena ,sin quinta y omitiendo la 11, muy popular entre los guitarristas de jazz).

Comencemos, entonces, por el acorde mayor, con séptima, novena y trecena también mayores y con oncena justa:

maj7(9)(11)(13) = 1 – 3 – 5 – 7 – 9 – 11 – 13

No cuesta comprobar que la 11 es una nota poco agraciada en esta combinación. Pese a estar a una octava de la cuarta, desafía desde la distancia a la tercera hasta el punto que enturbia el modo mayor. Además, entre la séptima mayor y la oncena mayor hay exactamente un tritono, intervalo muy inestable que acaba con la supuesta paz buscada en un acorde mayor. Tú mismo; prescinde de la 11 si no te gusta.

Un par de ejemplos prácticos: calculemos las notas de Cmaj7(9)(11)(13) y de Amaj7(9)(11)(13).

Empezamos, como siempre, con las respectivas escalas mayores, extendiéndolas hasta la trecena:

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

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

Tomamos los grados indicados en la fórmula y … voilà.

Cmaj7(9)(11)(13) = C – E – G – B – D – F – A

¡Las 7 notas de la escala mayor, pero ordenadas de un modo peculiar!

Amaj7(9)(11)(13) = A – C# – E – G# – B – D – F#

Intenta montarlo en tu instrumento, aunque alguna nota se quede en el camino. ¿A qué suena?

Javier Montero Gabarró


Construcción de acordes – 24: séptima mayor con 9, 11 y 13


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 – Midnight Blue

Objetivo: aprender a escribir en color en LaTeX.

Recordando los dibujos animados de Walt Disney en mi infancia, bienvenido al mágico mundo de color en \LaTeX. Si bien es cierto que un purista jamás te recomendará que escribas texto en color, lo cierto es que se trata de un recurso expresivo más. Tú eres el artista y compositor, así que tú mismo decides.

\LaTeX no fue diseñado para lidiar con la escritura en color, de modo que si queremos hacerlo tendremos que recurrir, como hemos hecho en otras ocasiones, a paquetes que extiendan su funcionalidad.

Para un uso básico del color disponemos del paquete color:

\usepackage{color}

Existe una extensión, denominada xcolor, que amplia con creces lo que color ofrece. No obstante, para el propósito introductorio de este artículo, he preferido centrarme en las funciones básicas y rendir pleitesía al desarrollo original.

Podemos definir nuestros propios esquemas de color de acuerdo a nuestros gustos. No lo haremos aquí, sino que accederemos a colores prefijados que referenciaremos por su nombre.

Para escribir texto en color, al igual que cuando modificábamos otros atributos (negrita, cursiva, etc…) disponemos de dos posibilidades:

a) el modo comando, con \textcolor:

\textcolor{red}{La casa de la pradera}

Observa la presencia de dos argumentos obligatorios: el nombre del color y el texto que se verá afectado.

b) el modo declaración, con \color:

En una declaración activamos un color y su vigencia permanecerá hasta que, o bien conmutemos a otro color,

\color{green}La casa de la pradera, \color{black} una serie como pocas.

o bien concluya el grupo en el que está incluido. Recuerda que los grupos se delimitan mediante pares de llaves.

Marcó a toda una generación: {\color{green}la casa de la 
pradera,} una serie como pocas.

Menos frecuente es la necesidad de cambiar el color de fondo de la página. Para hacerlo, disponemos de la declaración \pagecolor:

\pagecolor{yellow}

Lo que hará que se establezca un fondo amarillo en la página en la que se encuentra el comando y en todas las sucesivas hasta que se conmute de color.

Si la paleta de ocho colores básicos te resulta pequeña, siempre podemos ampliarla invocando al paquete color del siguiente modo:

\usepackage[usenames, dvipsnames]{color}

Lo que nos dará acceso a un abanico exótico de 68 colores. Sé cuidadoso y respeta las mayúsculas y minúsculas al utilizar estos nombres.

I see the lonely road that leads so far away,\\
I see the distant lights that left behind the day\\
But what I see is so much more than I can say\\
And I see you in \textcolor{MidnightBlue}{midnight blue}.

\emph{Electric Light Orchestra}

LaTeX-MidnightBlue

Evocando, a modo de sinestesia, mi emoción, mi color y mi canción favorita, la estremecedora, fría pero esperanzadora Midnight Blue.

Javier Montero Gabarró


http://elclubdelautodidacta.es/wp/2013/06/latex-midnight-blue/


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.

Armonización de la escala mayor – 7: Ejercicios finales

Objetivo: realización de ejercicios complementarios para asentar los acordes que aparecen al armonizar la escala mayor.

Para concluir esta mini serie dedicada a la armonización de la escala mayor, vamos a dedicar unos minutos a repasar lo aprendido con un par de ejercicios prácticos. Todo lo que necesitas saber para resolverlos es:

– cómo construir escalas mayores en cualquier tonalidad.
– tipo de acordes, por grado, que aparecen al armonizar la escala (tríadas y tétradas).

Ejercicio 1: indicar los acordes tríadas y tétradas propios de la tonalidad Mi mayor.

Comenzamos construyendo la escala Mi mayor, cuyos grados serán las fundamentales de los acordes que buscamos:

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

Acordes tríadas: I – IIm – IIIm – IV – V – VIm – VIIº

De modo que nuestras tríadas son:

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

Acordes tétradas: Imaj7 – IIm7 – IIIm7 – IVmaj7 – V7 – VIm7 – VIIm7(b5)

En particular, en Mi mayor:

Emaj7 – F#m7 – G#m7 – Amaj7 – B7 – C#m7 – D#m7(b5)

Ejercicio 2: acordes diatónicos de Sol mayor.

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

Utilizando las relaciones anteriores:

Tríadas: G – Am – Bm – C – D – Em – F#º

Tétradas: Gmaj7 – Am7 – Bm7 – Cmaj7 – D7 – Em7 – F#m7(b5)

Otro ejercicio que puedes realizar es continuar la extensión de las armonías una tercera más, alcanzando la novena. Si has comprendido bien lo explicado a lo largo de estos artículos, no deberá suponerte mucho problema su realización.

Con tiempo y práctica irás reteniendo los acordes propios de cada tonalidad sin necesidad de realizar los cálculos. Es cuestión de experiencia tonal: si tocas canciones en Fa mayor, por ejemplo, te darás cuenta de que siempre aparecen los mismos acordes y serás capaz de detectar al instante la eventual presencia de cualquier intruso (colocar hábilmente intrusos entre acordes diatónicos es un arte armónico que todo compositor debe dominar y del que hablaremos en ocasiones en el blog presentando métodos comúnmente aceptados de hacerlo).

Cerramos ya la armonización de la escala mayor, pero volveremos más adelante con otras escalas a las que aplicaremos los mismos criterios de construcción de acordes. Como veremos, la armonización de cualquier modo de la escala mayor será una labor obvia, pero tendremos el placer de descubrir nuevos acordes cuando tratemos con escalas menores como la armónica o la melódica.

Javier Montero Gabarró


http://elclubdelautodidacta.es/wp/2013/06/armonizacion-de-la-escala-mayor-7-ejercicios-finales/


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 de todos los artículos de armonía.

Python – Siete novias para siete hermanos

Objetivo: presentar la función zip() para emparejar elementos en Python.

En la película Siete novias para siete hermanos los hermanos Pontipee se ven envueltos en la azarosa empresa de tener que encontrar pareja. Aunque lo consiguen y sea aplicable el dicho de que está bien lo que bien acaba, hay que admitir que los medios empleados son poco ortodoxos y un tanto cuestionables.

Python proporciona maneras mucho más elegantes de hacer lo mismo…

Sea hermanos una lista con los ansiosos Pontipee:

>>> hermanos = ['Adam', 'Benjamin', 'Caleb', 'Daniel', 
'Efraín', 'Frank', 'Gideon']

Y sea novias la lista de pretendidas:

>>> novias = ['Milly', 'Dorcas', 'Ruth', 'Martha', 
'Liza', 'Sarah', 'Alice']

Para asociar un elemento de una lista con su respectivo de otra, Python dispone de la función zip(), palabra en inglés que significa cremallera.

Visualiza por un instante una cremallera desabrochada. A ambos lados del deslizador dos filas de dientes esperan ser engarzados. Eso es precisamente lo que hace zip().

>>> zip(hermanos, novias)
<zip object at 0x02C53670>

La función zip() ha creado un objeto de tipo zip que no es otra cosa sino un iterador. Hablaremos con más profundidad sobre iteradores e iterables en otro momento, pero por ahora puedes quedarte con la idea de que pueden ser iterados, es decir, recorridos de principio a fin (con un bucle for, por ejemplo).

El objeto iterador tal cual, crudo, no puede ser visualizado directamente; para hacerlo
debemos otorgarle cierta estructura ósea. Es como si se tratara de un fantasma translúcido, incorpóreo, pero visible si volcamos un paquete de harina sobre él.

Materialicemos nuestro iterador convirtiéndolo, por ejemplo, en lista:

>>> list(zip(hermanos, novias))
[('Adam', 'Milly'), ('Benjamin', 'Dorcas'), ('Caleb', 'Ruth'), 
('Daniel', 'Martha'), ('Efraín', 'Liza'), ('Frank', 'Sarah'), 
('Gideon', 'Alice')]

Y ahora sí, cada oveja con su pareja.

La función zip(), hablando con más propiedad, toma iterables como argumentos (pueden ser más de dos, visualiza una cremallera tridimensional) y devuelve un iterador compuesto por tuplas, como puedes comprobar en el ejemplo anterior.

Los iterables presentes en los argumentos no tienen que ser necesariamente de la misma longitud. En ese caso, empareja los que pueda, el resto los omite:

>>> a = [0, 1, 2, 3]
>>> b = [1, 10, 100, 1000, 10000, 100000]
>>> for (exponente, resultado) in zip(a,b):
  print('10 elevado a', exponente, '=', resultado)

  
10 elevado a 0 = 1
10 elevado a 1 = 10
10 elevado a 2 = 100
10 elevado a 3 = 1000

Presta atención a la técnica empleada para desempaquetar los elementos individuales de las tuplas generadas por zip().

THE END

Javier Montero Gabarró


Python – Siete novias para siete hermanos


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.

Armonización de la escala mayor – 6: las tétradas

Objetivo: Deducir los acordes tétradas que aparecen al armonizar por terceras la escala mayor.

En los artículos anteriores aprendimos a armonizar la escala mayor superponiendo intervalos de terceras y dedujimos los acordes de tres notas (tríadas) que nos aparecían. Obtuvimos el siguiente paquete de acordes:

I – IIm – IIIm – IV – V – VIm – VIIº

en el que los números romanos hacen mención al grado de la escala correspondiente.

Hoy vamos a agregar otra tercera diatónica (es decir, perteneciente a la misma escala) para obtener acordes de cuatro notas, conocidos como tétradas o cuatríadas. Eso nos permitirá ampliar nuestro repertorio tonal con siete acordes nuevos de colorido diferente a su versión en tres notas.

Utilizaremos para el cálculo la escala de Do mayor, generalizando después para el resto de las tonalidades mayores.

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

1) Acorde sobre el primer grado:

Partimos de la nota Do (C) y solapamos tres terceras.

C – E – G – B

Observa que un intervalo de tercera es equivalente a saltarse una nota y coger la siguiente.

Al igual que hicimos con las tríadas, descubramos la naturaleza de cada sucesiva tercera, es decir, indiquemos si es mayor (4 semitonos) o menor (3 semitonos).

De C a E: cuatro semitonos; tercera mayor.

De E a G: tres semitonos; tercera menor.

De G a B: cuatro semitonos; tercera mayor.

Tercera mayor + Tercera menor + Tercera mayor = acorde de séptima mayor (maj7 o 7M).

En nuestro caso, partiendo de C, el acorde es Do séptima mayor, Cmaj7.

Para entender mejor la aparición de esta séptima voy a ofrecerte un cálculo alternativo con el que conviene que estés familiarizado. En lugar de calcular el intervalo existente entre una nota y la anterior, vamos a hacerlo en relación a la primera nota del acorde, la fundamental.

Entre C y E, una tercera mayor, como ya hemos visto.

Entre C y G hay una quinta. Si cuentas los semitonos de diferencia obtienes siete, de modo que se trata de una quinta justa o perfecta.

[Si no tienes soltura calculando intervalos, puedo sugerirte la lectura de los ocho artículos de la serie Intervalos sin secretos, en el que se explica toda la teoría junto a numerosos ejemplos prácticos.]

Entre C y B hay una séptima. Se compone de 11 semitonos, de modo que es una séptima mayor.

Todos los intervalos nos han salido mayores, de modo que la fórmula de este acorde es:

1 – 3 – 5 – 7: acorde de séptima mayor, Cmaj7 en nuestro caso.

2) Acorde sobre el segundo grado:

Partimos de Re (D) y apilamos terceras:

D – F – A – C

Realizando las mismas cuentas que hicimos antes obtenemos la siguiente composición intervalica:

Tercera menor + Tercera mayor + Tercera menor = Acorde menor séptima (m7).

O bien, en relación a la fundamental:

1 – b3 – 5 – b7

En nuestro caso, sobre Re, Dm7.

3) Acorde sobre el tercer grado:

E – G – B – D

Tercera menor + Tercera mayor + Tercera menor : Acorde menor séptima (m7), como antes.

1 – b3 – 5 – b7

Con fundamental en Mi, Em7.

4) Acorde sobre el cuarto grado:

F – A – C – E

Tercera mayor + Tercera menor + Tercera mayor = acorde de séptima mayor (maj7 o 7M), el mismo tipo que sobre el primer grado.

1 – 3 – 5 – 7

Con fundamental en Fa, Fmaj7.

5) Acorde sobre el quinto grado:

G – B – D – F

Tercera mayor + Tercera menor + Tercera menor = acorde de séptima (7).

Calculando los intervalos en relación a la fundamental:

1 – 3 – 5 – b7

Observa que la séptima, a diferencia de lo que sucedía sobre el primer o cuarto grado, es menor. Ten presente que, a la hora de formar acordes, si no se especifica de qué tipo es la séptima, se está sobreentiendo que es menor. Sobre el primer y cuarto grados especificamos que la séptima es mayor, de ahí el nombre de los acordes: Do séptima mayor y Fa séptima mayor. Pero sobre el quinto grado la séptima es menor, y por eso decimos sólo Sol séptima, sin más calificativos.

Sobre Sol, pues, G7.

6) Acorde sobre el sexto grado:

A – C – E – G

Tercera menor + Tercera mayor + Tercera menor : Acorde menor séptima (m7), del mismo tipo que sobre los grados 2 y 3.

1 – b3 – 5 – b7

Sobre La, Am7.

En relación al comentario anterior, observa que no especificamos más que séptima, sin el adjetivo menor (el menor que precede al siete hace referencia a que la tercera es menor, propia de los acordes menores, y no califica la séptima, pues por defecto ya lo es). Existe un acorde menor semejante, pero con la séptima mayor, en lugar de menor, Am maj7 y se denomina La menor con séptima mayor. Lo veremos aparecer cuando armonicemos otro tipo de escalas.

7) Acorde sobre el séptimo grado:

B – D – F – A

Tercera menor + Tercera menor + Tercera mayor = Acorde menor séptima con quinta disminuida, conocido también como semidisminuido: m7(b5).

A veces, podrás encontrarte este acorde escrito de un modo diferente: el mismo circulito que empleábamos para los disminuidos, pero con una línea partiéndolo por la mitad: ∅

En relación a la fundamental,

1 – b3 – b5 – b7

Sobre Si, Bm7(b5).

Ya tenemos nuestros siete acordes buscados. Agrupémoslos:

Cmaj7 – Dm7 – Em7 – Fmaj7 – G7 – Am7 – Bm7(b5)

Generalizar al resto de tonalidades mayores es inmediato:

Imaj7 – IIm7 – IIIm7 – IVmaj7 – V7 – VIm7 – VIIm7(b5)

Conclusión: acordes de séptima mayor sobre los grados 1 y 4, menores séptima, sobre el 2, 3 y 6, séptima sobre el 5 (grado conocido como dominante, de ahí la forma común de referirse al acorde de séptima como acorde de séptima de dominante) y menor séptima con quinta bemol sobre el 7.

Al igual que con las tríadas, apréndete bien estos acordes, ingredientes con los que todo compositor prepara sus recetas mágicas.

Javier Montero Gabarró


http://elclubdelautodidacta.es/wp/2013/05/armonizacion-de-la-escala-mayor-6-las-tetradas/


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 de todos los artículos de armonía.

Java: Un programa para probar las clases

lasecreObjetivo: desarrollar un programa completo en Java que permita poner a prueba las clases que hemos definido en los artículos anteriores.

Hagamos una breve recopilación de lo que llevamos hasta ahora: hemos definido los conceptos de clase y de objeto, pilares sobre los que se edifica la metodología de la programación orientada a objetos. Sabemos que las clases encapsulan atributos, elementos que indican las características de los objetos, y métodos, conjunto de funciones que definen su comportamiento. Aprendimos a crear objetos nuevos con new y mostramos cómo acceder a los atributos y métodos mediante la notación punto.

Definimos varias clases; entre ellas, Persona y Coche. Cada una reside en su propio fichero de código fuente .java y ha sido compilada en su respectivo fichero .class.

Va a entrar en escena una nueva clase que contendrá el programa principal desde el que probaremos la operatividad de las anteriores.

// ProbandoClases.java

public class ProbandoClases
{
  public static void main(String[] args)
  {
    // Aquí introduciremos el código para probar nuestras clases
  }
}

Esta nueva clase la mantendremos en el mismo directorio en el que se encuentran las restantes y en un fichero independiente denominado ProbandoClases.java. El nombre del fichero debe coincidir con el de la clase, teniendo en cuenta, además, que se diferencian las mayúsculas de las minúsculas.

La razón de ubicar el programa y las clases en el mismo directorio no es otra sino para tener acceso a ellas desde el programa principal. En breve, cuando definamos el concepto de paquete , veremos otros modos de definir las clases y agruparlas de un modo más práctico que facilite la reutilización de código entre programas diferentes. Todo a su momento; vayamos concepto a concepto.

Fíjate en el esqueleto del programa principal: es la misma estructura que presentamos en el Hola Mundo. Con lo que ya sabemos sobre las clases podemos aportar algo más de luz.

public class ProbandoClases

Olvídate por el momento del public. Si te das cuenta, el programa en sí mismo también es una clase, caracterizada por la palabra reservada class. Como tal, podrá tener también sus atributos y métodos.

Fíjate ahora en la siguiente línea:

public static void main(String[] args)

Dejemos el public static para otra ocasión. Lo que vemos después no es más sino la definición de un método, denominado main, que acepta una serie de parámetros entre paréntesis (de los que hablaremos a su debido momento), y que no devuelve ningún valor (void).

Todos los programas en Java han de disponer de un método llamado main, definido del mismo modo que en nuestro ejemplo. Es el punto donde comenzará la ejecución del programa.

Si has programado en C esto no te resultará muy sorprendente, pues en ese lenguaje de programación todo comienza en main también. Lo particular de Java, donde prácticamente todo es un objeto, es que main, en sí mismo, está encapsulado dentro de una clase.

Para que nos sirva de referencia y por comodidad, repito aquí el código de las clases Coche y Persona.

// Coche.java

class Coche
{
  String marca;
  String modelo;
  String color;
  int numeroDePuertas;
  int cuentaKilometros;
  int velocidad;
  boolean arrancado;
  
  void arrancar()
  {
    arrancado = true;
  }
  
  void parar()
  {
    arrancado = false;
  }
  
  void acelerar()
  {
    velocidad = velocidad + 1;
  }
  
  void frenar()
  {
    velocidad = velocidad - 1;
  }
  
  void pitar()
  {
    System.out.println("Piiiiiiiiiiiiiiiiii");
  }
  
  int consultarCuentaKilometros()
  {
    return cuentaKilometros;
  }
}

// Persona.java

class Persona
{
  char sexo;
  String nombre;
  int edad;
  Coche coche;
  
  void saludar()
  {
    System.out.println("Hola, me llamo " + nombre);
  }
  
  void dormir()
  {
    System.out.println("Zzzzzzzzzzz");
  }
  
  int obtenerEdad()
  {
    return edad;
  }
}

He numerado las líneas del código del programa principal para poder referenciarlas después en la explicación. Obviamente, esa numeración no debe aparecer en el fichero real.

1  public class ProbandoClases
2  {
3    public static void main(String[] args)
4    {
5      // Aquí introduciremos el código para probar nuestras clases
6      
7      Coche coche1 = new Coche();
8      Persona persona1 = new Persona();
9      Persona persona2 = new Persona();
10    
11    
12      coche1.marca = "Seat";
13      coche1.modelo = "Panda";
14      coche1.color = "Beige";
15      coche1.numeroDePuertas = 3;
16      coche1.cuentaKilometros = 215000;
17      coche1.velocidad = 0;
18      coche1.arrancado = false;
19    
20      persona1.sexo = 'F';
21      persona1.nombre = "Marta";
22      persona1.edad = 32;
23      persona1.coche = coche1;
24    
25      persona2.nombre = "Raimundo";
26        
27      System.out.println(coche1.marca);
28      System.out.println(coche1.modelo);
29      System.out.println(coche1.color);
30      System.out.println(coche1.numeroDePuertas);
31      System.out.println(coche1.cuentaKilometros);
32      System.out.println(coche1.velocidad);
33      System.out.println(coche1.arrancado);
34    
35      System.out.println(persona1.sexo);
36      System.out.println(persona1.nombre);
37      System.out.println(persona1.edad);
38      System.out.println(persona1.coche);
39      System.out.println(persona1.coche.marca);
40      System.out.println(persona1.coche.modelo);
41    
42      System.out.println(persona2.sexo);
43      System.out.println(persona2.nombre);
44      System.out.println(persona2.edad);
45      System.out.println(persona2.coche);
46    
47      coche1.arrancar();
48      System.out.println(coche1.arrancado);
49      coche1.acelerar();
50      System.out.println(coche1.velocidad);
51      coche1.acelerar();
52      System.out.println(coche1.velocidad);    
53      coche1.acelerar();
54      System.out.println(coche1.velocidad);    
55      coche1.frenar();
56      System.out.println(coche1.velocidad);    
57      coche1.frenar();
58      System.out.println(coche1.velocidad);    
59      coche1.frenar();
60      System.out.println(coche1.velocidad);
61      coche1.parar();
62      System.out.println(coche1.arrancado);
63      coche1.pitar();
64      coche1.consultarCuentaKilometros();
65    
66      persona1.saludar();
67      persona1.obtenerEdad();
68      persona2.saludar();
69      persona2.obtenerEdad();
70      persona1.dormir();
71      persona2.dormir();  
72    
73    }
74  }

Si no has modificado las clases y ya tienes los respectivos ficheros .class generados, sólo necesitarás compilar el nuevo fichero:

javac ProbandoClases.java

En caso contrario, si tienes que compilar todo, puedes proceder así:

javac *.java

Para ejecutar el programa, basta con invocar la máquina virtual Java facilitando el nombre de la clase que contiene al método main():

java ProbandoClases

Esta es la salida generada, numerada por mí también para seguir mejor la explicación:

1  Seat
2  Panda
3  Beige
4  3
5  215000
6  0
7  false
8  F
9  Marta
10  32
11  Coche@8814e9
12  Seat
13  Panda
14
15  Raimundo
16  0
17  null
18  true
19  1
20  2
21  3
22  2
23  1
24  0
25  false
26  Piiiiiiiiiiiiiiiiii
27  Hola, me llamo Marta
28      32
29  Hola, me llamo Raimundo
30      0
31  Zzzzzzzzzzz
32  Zzzzzzzzzzz

En las líneas 7-9 del programa nos ocupamos de la creación de los tres objetos con los que trabajaremos, un coche y dos personas. Observa cómo, en la misma instrucción, declaramos cada objeto y lo creamos.

Establecemos valores para los atributos de estos objetos en las líneas 12-25. Al contrario de lo que sucede con persona1, a quien le hemos definido todos sus atributos, persona2 sólo recibe valor (por nuestra parte) del nombre.

En 27-45 realizamos una impresión de todos los atributos de los tres objetos. Podemos observarlo en las salidas 1-17. Merece la pena prestar atención a algunos detalles:

En un momento dado (línea 38 del programa) tratamos de imprimir el valor de persona1.coche. Ese atributo, si prestas atención a la definición de la clase, es de tipo Coche, es decir, es un objeto en sí mismo. Por eso la respuesta rara que obtenemos en la impresión (línea 11), que en verdad es algo así como una referencia a la ubicación del objeto. Podemos tratar de profundizar en ese objeto si deseamos conocer sus atributos. Es precisamente lo que hacemos en las líneas 39-40, obteniendo la respuesta 12-13 en la salida. Presta mucha atención a la doble notación punto para preguntar por el atributo de un atributo.

Entre las líneas 42-45 preguntamos por los atributos de persona2, a la que sólo hemos facilitado su nombre. Sin embargo, Java ya ha hecho algo por nosotros.

Cada vez que se construye un nuevo objeto se invoca a un método especial que tienen todas las clases que se denomina el constructor que presentaremos formalmente en otro artículo. Entre sus funciones se encuentra la de inicializar todos los atributos del objeto. El constructor, cuando está definido explícitamente, suele incorporar en forma de argumentos valores con los que inicializar los miembros. La cuestión es que, si no hay una inicialización explícita en ese constructor, Java se ocupará de suministrar valores iniciales por su cuenta. Ese valor dependerá del tipo de variable. Por ejemplo, si es numérico le asignará el valor cero; si es un booleano, false, si es de tipo char, el carácter nulo (línea 14 de la salida, devuelta en blanco, en respuesta a la línea 42 del código) y si es un objeto (categoría entre la que se encuentran las cadenas de caracteres también), le asignará el valor null (línea 17 de la salida, en respuesta a la línea 45 del código), que es un modo que tiene Java de decirnos que es un objeto inexistente o indefinido.

A partir de la línea 47 comenzamos a probar los métodos de los objetos.

Arrancamos coche1, lo que ocasiona, si revisas el código de la clase, que la variable arrancado se establezca en true, hecho que comprobamos por medio de la línea 48, obteniendo la salida 18.

En las líneas siguientes jugamos a acelerar y a frenar el coche. Observa las salidas 19-24, en las que, después de acelerar gradualmente (incrementando en uno la velocidad) frenamos para volver a dejar el coche con velocidad cero.

Detenemos el motor del vehículo (línea 61) y hacemos sonar su claxon (línea 63, salida 26).

En las líneas de código 27-30 pedimos a persona1 y persona2 que se presenten y nos digan su nombre y edad. Observa que el método obtenerEdad() devuelve un valor numérico, al contrario de los restantes, que no retornan nada (void), de modo que para poder saber de qué valor se trata, obtenerEdad() ha de formar parte de una expresión imprimible (líneas 67 y 69).

Yo estoy cansado de tanto escribir y Marta y Raimundo de que haga el tonto con ellos. De modo que todo el mundo a dormir (líneas 70-71, salidas 31-32).

Javier Montero Gabarró


Java: Un programa para probar las clases


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 tirada larga del fin de semana

Solemos denominar tirada larga a cualquier salida mayor en tiempo o distancia que el entrenamiento típico. Es normal reservarla para el fin de semana, pues en esos días, al menos hipotéticamente, tenemos más tiempo para poder corretear por calles y caminos a nuestras anchas.

Es común encontrar el término en el contexto de la preparación de un maratón o medio maratón. No es normal entrenar la máxima distancia (42 o 21 Km) y a lo largo de la semana se reparten entrenamientos diversos relativamente cortos, haciendo uno especial, la tirada larga, cubriendo una mayor longitud, pero aún inferior al objetivo, que se reserva sólo para el día de la prueba.

En cualquier caso, el adjetivo larga es subjetivo y podrá significar, según para quién, 30, 15, 7 o incluso 3 Km. Lo que es indudable, en cambio, es que siempre será un entrenamiento excepcional, un desafío, más tiempo y kilómetros que lo habitual.

Mis tiradas largas no son demasiado ambiciosas y me gusta realizarlas a lo que denomino ritmo de crucero, esa velocidad que me permite correr durante mucho tiempo sin sensación de cansancio. Es un ritmo aeróbico en el que la mayor parte de la energia la aporta la combustión de las grasas.

En la práctica, aunque vaya sobrado de pulmón y corazón y crea que podría estar corriendo eternamente, suelen ser las rodillas, tobillos, o las plantas de los pies, los que imponen los límites.

Me gusta realizar la tirada larga como primera actividad del día, nada más me despierto y en ayunas. Me he acostumbrado a eso y mi cuerpo parece encajarlo bien. Después de todo, pese a que voy a estar más tiempo corriendo, lo haré a un ritmo aeróbico poco exigente.

Y la mañana nublada y fresquita de hoy era absolutamente propicia: 15,05 Km; 1h 32′; 6:07/Km; 1220 Kcal.

Javier Montero Gabarró


http://elclubdelautodidacta.es/wp/2013/05/la-tirada-larga-del-fin-de-semana/


Puedes consultar el índice completo de artículos pertenecientes a la categoría running.


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

Motivación y Productividad: Diarios de Acción

Quisiera compartir contigo una metodología que me ayuda a estar motivado y a ser más productivo en mis diversas áreas de interés. Como incansable estructurador, me gusta poner nombre a todo y la he bautizado como los Diarios de Acción.

No cuento nada nuevo que probablemente no haya pasado por tu cabeza ya antes, pero el mero hecho de pararte a estructurar y sistematizar unos patrones de comportamiento puede ser inspirador de cambios importantes.

Con los Diarios de Acción no sólo encuentro divertidísimo producir, en el sentido más general y multidisciplinar de la palabra, sino que además mantengo a raya la ansiedad característica de quien tiene mil tareas por hacer y no sabe por dónde empezar.

El nombre del método resume la idea principal: mantén diarios (en plural) de tus actos.

Escribe un diario de cada una de las áreas de actividad en que te halles involucrado. Esto es muy importante: para lograr la transferencia de pasión de la que hablaba en el artículo Polifacetismo y Productividad, es necesario que desarrolles una capacidad de abstracción que casi permita creerte, cuando estés inmerso en alguna faceta específica (lo que yo denomino modo), que es la única existente en tu vida. Si, por ejemplo, estoy en modo Python, durante todo el tiempo que permanezco en él, sean veinte minutos o dos horas, no existe otra cosa para mí y tengo la plena sensación de que no he hecho otra cosa en mi vida más que programar en Python. Un diario único no me permitiría lograr ese nivel de abstracción.

Cuando al genial Alekhine, campeón del mundo de ajedrez, le preguntaron cómo era capaz de jugar partidas a ciegas (sin ver la piezas) simultáneamente contra varios rivales, contestó que en su mente ideaba una especie de archivador en el que cada cajón representaba una única partida. Una vez movía pieza, cerraba un cajón y abría otro diferente, concentrándose en él como si los demás no existieran.

Cuando cambio de modo, una simple lectura de su diario me sitúa rápidamente en contexto, me permite conocer dónde lo dejé la última vez y, sobre todo, cambia mi estado mental.

Escribe en él tu visión, tus objetivos, pero, fundamentalmente, que sea un diario de acción en el que figuren los pasos concretos que llevas a cabo día a día para alcanzar tus metas.

Cuenta una historia bonita y emotiva, haz que su lectura sea inspiradora y te dé fuerzas para continuar avanzando. Actúa, trabaja con pasión y que escribir en el diario sea un premio por cada tarea individual que realices.

Sé fiel a su escritura y, a no ser que no te sea posible en ese momento, documenta los hechos tan pronto sucedan o tengas noticias de ellos. Es fácil sucumbir a la tentación de dejarlo al final cuando otras tareas revolotean inquietando tu mente; en esos casos, respira con calma y no te dejes llevar por la ansiedad. Si lo que acabas de realizar es verdaderamente importante, demuéstralo haciéndolo merecedor de tus mejores palabras. Cuida la ortografía y la gramática, escribe sin prisas.

¿Cuántos diarios mantener? ¿Hasta qué nivel de detalle fragmentar nuestro polifacetismo? La respuesta es bastante personal pero, por lo general, que los diarios no sean tan genéricos que te impidan abstraerte plenamente en la actividad, ni tan específicos que sólo los visites de tarde en tarde. Encuentra tú mismo el punto de equilibrio.

Hay muchas herramientas que te pueden ayudar a gestionar estos diarios de acción. Recuerdo que, hace muchos años, cometí la estupidez de comprar más de treinta cuadernos, cada uno dedicado a un único diario. Obviamente, no llegué muy lejos con ellos.

Lo ideal es utilizar aplicaciones como Dropbox, Google Drive o Evernote, que permiten acceder a tus documentos y notas desde cualquier ordenador, incluso desde el propio móvil. En particular, para este cometido, estoy usando ahora la última por su extraordinaria agilidad para moverse entre notas y pasar de un diario a otro en apenas un par de segundos.

Te invito a que, si no estás haciendo ya algo semejante, pruebes el método durante un tiempo y juzgues por ti mismo si te ayuda a motivarte y ser más productivo sin estrés. Si te animas, recuerda ser cuidadoso y disfrutar con cada entrada que plasmes. Después de todo, son los diarios de tu vida, testimonio de tu paso por el mundo.

Javier Montero Gabarró


Motivación y Productividad: Diarios de Acción


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 los artículos de la categoría Productividad.

Python: El producto cartesiano

Objetivo: mostrar una técnica eficiente para determinar el producto cartesiano de dos conjuntos empleando listas por comprensión.

Imagina que entre la equipación deportiva que incluye tu armario figuran camisetas de cuatro colores: blanco, verde, azul y amarillo. Dispones, además, de tres tipos de pantalones: largo, medio y corto.

¿De cuántas maneras distintas podrías vestirte para salir a correr?

La respuesta la facilita el concepto de producto cartesiano, que con certeza estudiaste en los primeros cursos de matemáticas. Un breve repaso…

Sean dos conjuntos independientes A y B, al conjunto de todas las agrupaciones posibles que se forman tomando un elemento de A y otro de B, se le denomina producto cartesiano de A y B y se denota como A x B.

Además, el número de elementos de que consta A x B es el número de elementos de A multiplicado por el número de elementos de B.

Para referirnos al número de elementos de un conjunto recurrimos al término cardinal, de modo que:

card(A x B) = card(A) x card(B)

Este concepto es extensible a más de dos conjuntos: el cardinal del producto cartesiano de varios conjuntos es el producto de los cardinales individuales.

En nuestro ejemplo, si tenemos cuatro tipos de camisetas y tres de pantalones, dispondremos de 12 maneras diferentes de vestirnos.

Nuestra labor pythonesca va a ser listar todos estos pares y para ello recurriremos a la técnica de las listas por comprensión que presentamos en los últimos artículos y que ahora refinaremos de un modo particular.

Comencemos definiendo las estructuras:

>>> camisetas = {'blanca', 'verde', 'azul', 'amarilla'}
>>> pantalones = {'largo', 'medio', 'corto'} 

He elegido conjuntos por mayor similitud conceptual, pero, naturalmente, puedes emplear cualquier tipo de secuencia como las listas o las tuplas.

Creemos nuestra lista por comprensión:

1) Recorremos el iterable:

for c in camisetas for p in pantalones

Esta es el punto crítico al que quería llegar. En las listas por comprensión podemos anidar tantos for como deseemos.

2) A la izquierda de lo anterior escribimos lo que deseamos obtener:

(c, p) for c in camisetas for p in pantalones

He optado por agrupar cada par en una tupla.

3) A la derecha del todo escribimos la condición de filtrado.

En este ejemplo no hay ninguna, por lo que no es aplicable.

4) Rodeamos toda la expresión entre llaves y ya tenemos creada la lista por comprensión.

>>> [(c, p) for c in camisetas for p in pantalones]
[('verde', 'corto'), ('verde', 'medio'), ('verde', 'largo'), 
('amarilla', 'corto'), ('amarilla', 'medio'), ('amarilla', 'largo'), 
('azul', 'corto'), ('azul', 'medio'), ('azul', 'largo'), 
('blanca', 'corto'), ('blanca', 'medio'), ('blanca', 'largo')]

Programar con eficacia y eficiencia supone armarse con una buena colección de usos típicos para resolver problemas frecuentes, como por ejemplo hallar el producto cartesiano. Las listas por comprensión, sin duda, figurarán en muchos de esos usos.

Javier Montero Gabarró


Python: El producto cartesiano


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.

Armonización de la escala mayor – 5

Objetivo: mostrar ejemplos prácticos del cálculo de la familia de acordes tríada diatónicos.

Hemos llegado a una importante conclusión: en una tonalidad mayor cualquiera la familia de acordes tríadas diatónicos, es decir, los acordes de tres notas que nos aparecen utilizando los grados de la escala, responde a la siguiente estructura:

I – IIm – IIIm – IV – V – VIm – VIIº

O bien, empleando minúsculas para los acordes menores:

I – ii – iii – IV – V – vi – viiº

Memorizando esta relación y conociendo cómo se construye la escala mayor, es prácticamente inmediata la deducción de acordes diatónicos en cualquier tonalidad. Veamos algunos ejemplos.

Supongamos que quiero componer una canción en Re mayor, ¿qué acordes tríada inmediatos tengo a mi disposición?

Comenzamos construyendo la escala de Re mayor:

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

De modo que los acordes buscados son:

D – Em – F#m – G – A – Bm – C#º

No hay más misterio, así de sencillo.

Otro ejemplo: deduzcamos los acordes diatónicos de Fa mayor.

Fa mayor: F – G – A – Bb – C – D – E – F

F – Gm – Am – Bb – C – Dm – Eº

A veces las preguntas pueden tomar formas distintas…

Has compuesto una canción para tu banda en Mi bemol mayor y el bajista te pregunta si el Do es mayor o menor.

Construímos la escala de Mi bemol mayor:

Mi bemol mayor: Eb – F – G – Ab – Bb – C – D – Eb

De modo que los acordes diatónicos son:

Eb – Fm – Gm – Ab – Bb – Cm – Dº

Contéstale al bajista que el acorde es Do menor; que cuide la tercera en su groove sobre ese acorde. Recomiéndale también que estudie algo de armonía.

En la siguiente entrega extenderemos nuestra querida familia de acordes diatónicos deduciendo las tétradas o cuatríadas, acordes de cuatro notas. Eso ampliará tu abanico de opciones ofreciéndote la posibilidad de enriquecer y dar otro colorido a tus creaciones.

Javier Montero Gabarró


http://elclubdelautodidacta.es/wp/2013/05/armonizacion-de-la-escala-mayor-5/


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 de todos los artículos de armonía.

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