Ecuaciones con LibreOffice y WolframAlpha y cómo matar dos pájaros de un tiro

Empieza la clase de matemáticas. Me dispongo a proyectar algunos ejercicios de ecuaciones de primer grado con fracciones. Estamos terminando el tema y estos últimos días los dedicamos a repasar la unidad con ejercicios para el próximo examen. Un libro sobre la mesa con nuevos ejercicios que plantear… y copiar: ¿pizarra o proyector…?

Confieso que prefiero «escribir» las expresiones matemáticas en digital, utilizando un editor de fórmulas: LibreOffice/OpenOffice Math. Y en mi caso particular, después de adquirir cierta práctica, reconozco que tardo bastante menos tiempo en escribir las fórmulas con el teclado del ordenador que a mano. Por otro lado, una vez escritas las fórmulas, las puedo guardar, para modificarlas posteriormente y plantear nuevos ejercicios similares, apenas cambiando algunos términos. Además, las expresiones matemáticas proyectadas en el aula, se ven infinitamente mejor: con más luz y mayor nitidez. Yo solo le veo ventajas a trabajar en digital.

Ecuación de primer grado con OpenOffice
Ecuación de primer grado con OpenOffice

Además, para este tema en concreto sobre ecuaciones, es bastante habitual tener que comprobar rápidamente alguna solución. Y es aquí donde entra en juego el buscador de respuestas Wolfram|Alpha, que tanto me ayuda. Me declaro fan absoluto desde hace años y es por ello que he escrito bastante sobre él en este blog.

Si escribir las fórmulas con un editor de ecuaciones es ya de por sí una gran idea, cuando descubrimos que Wolfram|Alpha «entiende» la sintaxis básica de las expresiones matemáticas de LibreOffice/OpenOffice Math, trabajar en «modo digital» con este tipo de recursos resulta entonces realmente productivo. «Matar dos pájaros de un tiro» que decía en el título de este artículo. Escribimos la ecuación con OpenOffice Math, copiamos y pegamos la expresión en Wolfram|Alpha, ¡y listo! Ecuación «dibujada» y resuelta.

Ecuación de primera grado con WolframAlpha
Ecuación de primer grado con WolframAlpha

He preparado un documento que resume en una página la sintaxis básica para escribir con LibreOffice/OpenOffice Math las expresiones matemáticas más comunes. En una especie de «chuleta», se detalla la representación de operaciones y símbolos especiales necesarios para «dibujar» ecuaciones y otras expresiones matemáticas.

Edición de Fórmulas con LibreOffice/OpenOffice

Es posible que algunas expresiones o símbolos de OpenOffice/LibreOffice diseñadas exclusivamente para aspectos de formato (paréntesis graduables, palabras como «cdot» y otros símbolos especiales) no sean interpretados por Wolfram|Alpha. Sin embargo, las expresiones aritméticas y algebraicas básicas son compatibles con el buscador de respuestas.

Documentos | «Fórmulas con OpenOffice/LibreOffice – Sintaxis Básica» (PDF, 1 pág.)
Descargar programas | LibreOffice | Apache OpenOffice
Wolfram|Alpha | www.wolframalpha.com
En Tiching | http://es.tiching.com/120588
Fotografía «pizarra» | «Business person against the blackboard» de Hernani Larrea en Flickr

«Apellido1 Apellido2, Nombre»: procesando cadenas de texto con la hoja de cálculo

Los programas de hoja de cálculo, como LibreOffice, Numbers o Excel, cuentan con funciones que van más allá del cálculo numérico con operaciones básicas y otras fórmulas más complejas. Podemos simular funciones de bases de datos, definir funciones lógicas, realizar conversiones entre unidades de medida o procesar fechas. De este último tipo, incluso podemos encontrar aplicaciones de lo más extrañas, como conocer el día en el que cae el Domingo de Pascua. Todas ellas vienen «de serie». El usuario, por su cuenta, puede definir sus propias funciones. Y este es el tema que ocupa esta entrada.

Personalmente, no hay curso en el que no me encuentre con el problema de analizar una lista de nombres (de alumnos, lógicamente). Los listados que exportan algunas bases de datos nunca tienen el formato adecuado para los programas que necesitan importarlos. Uno se plantea siempre si merece la pena modificarlos manualmente. Pensándolo un par de veces, está claro: mejor procesar los datos con algún programa. El tiempo invertido compensará; y quizá podamos reutilizar el «programita» en años posteriores.

