El método de los hábitos incrementales

Para poder dominar cualquier actividad que te propongas necesitas constancia. Seguro que has oído en numerosas ocasiones algo parecido a «es mejor dedicarle veinte minutos cada día que tres horas ocasionalmente».

Sea lo que sea: aprender un idioma, tocar un instrumento, programar con soltura,… Cualquier cosa que te propongas aprender requiere aproximarse a ella del modo en el que uno cuidaría un huerto: regándolo día a día.

Es algo que ya sabes de sobra: un largo camino se recorre paso a paso.

No hablaré más de lo que es obvio. Voy a dar una vuelta de tuerca a este concepto sencillo y lo enfocaré hacia el polifacetismo. Si eres de los que orientan su vida en torno al aprendizaje continuo en numerosos campos este artículo es para ti.

La idea sigue siendo la misma: trabaja cada día un poco en cada una de las actividades que te propongas y, antes de que te des cuenta, tendrás un buen nivel en cada una de ellas. Cuida de todas tus plantas día a día y con buena probabilidad recogerás una buena cosecha.

Los que disfrutamos de los placeres del polifacetismo nos las ingeniamos recurriendo a numerosos trucos para tratar de llevar todo adelante. Voy a presentarte aquí una técnica extremadamente sencilla que yo utilizo y que he bautizado con el nombre del método de los hábitos incrementales.

Puedes emplearla no sólo para cuestiones de aprendizaje a medio y largo plazo, sino para lograr objetivos de cualquier otra índole.

Como herramientas sólo necesitas un cuaderno y un lapicero. Vamos a crear listas y cualquier mecanismo que te permita gestionarlas te servirá. Yo empleo un programa de ordenador que está especializado en la gestión de tareas y sobre el que he desarrollado numerosas técnicas, además de esta. Hablaré de él en otro momento; para lo que te quiero explicar hoy será suficiente contar con lápiz y papel.

Para que comprendas el modo en el que la palabra incremental entra en juego, voy a contarte la metodología que empleo practicando mi deporte favorito, salir a correr.

Comienzo corriendo muy despacio y muy poco tiempo. No tengo el mínimo reparo en permanecer varias semanas así, dando tiempo a que mi organismo -músculos, tendones, articulaciones, corazón, pulmones- se adapten a la nueva actividad.

Cuando siento que el cuerpo está preparado, realizo un pequeño incremento en exigencia. En mi caso, puede ser hacer tiradas dos minutos y medio más largas que la semana anterior. Es sólo un pequeño incremento en dificultad y el cuerpo se podrá adaptar sin problemas. Cada semana incremento dos minutos y medio el tiempo de mis salidas individuales.

Es muy importante escuchar permanentemente lo que nos dice el cuerpo. En ocasiones me doy cuenta de que aún no está asimilando correctamente los incrementos en esfuerzo, así que la siguiente pregunta es obligada cada semana:

¿Incremento, mantengo o decremento?

Si el cuerpo aún necesita más tiempo, planifico la semana manteniendo la misma actividad que la anterior, sin ningún incremento. Incluso, si lo estimase adecuado, podría plantearme dar un pequeño paso atrás y decrementar la duración del ejercicio.

Ese es el modo en el que puedo disfrutar de mi actividad física, día a día, mejorando cada semana y con el mínimo riesgo de lesiones, pues doy tiempo suficiente a que el cuerpo se adapte antes de exigirle un nuevo esfuerzo. Cuando no quiero incrementar más el tiempo, me planteo un aumento, por ejemplo, en velocidad muy gradualmente. Resulta verdaderamente divertido y estimulante entrenar así.

Ya tenemos la esencia del método de los hábitos incrementales. Coge tu cuaderno, pon la fecha de hoy en una página y escribe tu primer hábito orientado hacia una actividad en la que pretendas mejorar o un objetivo que quieras lograr.

Por ejemplo, quiero mejorar mis habilidades con la guitarra. Trabajar las escalas, día a día, me hará un mejor improvisador. Así que escribo:

– Estudiar los patrones melódicos de la escala mayor.

Sólo esto, nada más. Mi compromiso ahora es que todos los días, disciplinada y constantemente, voy a dedicar un tiempo determinado a hacer este trabajo. No indico cuánto tiempo, pero debe ser el suficiente que me deje la sensación de haber hecho algo provechoso.

