LaTeX – Capítulo 19: Introducción al modo matemático

Empecé a estudiar LaTeX ante la necesidad de generar documentos con fórmulas matemáticas y apariencia profesional. Pero al poco me di cuenta de que con LaTeX podía lograr mucho más que eso y, hoy día, es mi principal opción a la hora de preparar documentos elegantes casi de cualquier tipo.

Ya conoces lo suficiente de LaTeX para que comencemos a hablar del modo matemático. Voy a explicarte hoy cómo entrar en él e introduciremos algunas ecuaciones sencillas de ejemplo. En sucesivos artículos, a la par que seguiremos tratando el diseño de documentos de propósito general, iremos adentrándonos en los procedimientos para escribir fórmulas matemáticas simples y complejas.

Lo primero que debes saber es que existen dos modos de introducir fórmulas: en línea y en párrafos independientes. A su vez, este último tipo puede mostrarnos ecuaciones numeradas o no. Echa un vistazo al siguiente pdf para asegurarte de qué comprendes de qué estamos hablando.

Una ecuación en línea es aquella que forma parte de un párrafo normal, insertándose entre texto típico. Las dos primeras ecuaciones, correspondientes a la longitud de una circunferencia y al área del círculo, son de este tipo.

Para escribir ecuaciones en línea, debemos iniciarlas con \( y concluirlas con \).

En nuestro ejemplo, escribimos la longitud de la circunferencia del siguiente modo:

\(2\pi r\)

Y el área del círculo:

\(\pi r^2\)

No te preocupes ahora si no comprendes lo que figura dentro, lo iremos explicando a su momento. Lo que debe quedarte claro ahora es cómo entramos en el modo matemático.

Antiguamente, en los tiempos de TeX, lenguaje subyacente a LaTeX y su precursor, se empleaba el signo $ como delimitador de ecuaciones en línea. La mayor parte de los sistemas LaTeX mantienen esa compatibilidad aún, pero debes saber que la forma correcta de hacerlo es la explicada aquí.

El siguiente bloque de fórmulas representa la resolución de una sencilla ecuación de primer grado. Observa cómo, a diferencia del ejemplo anterior, cada una está en un párrafo independiente.

Para lograr esto, basta con precederlas por \[ y concluirlas con \]. Es decir, empleamos corchetes en lugar de paréntesis.

\[2x-3=7\]
\[2x=7+3\]
\[2x=10\]
\[x=\frac{10}{2}\]
\[x=5\]

Al igual que el $ delimitaba ecuaciones en línea a la antigua usanza, el doble dólar, $$, se utilizaba para escribir matemáticas en párrafos independientes

Finalmente, este tipo de ecuaciones pueden aparecer numeradas, tal como nos las encontraríamos en cualquier publicación matemática, de modo que podamos referenciarlas fácilmente. Obsérvalo en las dos últimas fórmulas del ejemplo.

Para lograr esto debemos incluirlas dentro de un entorno denominado equation. El sistema se ocupará de la numeración automática.

\begin{equation}
ax^2+bx+c=0
\end{equation}
\begin{equation}
ax^3+bx^2+cx+d=0
\end{equation}

Este es el fichero .tex que genera el documento que nos ha servido de ejemplo.

En sucesivas entregas veremos el modo matemático con todo lujo de detalles. Espero que esta introducción haya despertado tu curiosidad…

Javier Montero Gabarró


http://elclubdelautodidacta.es/wp/2012/02/musescore-9-utilizacion-de-plantillas/


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

Mi vida organizada

Quiero presentarte un programa que utilizo desde hace ya varios años y que constituye uno de mis pilares para la gestión personal. No se trata de un simple gestor de tareas: es lo que considero una meta-herramienta, una herramienta para hacer herramientas de productividad. Estoy hablando de MyLifeOrganized (MLO).