En cualquier caso nos enfrentamos al problema de procesar cadenas de texto. Podríamos programar unas pocas líneas de código en cualquier lenguaje de script y ejecutarlo; pero es una opción demasiado técnica. También podemos optar por utilizar un programa de hoja de cálculo, que incorporan funciones para el tratamiento de texto. Con paciencia y en varios pasos, podemos lograr la conversión que necesitamos.
El problema que se presenta año tras año es el mismo: llega un listado de nombres de personas con este formato.

Apellido1 Apellido2, Nombre

Apellidos y nombre en la misma columna de una hoja de cálculo. Y uno sencillamente necesita los apellidos en una columna y el nombre en otra. Probablemente exista alguna función (muy escondida supongo) que esté diseñada precisamente para este propósito. Sin embargo, una solución más entretenida puede ser combinar funciones de texto ya definidas en la hoja de cálculo. De hecho, puede ser un modo interesante de introducir el concepto de función a los alumnos. Puede ser incluso ser un primer paso en el mundo de la programación.

Volvamos al problema. Para separar apellidos de nombre bastaría con combinar adecuadamente las funciones de texto IZQUIERDA, ENCONTRAR, DERECHA y LARGO. Suponiendo que el nombre completo está almacenado en la celda A1, en la celda contigua (B1) definimos la siguiente fórmula, que nos devolverá los apellidos de la persona:

=IZQUIERDA(A1;ENCONTRAR(",";A1)-1)

En otra celda (C1) definimos esta fórmula, que nos devolverá el nombre de la persona:

=DERECHA(A1;LARGO(A1)-ENCONTRAR(",";A1)-1)

ScriptEs cierto que si necesitamos aplicar esta conversión varias veces en el mismo documento de hoja de cálculo, la definición de las funciones puede resultar un poco tedioso. En este caso, el usuario podría definir su propia función programando una «macro»; un conjunto de instrucciones que hacen exactamente lo mismo que la combinación de funciones anterior. En el programa de hoja de cálculo se accede a esta opción a través del menú: «Herramientas – Macros – Organizar macros». Quizá dedique futuras entradas a este tema. De momento, si alguno ha definido alguna vez (o ha copiado y pegado) alguna macro, un posible fragmento de código sería el siguiente:

REM * Funciones LosApellidos & ElNombre *
Function LosApellidos(NombreCompleto As String)
Dim Apellidos As String
Dim Pos As Integer
Pos = InStr(NombreCompleto,",")-1
Apellidos = Left(NombreCompleto, Pos)
LosApellidos = Apellidos
End Function
Function ElNombre(NombreCompleto As String)
Dim Nombre As String
Dim Pos As Integer
Dim LNC As Integer
lNC = Len(NombreCompleto)
lAP = Len(LosApellidos(NombreCompleto))
Pos = lNC-lAP-2
Nombre = Right(NombreCompleto, Pos)
ElNombre = Nombre
End Function

Con esta definición, suponiendo que el nombre completo de la persona está almacenado en A1, bastaría con utilizar las funciones de este modo en cualquier celda.

Para obtener los apellidos:

=LosApellidos(A1)

Y para obtener el nombre:

=ElNombre(A1)

Podéis encontrar algunos detalles sobre estas funciones en la wiki de reciente creación que comenté hace unos días.

Wiki | Funciones de texto con hoja de cálculo

Planificación de Unidades Didácticas: calendario 2012/13

Como ya hice el año pasado (esta vez con un poco de retraso), comparto una plantilla para planificar las clases del curso 2012/2013. El calendario escolar viene marcado con periodos de vacaciones y otros festivos locales y nacionales que hay que tener en cuenta a la hora de «temporalizar» las clases de nuestras asignaturas. También anotamos al principio de curso algunos eventos el centro, salidas con los alumnos y otro tipo de actividades.

Todo esto, sumado a que es muy probable que impartamos clases en varios grupos en días distintos (líneas o desdobles), hace más que necesario disponer de alguna herramienta para estimar el número de clases en cada evaluación, con el fin de cuadrar las unidades didácticas en las programaciones de aula. La plantilla puede servir también como documento de seguimiento, en el que anotar de forma resumida el desarrollo de las clases, para saber en qué punto nos quedamos en las últimas clases.

A diferencia del año pasado, la plantilla es un sencillo documento de LibreOffice (.odt). Para el curso anterior proponía una plantilla similar, pero con formato de hoja de cálculo (.ods) y que contaba con la función de marcar y contar automáticamente las sesiones de un grupo, pero que no era fácil de incorporar (copiando y pegando) en la programación didáctica, para disponer de toda la información en el mismo documento.