Puedo hacer otras actividades, desde luego, pero mi compromiso, de momento, está sólo en lo que hay en la lista.

Tras un par de días comprobando que soy capaz de ser disciplinado y que llevo a rajatabla mi plan, me planteo la entrada de una nueva actividad en mi lista.

Escribo una nueva lista con la fecha de hoy con las siguientes tareas:

– Estudiar los patrones melódicos de la escala mayor.
– Leer literatura inglesa.

Cada día escribo una nueva hoja con la lista de tareas actuales con las que estoy comprometido a dedicar un tiempo diario. De cuando en cuando, me voy planteando la siguiente pregunta:

¿Incremento, mantengo o decremento?

Gradualmente, en función de nuestra capacidad y tiempo disponible, nuestra lista polifacética irá creciendo hasta un punto en que alcance el equilibrio. Día a día iremos reafirmando hábitos que nos harán crecer en todos nuestros campos.

Hay días en los que, inevitablemente, no podremos cumplir con todo (o incluso con nada), pero al menos trataremos de hacer siempre nuestro mejor esfuerzo. En esos casos, en la lista del día siguiente, incluiremos, junto a la tarea, y entre paréntesis, un número indicando el número de días que llevamos sin realizar esa actividad.

Debemos ser cuidadosos con el contenido de nuestra lista de hábitos. El tiempo es limitado y nuestras inquietudes, muchas. Escribe en la lista sólo aquellas actividades que más valor te van a dar. Concentra tus energías, fundamentalmente, en lo que es verdaderamente importante y no dudes en retirar de tu planning las tareas que haga falta si necesitas hacer hueco para otras más valiosas.

Prueba esto un par de meses, si te atreves, y cuéntame tu experiencia…

No es magia… Es el resultado de sembrar y cuidar de la cosecha cada día.

Javier Montero


El método de los hábitos incrementales


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

BitBite Python

Inauguramos una nueva serie que complementará los capítulos teóricos de programación en Python y que estará enfocada al aspecto más práctico del lenguaje: la elaboración de programas que solucionen problemas reales.

Hasta ahora, nos hemos limitado a una exposición «atómica» de los elementos del lenguaje, en la que cada concepto se presentaba, de modo aislado, del modo más simple que permitiera su comprensión. La herramienta principal ha sido el intérprete interactivo, el entorno perfecto y más rápido para experimentar cada técnica.

Bajo el nombre BitBite Python realizaremos programas completos que resolverán problemas comunes con los que se suele enfrentar un programador. No necesariamente todos serán de utilidad práctica directa, pero aún así las técnicas aprendidas enriquerecerán el bagaje de recursos de cada uno y podrán ser aplicadas en otros contextos.

Cada concepto presente en BitBite Python habrá sido tratado previamente dentro de los capítulos teóricos. A medida que vayamos profundizando en estos irán apareciendo en la sección práctica.

Nos vemos en BitBite Python

Javier Montero

Python – Capítulo 27: Funciones con argumentos por defecto

Continuando con el tema de las funciones en Python, voy a mostrarte hoy una técnica interesante que permite facilitar argumentos por defecto a una función. Veamos qué significa esto.

En capítulos anteriores vimos el uso de argumentos en las funciones. Recuerda la función praderazo(), que mostraba un texto detérminado repetidas veces y enmarcado por un símbolo a elegir.

Su definición era la siguiente:

def praderazo(veces,simbolo):
    print(simbolo*42)
    for n in range(veces):
      print(simbolo,'La casa de la pradera, pedazo serie...',simbolo)
    print(simbolo*42)

veces y simbolo son los argumentos de la función. Ejemplos de invocación posibles podrían ser:

>>>praderazo(5,'+')

o

>>>praderazo(100,'&')

La función, para ser invocada correctamente, necesita forzosamente dos argumentos. Decimos que veces y simbolo son argumentos requeridos.

Esta llamada generaría un error, como podemos comprobar:

>>> praderazo(5)
Traceback (most recent call last):
  File "<pyshell#4>", line 1, in <module>
    praderazo(5)
TypeError: praderazo() takes exactly 2 arguments (1 given)

Lo que nos dice el mensaje de error es que praderazo() requiere exactamente dos argumentos y sólo uno ha sido facilitado.

Observa ahora esta nueva definición de praderazo():