No acostumbro a hacer publicidad de programas comerciales; tengo bastante preferencia, en este sentido, especialmente en el software de código abierto. Pero si estamos hablando de un programa sobresaliente, a un precio aceptable y con una licencia de instalación tan flexible, puedo permitirme hacer una excepción.

MLO cuesta alrededor de 45 dólares, unos 34 euros al cambio. Una de las razones que me animaron a comprarlo fue la flexibilidad de su licencia: el programa te permite la instalación en cinco equipos, siempre y cuando no los utilices simultáneamente. Con cinco instalaciones, podía instalarlo en mi equipo principal en casa, en el trabajo y en varios portátiles y aún así me sobraban licencias. Eso es algo que valoro mucho a la hora de elegir un software que me cueste dinero: la capacidad de instalarlo en los equipos de mi día a día sin tener que pagar más por ello.

Voy a hablar de MLO por un motivo muy concreto. He diseñado decenas de técnicas de productividad con ella y quiero compartir contigo algunas que creo que podrán ayudarte tanto como lo hacen conmigo.

Existen numerosos programas de gestión de tareas. De todos los colores y para todo tipo de plataformas. ¿Por qué MLO, entonces?

Conozco muchas metodologías de productividad personal. Hay herramientas software que se adaptan perfectamente a ellas. Pero lo hacen tan excelentemente que te dan muy poco margen para adaptarla a tus necesidades concretas.

Los métodos de productividad son buenos en tanto y cuanto funcionen. En cuanto dejan de hacerlo, tan pronto empiezas a detectar una caída en tu productividad, lo adecuado es cambiarlos. Pero sería muy costoso tener que gastar más dinero cada vez que cambie tu metodología de trabajo.

Lo que diferencia a MLO de la mayoría de las herramientas de su clase es precisamente su flexibilidad para responder a esos cambios de metodología. Sea cual sea tu sistema preferido de productividad personal, con MLO podrás seguirlo sin dificultad.

El software ofrece muchas sutilezas que son una auténtica delicia. Tendrás ocasión de conocerlas cuando las aplique en metodologías que presentaré por aquí. Podría hablarte, por ejemplo, del esquematizador (outliner) multinivel de dos paneles, el etiquetado de tareas (contextos), las numerosas posibilidades de personalización de la recurrencia de tareas, la gestión de las prioridades y la inigualable capacidad de filtrado que te permite presentar las tareas atendiendo a casi cualquier criterio que pase por tu imaginación.

Existe una versión de MLO freeware con algunas limitaciones. Puedes utilizarla sin compromiso todo el tiempo que desees y, en el caso de que te guste y necesites más, puedes plantearte adquirir la versión estándar o profesional.

En cualquier caso, MLO es simplemente una opción más. No es imprescindible que te compres el programa para aprovechar las técnicas que mostraré en el blog. Hasta la más compleja de ellas se puede llevar adelante simplemente utilizando lápiz y papel. O, si prefieres software gratuito y en entorno web, dispones de la ya presentada aquí Remember the Milk, otro de mis grandes pilares de productividad.

Y tener opciones, en este mundo tan cambiante en el que vivimos, es siempre nuestra mejor garantía personal…

Javier Montero Gabarró


Mi vida organizada


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 19: La casa invisible

En el capítulo anterior mostramos cómo camuflar relativamente nuestra presencia en el IRC haciendo uso del modo de usuario +i. Pero, ¿qué mejor sitio tiene un hombre invisible para vivir que una casa que también sea invisible? En el artículo de hoy aprenderemos a ocultar un canal, de modo que el servidor dé las mínimas pistas posibles de su existencia y sólo aquellos usuarios que conozcan su nombre puedan acceder a él.

Para hacer esto, IRC nos ofrece dos nuevos modos de operación de canal: +p (private) y +s (secret), que puedes activar, como ya sabes, a través de Channel Central o mediante el comando /mode. La diferencia entre ambos suele ser objeto de numerosas dudas.