Algunas características de la plantilla son:

  • El calendario cubre el año escolar, de septiembre de 2012 a junio de 2013. No muestra los días no lectivos, que dependiendo del centro educativo, ciudad, comunidad autónoma o país, lógicamente son distintos.
  • La planificación se puede hacer día a día, pudiendo indicar el título de la clase o un resumen de los contenidos que se imparten ese día.
  • No aparecen los fines de semana (S,D). Para simplificar la plantilla se han omitido los fines de semana, aunque en algún centro de formación es posible que se impartan clases en fin de semana.
  • Podemos agrupar (visualmente) las sesiones de una misma unidad didáctica, con la última columna (utilizando la función “combinar celdas”).
  • Aparecen cada uno de los días entre semana (en número), con la etiqueta L,M,X,J o V según el día de la semana. La etiqueta facilita la programación; si la asignatura se imparte por ejemplo martes y jueves, basta con recorrer la plantilla e ir marcando los días M y J.
  • Permite organizar la misma asignatura para grupos distintos A,B,C,D: líneas distintas, particiones del grupo en clase, etc.

Temporalización con festivos en EspañaPlantilla OpenOffice (.odt)
Temporalización sin festivosPlantilla OpenOffice (.odt)
Temporalización sin festivosPlantilla PDF

Bases de Datos (I). Fases de diseño

Es más que probable que cada vez que accedemos a una página en Internet estemos realizando una consulta a una base de datos. Resulta difícil encontrar ya páginas web en Internet que no conecten con una base de datos para recuperar la información, procesarla convenientemente para finalmente presentarla al usuario en el navegador. Podríamos asegurar que todos los servicios de Internet que utilizamos a diario están construidos mediante páginas web dinámicas, con lenguajes de programación web como PHP, ASP.NET o JSP, diseñados para acceder y consultar con facilidad a una o varias bases de datos.

Cuando visitamos IMDb – The Internet Movie Database – estamos accediendo a una base de datos. Cuando navegamos por las secciones de Spotify, reproduciendo las  canciones de nuestro cantante favorito, también estamos consultando una base de datos. O cuando buscamos un obra en la Biblioteca Virtual Miguel de Cervantes, también hay una base de datos que recibe una petición. Existen bases de datos en todas partes y de todo tipo.

De hecho, podemos imaginar (y diseñar) una base de datos que refleje la actividad de cualquier aspecto de la sociedad: información sobre obras en una galería de arte, relaciones entre contactos de una red social, fichas de recetas de cocina, información de los vuelos en un aeropuerto, el inventario en un almacén, etc.

Como en cualquier sistema software, las bases de datos también se diseñan. Y no nos referimos al aspecto visual, sino al diseño como el proceso de planificar y crear un modelo de un producto final; en este caso, un sistema para almacenar y organizar los datos. Ese modelo o esquema tendrá finalmente una implementación concreta en un Sistema de Gestión de Base de Datos (SGBD), como MySQL, SQL Server u Oracle.

Si nos ceñimos a los procesos típicos de la ingeniería del software, las fases de diseño de un sistema de bases de datos no serían exactamente los que propongo en estos apuntes. En estos materiales, a modo de fichas, se plantea la creación, en distintas etapas, de una base de datos de un modo más simplificado y mucho más práctico; con los pasos fundamentales para que un alumno secundaria pueda realizar un proyecto completo de BD.

Los pasos para la creación de una BD de la propuesta son:

  1. Análisis. En esta fase tiene lugar la comunicación con el cliente para conocer el sistema de información e identificar las necesidades (requerimientos) de diseño de la BD.
  2. Esquema. En esta fase se realiza el diseño conceptual o esquema de la base de datos. Para ello se utiliza el modelo Entidad-Relación con el que se identifican y detallan las entidades del sistema y las relaciones entre ellas.
  3. Tablas. Conocida como diseño lógico, en esta fase se definen con un SGBD las tablas y campos de la BD.
  4. Datos. En esta fase se introducen los datos en los registros de las tablas de la BD.
  5. Consultas. En esta etapa, se diseñan los formularios de acceso a los datos y los informes, para realizar consultas concretas a la BD.

En esta primera entrega publico las dos primeras fichas sobre Bases de Datos. En la primera se incluye alguna definición y se resumen los pasos para la creación de una BD. En la segunda ficha hay una propuesta de 5 proyectos distintos de creación de bases de datos, sobre cine, música, deportes y libros, con un breve análisis de requerimientos para detallar y/o ampliar.

Las siguiente entrega, Bases de Datos (II), tratará el diseño conceptual: el esquema de la BD, introduciendo aspectos muy básicos del modelo ER.

Fichas (1) y (2) | Base de Datos (I)
Enlaces | LibreOffice