def praderazo(veces,simbolo='+'):
    print(simbolo*42)
    for n in range(veces):
      print(simbolo,'La casa de la pradera, pedazo serie...',simbolo)
    print(simbolo*42)

Fíjate en como está descrito el argumento simbolo, especificando directamente un valor.

Decimos que simbolo es un argumento por defecto y el valor especificado es el valor que tomará por defecto en caso de que no se facilite uno concreto.

Ya no es necesario especificar el segundo argumento, si no queremos. En caso de que no lo hagamos, simbolo tomará el valor por defecto (el signo ‘+’).

>>> praderazo(5)
++++++++++++++++++++++++++++++++++++++++++
+ La casa de la pradera, pedazo serie... +
+ La casa de la pradera, pedazo serie... +
+ La casa de la pradera, pedazo serie... +
+ La casa de la pradera, pedazo serie... +
+ La casa de la pradera, pedazo serie... +
++++++++++++++++++++++++++++++++++++++++++

Si no queremos usar el valor por defecto, hay que recurrir a la especificación completa:

>>> praderazo(3,'%')
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% La casa de la pradera, pedazo serie... %
% La casa de la pradera, pedazo serie... %
% La casa de la pradera, pedazo serie... %
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

Es importante tener en cuenta que los argumentos por defecto deben figurar siempre después de los requeridos, y nunca antes. Supongamos que hubiéramos querido dejar por defecto veces y requerido simbolo:

>>> def praderazo(veces=5,simbolo):
    print(simbolo*42)
    for n in range(veces):
      print(simbolo,'La casa de la pradera, pedazo serie...',simbolo)
    print(simbolo*42)
    
SyntaxError: non-default argument follows default argument

Obtendríamos un error sintáctico reflejando que hay argumentos que no son por defecto después de los que sí lo son. Si no fuera así Python podría liarse a la hora de saber qué argumentos son unos u otros.

La definición correcta habría sido:

>>> def praderazo(simbolo,veces=5):
    print(simbolo*42)
    for n in range(veces):
      print(simbolo,'La casa de la pradera, pedazo serie...',simbolo)
    print(simbolo*42)

Veamos un nuevo ejemplo:

>>> def mifuncion(a,b=2,c=3):
  print(a+b+c)

Toma tres parámetros y calcula la suma de ellos. Si no especificamos ni b ni c tomará sus valores por defecto.

Invoquemos a la función de diversas maneras:

>>> mifuncion(4,5,6)
15

>>> mifuncion(6,4)
13

En este segundo ejemplo, los dos primeros argumentos corresponden a a y a b. Como no hemos especificado c, toma su valor por defecto.

>>> mifuncion(5)
10

Aquí hemos indicado sólo a, el único que es requerido. Los demás argumentos toman sus valores por defecto.

Para concluir, te propongo un ejercicio: adapta la función praderazo() para que el texto a enmarcar sea elegible por el usuario como argumento.

Pista: recuerda la función len(), que determina la longitud de una cadena.

Javier Montero


Python – Capítulo 27: Funciones con argumentos por defecto


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

Construcción de acordes – 3: Suspendidos

En la entrega anterior aprendimos a construir los acordes mayor, menor, aumentado y disminuido. Definen las cuatro triadas básicas existentes. Hoy veremos dos más, que constituyen los denominados acordes suspendidos.

Los acordes suspendidos

Un acorde suspendido no es más que un acorde mayor en el que la tercera ha sido sustituida por un grado próximo (la cuarta o la segunda), provocando cierta atmósfera de «suspensión» que invita a la devolución del acorde a su estado normal.

Si sustituimos la tercera de una triada mayor por la cuarta obtenemos el acorde de cuarta suspendida, indicado como sus4. Si empleamos la segunda tenemos el acorde de segunda suspendida, sus2.

La suspensión con la cuarta es la más común, provocando una tensión característica que suele resolverse pronto en el acorde mayor. Por eso, si en vez de sus4 ponemos simplemente sus, estamos refiriéndonos, por defecto, al de cuarta suspendida.

El acorde de cuarta suspendida

Su fórmula es, como hemos explicado:

1 – 4 – 5

Veamos, por ejemplo, Csus4 (o simplemente Csus):

Comenzamos creando la escala de Do mayor:

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

y recuperamos los grados 1, 4 y 5:

Csus4: C – F – G

Otro ejemplo: construyamos Asus4.