No te compliques la vida entre uno u otro: elige, cuando lo necesites, siempre secret, que mejora algo la funcionalidad de private y lo deja obsoleto.

El sistema no te va a dejar, de hecho, activar ambos simultáneamente. Si tienes configurado uno y activas el otro, automáticamente desactivará el primero. Verifícalo.

Veamos con detalle que implica ocultar un canal.

En la figura que aparece a continuación vemos a nuestro querido amigo sostenuto recién conectado al IRC. Se ha instalado, plácidamente, en los canales #probilandia y #probandoespero.

Como es operador de ambos canales, podrá modificar los modos de operación a sus anchas.

Plutonio, recién conectado también, quiere comprobar en qué canales mora su amigo:

/whois sostenuto

Una de las líneas delata su presencia en en ambos canales:

sostenuto on @#probandoespero @#probilandia

La arroba le dice, además, que es operador de ambos.

Pero fíjate qué ocurre si sostenuto marca uno de los canales como privado:

/mode #probilandia +p

Si ahora plutonio lanza el mismo comando /whois, la respuesta es muy diferente:

sostenuto on @#probandoespero

Es más, si plutonio ejecuta ahora un /list, comando que, como sabes, genera un listado de todos los canales en la red, no sospechará de la existencia de #probilandia.

El comando /names también ignora la existencia del canal:

#probilandia End of /NAMES list

Ningún nombre listado, aunque hubiera en el canal usuarios con el modo de invisibilidad sin activar. Es, de hecho, la misma respuesta que si lo lanzas sobre un canal inexistente.

Nada aparenta entonces que haya un canal denominado #probilandia.

¿Nada?

¿Qué ocurre si plutonio lanza un /topic sobre el canal?

/topic #probilandia

#probilandia Canal de pruebas
#probilandia topic set by sostenuto on Fri Feb 17 21:24:11

El comando /topic, pese al modo privado de #probilandia, es capaz de detectar el tópico del canal.

Si, en vez de privado, hubiéramos marcado el canal como secreto, el resultado habría sido prácticamente idéntico: protección ante /whois, /list y /names. Sin embargo, la respuesta ante /topic mejoraría algo.

Sostenuto ejecuta:

/mode #probilandia +s

Plutonio chequea la respuesta ante /topic:

/topic #probilandia

#probilandia You're not on that channel

Algo ha mejorado, no nos da información del tópico, pues no estamos dentro del canal. Sin embargo, sabemos con certeza que el canal existe.

La invisibilidad del canal no es perfecta tampoco, como vemos. No obstante, es bastante buena en ambos modos, pues poco podemos hacer si no sabemos el nombre del canal.

Puedes unirte a un canal privado o secreto siempre que conozcas su nombre. Una vez dentro todos los comandos actúan del modo normal, como si el canal no estuviera protegido: aparece en el listado, en las consultas /whois y /names y devuelve el tópico.

Marcar un canal como secreto (o como privado, la diferencia es mínima) es una buena práctica a la hora de utilizar el IRC para reuniones de equipos en las que no deseáis que os molesten personas ajenas al grupo. Desde luego, puedes activar el modo de invitación o proteger el canal con contraseña, pero sí, además, lo marcas como secreto, el canal será verdaderamente discreto.

Javier Montero Gabarró


mIRC – Capítulo 19: La casa invisible


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

I will always love you

He comenzado el día con la triste noticia de la muerte de Whitney Houston. Apenado, he cogido la guitarra y he arpegiado, muy lentamente, una progresión I – vi – IV – V, a la par que cantaba:

And I will always love you,
I will always love you…

Una y otra vez, obstinadamente, hasta que las lágrimas me impidieron continuar.

Lloré por los que ya no estaban, por los que pronto dejarán de estar, por los que tarde o temprano nos iremos también. Lloré por mí.

Lloré por no tener el coraje de estar junto a las personas que de verdad quiero y decirles cuánto significan para mí.