La escala de La mayor es:

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

por lo que

Asus4: A – D – E

El acorde de segunda suspendida

En este caso, la tercera es sustituida por la segunda:

1 – 2 – 5

Tomemos las escalas mayores indicadas en el ejemplo anterior y recuperemos los grados 1, 2 y 5:

Csus2: C – D – G

Asus2: A – B – E

Sumamente sencillo. Como vemos, podemos construir cualquier acorde simplemente conociendo su fórmula. En la próxima entrega empezaremos ya con las cuatriadas. Asegúrate de comprender perfectamente lo visto hasta aquí antes de proseguir con su estudio.

Javier Montero


Construcción de acordes – 3: Suspendidos


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

LaTeX – Capítulo 16: Insertando imágenes

Ha llegado el momento de aprender a insertar imágenes en nuestros documentos. Mostraremos los comandos básicos y, como aplicación práctica, editaremos en LaTeX los cinco primeros capítulos del curso de mIRC, algo que ya iniciamos en el número 12 con los tres primeros.

Para pasar a LaTeX el capítulo 4, que contiene una lista simple, ha sido necesario recurrir al entorno \begin{itemize} … \end{itemize} que ya tratamos en su día. En el capítulo 5 aparecen las primeras imágenes.

Para trabajar con imágenes lo primero que vamos a hacer es cargar el paquete graphicx mediante la instrucción

\usepackage{graphicx}

escrita en el preámbulo.

Si tu entorno LaTeX no lo tiene ya instalado deberás descargarlo. Consulta los detalles de tu distribución para ver cómo hacerlo. En el caso de MikTeX, que es la que uso bajo Windows, no es necesario hacer nada, pues se ocupa automáticamente de su descarga por Internet tan pronto se da cuenta de que no lo tiene.

Una vez cargado el paquete ya tenemos a nuestra disposición el comando con el que podremos cargar imágenes:

\includegraphics{nombre_del_fichero}

Como argumento, entre llaves, facilitamos el nombre de fichero. No es necesario indicar su extensión y debe ser de un formato compatible con LaTeX (png o jpg si convertimos a pdf).

Si el fichero gráfico está en el mismo directorio que el código fuente, no será necesario especificar ningún path, únicamente su nombre.

El siguiente pdf incluye los cinco primeros capítulos del curso de mIRC. Descarga el código fuente y estudia el código que lo produce. Fíjate, en particular, en la carga del paquete graphicx en el preámbulo y en el uso de \includegraphics en el capítulo 5.

LaTeX toma las decisiones oportunas de formato en función de las dimensiones de las imágenes, ajustando los párrafos según convenga. No te preocupes ahora excesivamente por estas cuestiones; conforme vayamos adquiriendo nuevos recursos iremos refinando el diseño.

Javier Montero


LaTeX – Capítulo 16: Insertando imágenes


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

Conexión al IRC Hispano en Ubuntu con XChat

Existen diversos clientes IRC disponibles para Linux. Mi favorito es, sin duda, XChat. También dispone de versión para Windows, pero para este sistema operativo siempre me he decantado por mIRC, excelente por su capacidad para programar scripts.

En la práctica de hoy instalaremos XChat 2.8.8 sobre Ubuntu 11.10 (Oneiric Ocelot) y lo configuraremos para conectarnos a la red IRC-Hispano.

Instalando XChat

Existen diversos modos de instalar Xchat en Ubuntu. Voy a explicar aquí a hacerlo a través del Centro de software de Ubuntu, presuponiendo que el equipo está conectado a Internet.

Arrancamos el Centro de Software desde el lanzador de Unity y escribimos xchat en el cuadro de texto de búsqueda.

Seleccionamos XChat IRC y pulsamos sobre Instalar.

Para proceder con la instalación necesitaremos permisos de administración, por lo que deberemos facilitar la contraseña del administrador cuando se nos solicite.

Configuración de XChat

Una vez instalado, arrancamos XChat buscándolo desde el botón de Inicio de Unity y configuramos los datos de conexión.

Tan sólo nos resta seleccionar la red IRC-Hispano. La buscamos entre las redes disponibles y nos encontramos una sorpresa: no figura entre ellas.

Pulsamos sobre el botón Añadir, escribimos IRC-Hispano y pulsamos Enter. La red nueva nos aparecerá en la lista.