Lloré por mi abuelita (sí, en este preciso momento, domingo, 12 de febrero de 2012, a las 15:57, aún tengo abuela), que agoniza en un hospital a mil kilómetros de aquí.

Ayer, con la mente perfectamente lúcida y con mucho valor, se despidió para siempre por teléfono de muchos de nosotros. Yo he intentado hacerlo esta mañana, pero la sedación contra el dolor la mantenía dormida.

Yaya, siempre te querré…

Javier Montero Gabarró

PD: Francisca Álvarez Palomino falleció en Tortosa el 14 de febrero de 2012 a la edad de 98 años.


I will always love you


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 – 8: menor séptima quinta bemol (semidisminuido)

Ha llegado el turno del más incomprendido de los acordes que resultan de la armonización en terceras de la escala mayor: el menor séptima con quinta bemol, también conocido como semidisminuido (en la próxima entrega, cuando explique el acorde disminuido, conocerás el porqué de ese nombre).

Nos lo encontramos sobre el séptimo grado de una escala mayor. El pobre es tan inestable que pocas veces se emplea en tonalidades mayores. Aunque categorizado con función dominante (posee el cuarto y el séptimo grado de la escala), el hecho de que ese temible tritono no sea la distancia que forman la tercera y la séptima del acorde, sino la fundamental con la quinta, no termina de convencer a nuestros oidos, tan educados a la cadencia perfecta V-I de la música tonal. Por si fuera poco, esa fuerza del movimiento entre fundamentales de una quinta justa por debajo ni siquiera se da (una quinta justa por debajo del séptimo grado no es diatónica).

Pero es en las tonalidades menores donde demuestra todo su poderío. En ellas nos lo encontramos sobre el segundo grado, bien asentado sobre un tiempo fuerte en las cadencias ii-V-i menores. Grandes composiciones se han creado en torno a esa progresión.

Su notación en cifrado moderno es m7(b5), haciendo referencia a que es un acorde m7 en el que la quinta se baja un semitono (se disminuye). También se representa con el círculo (como el disminuido °, pero dividiendo el círculo por la mitad, reflejando esa semidisminución).

Sabes ya lo suficiente sobre construcción de acordes para poder deducir la fórmula a partir del nombre. Si el acorde m7 tiene por fórmula:

m7: 1 – b3 – 5 – b7

el m7(b5) es similar, sólo que debemos bajar un semitono la quinta (b5):

m7(b5): 1 – b3 – b5 – b7

Veamos un par de ejemplos de su construcción empleando la metodología descrita en el primer artículo de la serie.

Descubramos las notas de Do menor séptima con quinta bemol. Empezamos escribiendo las notas de la escala de Do mayor (si tienes algún problema en esto no vendría mal que revisaras el artículo La escala mayor en cualquier tonalidad).

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

Tomando los grados 1, b3, b5 y b7, tenemos:

Cm7(b5): C – Eb – Gb – Bb

Otro ejemplo: construyamos La menor séptima con quinta bemol. La escala de La mayor es:

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

Am7(b5): A – C – Eb – G

Un acorde muy interesante. Te animo a que lo que incorpores a tu repertorio y, si escribes música, a que olvides todos los prejuicios que existen a su alrededor. Piensa que nuestros oidos están habituados a una forma determinada de hacer música y, en cierto modo, somos prisioneros de nuestra propia educación.

¡Atrévete a desafiar las normas! No hay nada más ridículo en música que ellas.

Javier Montero Gabarró


http://elclubdelautodidacta.es/wp/2012/02/construccion-de-acordes-8-menor-septima-quinta-bemol-semidisminuido/


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

Tablas HTML con celdas irregulares – 3 de 3

En las dos últimas entregas presentamos los atributos colspan y rowspan , que nos permitían combinar celdas contiguas en una tabla. Quiero proponerte ahora un ejercicio avanzado que estoy seguro sabrás resolver si has comprendido lo hasta ahora explicado.