Ahora debemos configurar la red indicando, al menos, algún servidor perteneciente a ella. Pulsamos sobre el botón Editar y modificamos la entrada por defecto para que figure el servidor siguiente:

irc.irc-hispano.org/6667

El número 6667 se refiere al puerto TCP en el que escuchan la mayor parte de los servidores IRC.

No hace falta añadir más servidores. El que hemos especificado se ocupará de redirigirnos al que la propia red estime conveniente.

Si lo deseamos, podemos activar la casilla Conectarse automáticamente al inicio, de modo que cuando arranquemos XChat se nos conecte inmediatamente a IRC-Hispano.

That’s all folks

Y eso es todo… Cerramos la ventana y pulsamos sobre el botón Conectar. En lo sucesivo, si hemos activado la casilla de verificación anterior, la conexión se efectuará inmediatamente.

Y podemos entrar en nuestro canal favorito:

Sea cual sea tu sistema operativo, utiliza el IRC. Le da 1000 vueltas a cualquier otro sistema de chat.

Javier Montero


Conexión al IRC Hispano en Ubuntu con XChat


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

Construcción de acordes – 2: Las triadas

En Construcción de acordes – 1 esbozamos la metodología que seguiríamos para construir todo tipo de acordes conociendo su fórmula y empleando la escala mayor elaborada sobre la fundamental como sistema de referencia.

En el capítulo de hoy aprenderemos a conocer el resto de las triadas: menor, disminuida y aumentada.

Cuatro tipos de triadas

Las triadas son acordes que están formados por tres notas. Existen cuatro tipos básicos de triadas: mayor, menor, aumentada y disminuida.

Mayor

La triada mayor, o acorde mayor, ya la comentamos en el artículo anterior. Recordemos aquí simplemente su fórmula:

Mayor: 1 – 3 – 5

Menor

La triada menor, o acorde menor, se obtiene bajando un semitono la tercera del acorde mayor.

Su fórmula la indicamos del siguiente modo:

Menor: 1 – b3 – 5

Cuando digo bemol 3 lo que estoy queriendo decir es que calculo la tercera y la bajo un semitono. Los ejemplos siguientes te aclararán esto.

Comencemos construyendo el acorde Do menor. Como siempre, el primer paso es desplegar la escala correspondiente mayor, Do mayor. Voy a emplear ya directamente la notación anglosajona, a estas alturas no debe suponer ya ningún problema:

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

Aplicamos la fórmula: 1 – b3 – 5

1: C
b3: Eb (Mi bemol; observa que he bajado un semitono la tercera, que es Mi)
5: G

Cm: C – Eb – G

Fíjate cómo se indica Do menor empleando cifrado moderno: Cm

Otro ejemplo: Am (La menor)

Construimos la escala La mayor por el procedimiento que ya conoces:

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

Aplicamos la fórmula:

1: A
b3: C (Si a Do sostenido le quito un semitono, se queda Do natural)
5: E

Por lo tanto:

Am: A – C – E

Aumentada

La triada aumentada mantiene la siguiente estructura:

1 – 3 – #5

Es como la triada mayor, pero aumentando un semitono la quinta.

Empleando el cifrado moderno, este acorde se simboliza agregando un + o las letras aug (de augmented) a la fundamental.

Por ejemplo, calculemos las notas de Do aumentado, C+ o Caug:

Retomamos la escala:

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

Y extraemos los grados apropiados:

1: C
3: E
#5: G# (he aumentado un semitono la nota Sol, quinto grado de la escala)

C+: C – E – G#

Otro ejemplo, La aumentado, A+:

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

1: A
3: C#
#5: E# (observa que escribo E#, en lugar de F. Fa y Mi sostenido son el mismo sonido (enarmónicos), pero la forma correcta de llamarlo, en este contexto, es Mi sostenido).

A+: A – C# – E#

Disminuida

La triada disminuida se obtiene disminuyendo en un semitono la tercera y la quinta del acorde mayor. Su fórmula es:

1 – b3 – b5

Su fórmula, en cifrado moderno, es la fundamental seguida de las letras dim (diminished) o del símbolo de grado °.

Una advertencia: la cuatriada disminuida emplea la misma notación. Mucha gente prefiere emplear dim7 para la cuatriada y simplemente dim para la triada. El símbolo de grado, °, suele emplearse tanto para uno como para otro.