Se trata de escribir el código HTML que genera la siguiente tabla:

Tómate el tiempo que necesites para resolver el problema.

¿Atascado en alguna parte? ¿Algún concepto un tanto difuso aún? Si, a pesar de todo, te cuesta hallar la solución, sigue leyendo, entonces…

Recordemos el procedimiento para diseñar este tipo de tablas sin problemas:

1) Procesar los elementos fila a fila, comenzando por la primera, y de izquierda a derecha, es decir, del mismo modo que realizamos la lectura de un libro.

2) No debemos incluir celdas que pertenezcan a una extensión ya iniciada en una definición anterior.

Según esto, en la primera fila nos encontraríamos con tres definiciones de datos: la primera (alfa) extiende la celda tres columnas horizontalmente, la segunda (bravo) es normal y la tercera (charlie) extiende dos filas verticalmente.

<tr>
  <td colspan="3">alfa</td><td>bravo</td><td rowspan="2">charlie</td>
</tr>

La segunda fila contiene cuatro definiciones, pues su última celda pertenece a una extensión que se realizó en la primera fila.

<tr>
  <td>delta</td><td>echo</td><td>foxtrot</td><td>golf</td>
</tr>

La tercera fila es suculenta: contiene tres definiciones y la segunda (india) es peculiar, pues contiene una expansión tanto horizontal como vertical.

<tr>
  <td>hotel</td><td colspan="3" rowspan="2">india</td><td>juliet</td>
</tr>

Presta mucha atención a cómo hemos incluido, dentro de la misma etiqueta td, tanto el atributo colspan como rowspan.

En la cuarta fila debemos definir sólo dos elementos, uno al principio y otro al final, pues las tres hipotéticas celdas centrales pertenecen a una extensión que se inició en la fila anterior.

<tr>
  <td>kilo</td><td>lima</td>
</tr>

Por último, la quinta fila es completamente normal, con sus cinco definiciones de datos, una para cada columna. Me he permitido incluirla en el diseño para que se reflejen bien los límites de cada columna y se dimensionen con claridad todas las extensiones anteriores.

<tr>
  <td>mike</td><td>november</td><td>oscar</td><td>papa</td><td>quebec</td>
</tr>

Este es el código completo del diseño:

<table border="1">
<tr>
  <td colspan="3">alfa</td><td>bravo</td><td rowspan="2">charlie</td>
</tr>
<tr>
  <td>delta</td><td>echo</td><td>foxtrot</td><td>golf</td>
</tr>
<tr>
  <td>hotel</td><td colspan="3" rowspan="2">india</td><td>juliet</td>
</tr>
<tr>
  <td>kilo</td><td>lima</td>
</tr>
<tr>
  <td>mike</td><td>november</td><td>oscar</td><td>papa</td><td>quebec</td>
</tr>
</table>

Y, colorín colorado, esta tabla se ha acabado…

Javier Montero Gabarró


Tablas HTML con celdas irregulares – 3 de 3


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

Nuevos índices por categorías

Para facilitar la localización de los artículos del blog, he preparado unos nuevos índices por categorías accesibles desde el menú Índices.

Además del global por fechas, que muestra, agrupado en meses, todo el contenido del blog, existirán otros índices que permitirán desglosar los títulos de los artículos de las principales categorías, sin la limitación del máximo por página que se obtiene cuando se accede a través del widget del panel derecho.

He preparado, de momento, sólo el índice de la categoría dedicada a la programación en Python, pero en los próximos días irán apareciendo los restantes.

Javier Montero

Tablas HTML con celdas irregulares – 2 de 3

Ayer comenzamos el tratamiento de las tablas irregulares en HTML y aprendimos el modo de extender las celdas horizontalmente utilizando el atributo colspan. Aplicando la misma aproximación por filas que tan bien nos ha funcionado hasta el momento, aprenderemos cómo extender celdas verticalmente.

Esta es la tabla que diseñaremos hoy:

Esto es como jugar a los barquitos. Comencemos por la primera fila:

Las tres primeras celdas son normales:

<td>manzana</td><td>pera</td><td>fresa</td>

La cuarta es la que presenta la extensión vertical. El atributo con el que la indicaremos es rowspan, tomando como valor el número total de celdas que ocupa la extensión.

<td rowspan="3">naranja</td>

La fila primera es, por lo tanto:

<tr>
  <td>manzana</td><td>pera</td><td>fresa</td><td rowspan="3">naranja</td>
</tr>

Presta mucha atención ahora a como creamos la segunda fila. La idea es la siguiente: sólo contabilizaremos aquellas celdas que no formen parte de una extensión ya comenzada. Es decir, únicamente aparecerán las normales o las que comiencen una extensión.

Aplicando este principio, la definición de las celdas es sencilla. La primera celda es normal:

<td>melón</td>

La segunda comienza una extensión, por lo que debe figurar (con su correspondiente valor de rowspan):

<td rowspan="2">sandía</td>

La tercera celda vuelve a ser normal:

<td>pomelo</td>

La cuarta celda forma parte de una extensión ya iniciada, por lo que no se indica nada, quedando la fila completa definitivamente sólo con tres definiciones <td>:

<tr>
  <td>melón</td><td rowspan="2">sandía</td><td>pomelo</td>
</tr>

En la tercera fila aparecen dos extensiones ya iniciadas, por lo que sólo figurarán dos definiciones <td> (4 – 2 = 2):

<tr>
  <td>cereza</td><td>kiwi</td>
</tr>

Finalmente, la última fila es completamente normal:

<tr>
  <td>uva</td><td>ciruela</td><td>níspero</td><td>granada</td>
</tr>

Y nuestra tabla al completo queda definida, entonces, del siguiente modo:

<table border="1">
<tr>
  <td>manzana</td><td>pera</td><td>fresa</td><td rowspan="3">naranja</td>
</tr>
<tr>
  <td>melón</td><td rowspan="2">sandía</td><td>pomelo</td>
</tr>
<tr>
  <td>cereza</td><td>kiwi</td>
</tr>
<tr>
  <td>uva</td><td>ciruela</td><td>níspero</td><td>granada</td>
</tr>
</table>

En la próxima y última entrega dedicada a las tablas irregulares contemplaremos el caso en que haya celdas que se extienden a la vez en sentido horizontal y vertical. Con lo explicado en estos dos artículos debería bastarte para resolver el problema por ti mismo y te invito a comprobarlo. No obstante, daremos la solución detallada.

Tocado – Tocado –

La próxima será Hundido.

Javier Montero Gabarró


Tablas HTML con celdas irregulares – 2 de 3


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

Tablas HTML con celdas irregulares – 1 de 3

Continuamos el estudio de las tablas en HTML rizando el rizo. En este artículo y en los dos siguientes aprenderemos a diseñar tablas que presentan celdas irregulares, resultado de combinar celdas contiguas entre sí.

Echa un vistazo a la tabla siguiente y verás de qué estoy hablando.

Observa como, en la primera fila, la segunda celda tiene una anchura de dos columnas. En la tercera fila, la primera celda tiene una anchura de tres columnas y la segunda de dos.

Como siempre, nos aproximaremos al diseño fila a fila. Comencemos por la primera.

La primera celda es normal, por lo que la definiremos exactamente del modo que explicamos en los artículos anteriores:

<td>manzana</td>

La siguiente celda tiene trampa, pues presenta una anchura de dos columnas. Existe un atributo para especificar el ancho de una celda en columnas: colspan.

Puesto que la celda ocupa dos columnas, este atributo tomará 2 como valor:

<td colspan="2">pera</td>

Las dos celdas siguientes son normales:

<td>fresa</td><td>naranja</td>

La primera fila queda, entonces, definida del siguiente modo:

<tr>
  <td>manzana</td><td colspan="2">pera</td><td>fresa</td><td>naranja</td>
</tr>

Sólo hay cuatro pares <td>...</td>, en lugar de 5, ya que hay una celda ocupa lo de dos.

La segunda fila no presenta misterio alguno:

<tr>
  <td>melón</td><td>sandía</td><td>pomelo</td><td>cereza</td><td>granada</td>
</tr>

Finalmente, la tercera tiene dos celdas irregulares, la primera de tres columnas de ancho:

<td colspan="3">melocotón</td>

Y la segunda de dos:

<td colspan="2">kiwi</td>

Ya tenemos, entonces, nuestra tabla al completo:

<table border="1">
<tr>
  <td>manzana</td><td colspan="2">pera</td><td>fresa</td><td>naranja</td>
</tr>
<tr>
  <td>melón</td><td>sandía</td><td>pomelo</td><td>cereza</td><td>granada</td>
</tr>
<tr>
  <td colspan="3">melocotón</td><td colspan="2">kiwi</td>
</tr>
</table>

En el próximo artículo veremos cómo extender las celdas verticalmente. No te supondrá ningún problema si has comprendido lo explicado aquí.

Javier Montero Gabarró


Tablas HTML con celdas irregulares – 1 de 3


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 #1 – Aleatoria

Primera entrega de la nueva serie BitBite Python, dedicada íntegramente a mostrar código diverso en acción. No se puede aprender a programar simplemente leyendo teoría; es necesario arremangarse y ponerse a escribir código, planteando y resolviendo problemas concretos. Pero, al igual que cuando se aprende física o matemáticas, el estudio de problemas resueltos debe servir para enriquecer los recursos disponibles a la hora de enfrentarnos con otros desafíos.

Todo el código que aparecerá en esta serie habrá sido tratado adecuadamente en los capítulos de teoría y deberás remitirte a ellos si algún concepto no lo tuvieses suficientemente claro. Piensa en estos programas como la práctica necesaria que complementa los artículos teóricos. Aunque se puede aprender a programar simplemente estudiando otros programas y programando, estudiar la teoría te allanará y acortará el camino.

En el artículo Productividad Aleatoria, describí una técnica que empleo eventualmente para seguir siendo productivo incluso cuando la indecisión me paraliza a la hora de elegir la próxima tarea a afrontar: eligiéndola al azar.

Para ello, utilizo el generador de números aleatorios de random.org, o el propio widget que he colocado en el pie de página del blog.

Vamos a realizar un programa en Python que se ocupe precisamente de esto mismo: la elección de un número entero al azar dentro de un rango especificado por el usuario.

Comenzamos…

import random

La función clave del programa se encuentra dentro del módulo de la librería de Python, random.py, especializado en el manejo de números aleatorios. Debemos importar el módulo para poder utilizar las funciones que contiene.

min = int(input('Mínimo: '))
max = int(input('Máximo: '))

Introducimos el rango de valores entre los cuales, inclusive, se elegirá el número al azar. Observa la conversión explícita a entero con int, pues input nos devuelve una cadena de caracteres.

aleatorio = random.randint(min, max)

Elegimos un número aleatorio entre min y max y lo almacenamos en la variable aleatorio. La función randint se ocupa de esta elección, cuyos parámetros definen el rango del que se tomará el entero al azar. Fíjate que para poder utilizarla es preciso anteponer al nombre de la función el nombre del módulo al que pertenece, separados por un punto.

Si no hubiésemos convertido min y max a enteros, el programa devolvería un error, pues los parámetros que la función randint requiere deber ser de ese tipo, y no strings.

print('Número aleatorio entre', min, 'y', max, '--> ', aleatorio)

Finalmente, mostramos el resultado de la elección.

El fichero aleatoria.py contiene el código fuente completo del programa.

Javier Montero Gabarró


http://elclubdelautodidacta.es/wp/2012/02/bitbite-python-1-aleatoria/


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