Calculemos Do disminuido, Cdim o :

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

1: C
b3: Eb
b5: Gb

C°: C – Eb – Gb

Y ahora La disminuido:

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

1: A
b3: C
b5: Eb

A°: A – C – Eb

En la próxima entrega, antes de que empecemos con los acordes de cuatro notas, ampliaremos nuestra colección con dos nuevas triadas que, aunque no resultan de la superposición de dos terceras, como estas, son de mucha utilidad en la composición.

Javier Montero


Construcción de acordes – 2: Las triadas


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

Python – Capítulo 26: Funciones que devuelven valores

En entregas anteriores explicamos el concepto de función y diseñamos algunos ejemplos sencillos. Vimos cómo utilizar una función para realizar una determinada tarea que presumiblemente volvería a repetirse, permitiéndonos así la reutilización del mismo código dentro del programa. También ilustramos el paso de argumentos, aquellos datos que facilitábamos a la función y que luego serían procesados dentro de su cuerpo.

Todos los ejemplos compartían algo en común: realizaban una tarea concreta (presentar información en pantalla), pero no devolvían ningún valor al ser invocadas.

Ya conoces algunas funciones en Python que devuelven valores. Por ejemplo, recuerda la función int(), que convertía una cadena de caracteres en un número entero, o la función len(), que devolvía la longitud de una cadena.

Los valores que devuelven las funciones pueden ser capturados y esto típicamente se hace asignando una variable, pudiendo formar parte de una expresión numérica.

longitud = len('La casa de la pradera')

Esta instrucción asignaría el valor numérico 21 a la variable longitud.

Los valores que devuelven las funciones no tienen que ser necesariamente numéricos.

Voy a mostrarte cómo hacer para que una función devuelva un valor. Crearemos una que admita como argumento un número natural y que devuelva la suma de todos los naturales que hay hasta él inclusive. Es decir, si, por ejemplo, le facilitamos como argumento un 5, nos devuelva la suma:

1 + 2 + 3 + 4 + 5 = 15

Podríamos hacer un algoritmo para realizar el cálculo empleando un bucle, pero no va ser necesario. Si recordáis las enseñanzas en la escuela, hay una fórmula directa para calcular la suma de todos los términos de una progresión aritmética de diferencia uno:

sp=\frac{n(n+1)}{2}

Ya estamos en condiciones de crear nuestra función:

Abre IDLE o el intérprete interactivo y escribe el siguiente código:

>>> def sumaprogresion(n):
       sp=n*(n+1)//2
       return sp

La función toma como argumento un valor que almacena en la variable n. Este valor es utilizado para el cálculo de la suma, almacenando el resultado en la variable sp.

Fíjate en la instrucción

return sp

Esta línea es la que indica qué valor devolverá la función. En este ejemplo, lo que contenga la variable sp, que es la que almacena el resultado del cálculo de la suma de la progresión.

Para realizar el cálculo he empleado la división entera (//), en vez de la ordinaria (/). Así evito que se escriba el resultado con un punto decimal.

Probémoslo:

>>> sumaprogresion(5)
15

Recuerda que esto es equivalente a hacer

>>>print(sumaprogresion(5))

En el intérprete interactivo te puedes ahorrar el print, pero no así cuando escribas un programa fuera de él.

Veamos otro ejemplo:

>>> print('La suma de los 1000 primeros números naturales es', sumaprogresion(1000))
La suma de los 1000 primeros números naturales es 500500

Así de simple.

Javier Montero


http://elclubdelautodidacta.es/wp/2011/12/python-capitulo-26-funciones-que-devuelven-valores/


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

mIRC – Capítulo 16: ¿Me enseñas la invitación?

Una de las posibilidades que tenemos como operadores de un canal es hacer que sólo se pueda acceder a él a través de una invitación personalizada. Por lo general, los canales IRC suelen estar abiertos para todos, pero en algunos casos puede ser conveniente controlar su acceso. Hay varias maneras de lograr esto. En el capítulo de hoy aprenderemos cómo hacerlo mediante invitaciones.

El comando /mode, nuevamente

Ya conoces el comando /mode para definir los modos de operación del canal: con el modificador +t evitábamos que alguien que no fuera operador del canal pudiese cambiar el topic a su antojo; con +n prohibíamos el envío al canal de mensajes externos.

El modificador para hacer un canal accesible sólo mediante invitación es +i:

/mode #nombre_de_canal +i

Para desactivar esta funcionalidad, hacemos:

/mode #nombre_de_canal -i

Matando tres pájaros de un tiro

En la siguiente figura, sostenuto ha definido el canal #probilandia accesible mediante invitación:

Observa cómo, mediante una sola operación, ha establecido los tres modos:

/mode #probilandia +nti

Ya sabes que esto mismo lo podíamos haber realizado desde Channel Central. Fíjate en el efecto del comando anterior:

Operatividad del modo invitación

Imaginemos a nuestro ya conocido plutonio, ignorante de los nuevos conocimientos adquiridos por sostenuto, tratando de unirse a su canal:

/join #probilandia

Su gozo en un pozo:

#probilandia unable to join channel (invite only)

No se le ha permitido su acceso porque el canal requiere invitación.

Para invitar a plutonio, sostenuto debe proceder del siguiente modo:

/invite plutonio #probilandia

Momento en el cual plutonio recibe la siguiente comunicación:

* sostenuto invites you to join #probilandia

Puertas abiertas: ya puede acceder con el comando

/join #probilandia

Invitaciones de usar y tirar

Si plutonio abandona el canal, pierde su invitación a acceder a él. En ese caso, sostenuto deberá enviarle una nueva si quiere volver a entrar.

Y eso es todo por hoy. Puedes invitarme a una cerveza cuando quieras si esto te ha resultado útil…

Javier Montero


mIRC – Capítulo 16: ¿Me enseñas la invitació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

MuseScore #14: Agregando intervalos

MuseScore incorpora un mecanismo que facilita la introducción rápida de armonías. Podemos agregar intervalos directamente sobre una nota determinada: la aplicación se ocupará de calcular la altura final por nosotros.

Arranca MuseScore y practica las siguientes técnicas…

Agregando intervalos ascendentes

Comenzamos seleccionando la nota sobre la que vamos a añadir el intervalo armónico, de modo que aparezca con la cabeza azul.

A continuación pulsamos la tecla Alt seguida del número que representa a la amplitud del intervalo. Por ejemplo:

Alt-2: Intervalo de segunda ascendente
Alt-3: Intervalo de tercera ascendente

Y así sucesivamente hasta el intervalo de novena con Alt-9.

Los intervalos son diatónicos

Es importante entender que los intervalos se agregarán diatónicamente. Es decir, la nota destino formará parte de la tonalidad definida en la armadura. Así pues, por ejemplo, en una armadura sin alteraciones, una tercera sobre un Do será una tercera mayor, mientras que sobre un Re será menor.

Si necesitáramos modificar la cualidad del intervalo bastaría con, una vez agregado, pulsar las teclas flecha arriba o flecha abajo para subir o disminuir la nota un semitono.

Por ejemplo, si en el ejemplo anterior, con la armadura sin alteraciones, si sobre el Do quisiéramos construir una tercera menor, habría que pulsar Alt-3 (obteniendo, en este caso, una tercera mayor) y a continuación pulsaríamos flecha abajo para que el Mi apareciese bemol.

Si sobre el Re quisiéramos una tercera mayor, en cambio, pulsaríamos Alt-3 (obteniendo una tercera menor), seguido de flecha arriba para transformar Fa en Fa#.

Agregando intervalos descendentes

Para agregar un intervalo descendente, usamos la tecla Shift seguida del número que represente al intervalo.

Shift-2: Intervalo de segunda descendente
Shift-3: Intervalo de tercera descendente

Y así sucesivamente hasta la novena descendente con Shift-9.

Agregando varios intervalos

Cuando agregamos sobre una nota un intervalo, la selección se cambia a la última nota escrita. De este modo, supongamos, por ejemplo, que deseamos construir el acorde Fa séptima mayor (Fmaj7) en la tonalidad de Do mayor. Comenzamos insertando la nota Fa (o seleccionándola si ya existía) y pulsamos Alt-3 tres veces seguidas. Agregando tres terceras iríamos obteniendo, sucesivamente, la tercera, la quinta y la septima del acorde.

Practica esta técnica hasta dominarla. Con la experiencia te irás dando cuenta de que la introducción de notas usando el teclado es bastante más ágil que con el ratón.

Javier Montero


MuseScore #14: Agregando intervalos


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

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