«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

La Ley de los Grandes Números y los 1000 lanzamientos de un dado

Recientemente compartía una serie de recursos para motivar el tema de la probabilidad en el aula, un área que tiene cierto éxito entre otros temas del libro. Comentaba que cuando se empiezan a introducir conceptos de teoría de conjuntos, combinatoria y otras formulas, muchas veces el interés por el tema ya no es el mismo. En la actividad TIC para el aula de matemáticas que propongo esta semana, se dan por estudiados ya varios conceptos de probabilidad (sucesos, Regla de Laplace, frecuencias, etc.) Es una actividad con la que el alumno puede comprobar por sí mismo, a través de simulaciones, como se cumple, por ejemplo, la Ley de los Grandes Números.

¿Cuál es la probabilidad de sacar un «6» con un dado? Suponemos, lógicamente, un dado de 6 caras, con las caras numeradas del 1 al 6 y en el que todas los posibles resultados (sucesos elementales) son igualmente probables (equiprobables). Todos diríamos 1 de 6, es decir, un 16,67 % de probabilidad de sacar un «6», o cualquiera de los posibles resultados. Acabamos de aplicar la Regla de Laplace para el cálculo de probabilidades: simplemente dividiendo el número de casos favorables (1, porque solo hay un «6») entre el número de casos posibles (6, porque hay 6 posibles valores), obtenemos dicha probabilidad.

Pero, ¿qué sucedería si repitiéramos el experimento de lanzar un dado varias veces, por ejemplo, 10? En cada lanzamiento, la probabilidad seguiría siendo del 16,67%, y podría salir el «6» o no. Podrían salir diez «6» o ninguno en los 10 lanzamientos. 10 es un número pequeño.

Sin embargo, ¿qué sucedería si en lugar de 10 lanzamientos repetimos el experimento con 100? ¿y con 1000? Bien, aquí entra en juego la Ley de los Grandes Números, que dice así:

«La frecuencia relativa de un suceso tiende a estabilizarse hacia una constante a medida que se repite el experimento.»

Recordemos que la frecuencia relativa de un suceso A (obtener un «6»), al realizarse un experimento N veces, se obtiene de dividir la frecuencia absoluta (las veces que sale el «6»), dividido por el número total de veces que se ha repetido el experimento.

Y, ¿hacia qué valor constante tiende a estabilizarse la frecuencia relativa del suceso «obtener un 6» cuando repetimos el experimento, por ejemplo, 1000 veces. Puedes comprobarlo en la gráfica, resultado de una simulación realizada con un hoja de cálculo, y que es el objetivo de esta actividad.

El valor se aproxima a algo más de 0,15, exactamente 0,167. ¿No es curioso que coincida con el valor que habíamos calculado con la Regla de Lapace? Y es que:

«La probabilidad de un suceso es la constante a la que se aproxima la frecuencia relativa cuando el experimento se repite muchísimas veces.»

Con el objetivo de comprobar que efectivamente la Ley de los Grandes Números se cumple, propongo una actividad para trabajar con las TIC, que consiste en diseñar una hoja de cálculo capaz de simular el experimento de lanzar “N” veces un dado.

La hoja de cálculo agrupará los lanzamientos de 10 en 10, para ir calculando automáticamente las veces que se obtiene un determinado resultado y la frecuencia relativa de tal suceso. Finalmente, se generará con el programa una gráfica que mostrará cómo la frecuencia relativa tiende a una constante.

La actividad

En el siguiente documento (PDF, 4 páginas), está detallada la actividad y las fórmulas de hoja de cálculo necesarias para generar números aleatorios y realizar los cálculos de frecuencias.

Actividad | La Ley de los Grandes Números (PDF, 4 páginas)
En Tiching | La Ley de los Grandes Números
Software | LibreOffice.org (incluye Calc, para diseño de hojas de cálculo)
Imagen Dados | Dice de Swiss Bones en Flickr

Planificación de Unidades Didácticas: calendario 2011/12

Este post bien podría haberse titulado «Organizando el curso escolar 2011/12»,  puesto que la plantilla que comparto puede servir tanto para profesores como estudiantes. Se trata de un único documento que muestra el calendario escolar, con espacio para programar el desarrollo de las clases de una asignatura y con posibilidad de hacer la planificación para varios grupos.

Bien pensado, la plantilla puede servir para organizar cualquier aspecto del curso escolar. Puede ser de utilidad para profesores, para planificar las clases que componen un curso completo, como para alumnos, como diario de seguimiento de la asignatura, en el que apuntar las fechas de exámenes, entregas de trabajos o cualquier otra anotación sobre el desarrollo de sus clases.

El documento es similar en aspecto a los calendarios compactos de los que hablé hace unos días. La diferencia principal es que esta plantilla permite planificar día a día. Algunas de las características son:

  • El calendario cubre el año escolar, de septiembre de 2011 a julio de 2012, estos dos meses completos, ya que en cada centro escolar y dependiendo de la etapa, el inicio del curso es diferente. 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 (columna «Sesión»).
  • 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 columna UD (utilizando la función de «combinar celdas» de la hoja de cálculo).
  • 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.
  • La plantilla dispone de un contador en la parte superior de cada grupo, donde podemos ir viendo el número total de sesiones planificadas al año. Con está función podemos comprobar en todo momento que el número de sesiones programadas es el mismo para todos los grupos. Ya sabemos que cuando hay días festivos de por medio, siempre hay que ajustar la distribución de sesiones para cada grupo.

En definitiva, una sencilla plantilla que puede facilitar la (no sé si bien llamada) «temporalización» de las unidades didácticas en las programaciones de cada una de nuestras asignaturas.

Enlaces | Plantilla en varios formatos: OpenOffice (.odt) | Excel (.xls) | PDF

Curso de Hoja de Cálculo (IV): Tomando decisiones

«Tomando decisiones» es la cuarta de las entregas del curso de Hoja de Cálculo. Con ella se cierra una primera serie de fichas que intentan resumir los contenidos impartidos hasta ahora en clase sobre este tema: el entorno de hoja de cálculo y las operaciones básicas, la utilidad de las funciones, el buen aprovechamiento de las fórmulas y el uso de funciones lógicas y condicionales. Podríamos decir que las 4 fichas presentan las herramientas básicas para plantear un gran número de problemas con la hoja de cálculo.

¿Qué son las funciones condicionales? En ciertas situaciones puede ser necesario hacer que un resultado dependa de alguna condición. Supongamos que queremos reflejar el siguiente problema en la hoja de cálculo:

“Los alumnos han hecho dos exámenes y sólo se hace media si en ambos la nota es mayor que 4”.

En este caso, la única condición para realizar la media es que la nota de los dos exámenes supere el valor 4. Representar este problema con una fórmula matemática podría ser demasiado complejo. Es por ello que se introducen las funciones condicionales, que bien definidas permiten tomar decisiones sobre los datos. En concreto, en el programa Calc disponemos de la función SI.

La función SI tiene la siguiente forma:

=SI(prueba-lógica; valor-si-V; valor-si-F)

  • prueba lógica: es la condición; se trata de una expresión con dos posibles respuestas: verdadero o falso. Por ejemplo: A1>5
  • valor-si-V: el valor que muestra la celda si la prueba lógica es verdadera.
  • valor-si-F: el valor que muestra la celda si la prueba lógica es falsa.

¿Y cómo se aplica la función SI? Por ejemplo: queremos mostrar el texto «Aprobado» o «Suspenso» dependiendo de la nota de un examen. Si la nota del examen está en la celda B2, basta con definir la siguiente fórmula en la celda que debe mostrar el texto:

=SI(B2>=5;"Aprobado","Suspenso")

La Ficha 04 lista los operadores lógicos disponibles para definir correctamente la prueba lógica de la función SI. También ofrece un par de ejemplos de uso de las funciones lógicas O e Y, que permiten combinar varias condiciones (varios operadores lógicos) en una sola expresión.

Por ejemplo, si suponemos que en las celdas E1 y E2 tenemos las notas de dos exámenes, podríamos resolver el problema planteado al inicio de este artículo:

“Los alumnos han hecho dos exámenes y sólo se hace media si en ambos la nota es mayor que 4”.

con la siguiente combinación de operadores lógicos y funciones condicional (SI), lógica (Y) y de media aritmética (PROMEDIO):

=SI(Y(E1>=4;E2>=4);PROMEDIO(E1:E2);”No”)

Sobre Hoja de Cálculo todavía hay mucho que contar. Bien mejorando los apuntes ya publicados, o bien incorporando nuevas fichas, pronto compartiré más contenidos sobre el tema.

Enlaces: Ficha 01 | Ficha 02 | Ficha 03 | Ficha 04

Curso de Hoja de Cálculo (II): Funciones

Terminamos 2010 con una introducción a la hoja de cálculo OpenOffice Calc explicando los elementos básicos del entorno de hoja de cálculo, los tipos de datos que se pueden manejar y el uso de los operadores básicos (suma, resta, multiplicación y división). En esta segunda entrega, se introduce el uso de funciones que principalmente van a permitir simplificar algunos cálculos.

Las operaciones básicas estudiadas en la Ficha 01 se suelen utilizar para realizar cálculos sencillos con unos pocos datos. Si queremos sumar los valores de las celdas A1, A2 y A3, simplemente escribimos la siguiente fórmula:

=A1+A2+A3

Pero, ¿qué sucede si la cantidad de números de la expresión es muy grande?

=A1+A2+A3+A4+A5+ … + A678

Una de las ventajas del uso de funciones es precisamente simplificar este tipo de cálculos largos. Para este caso particular, sería más conveniente utilizar la función SUMA.

=SUMA(A1:A678)

Intervalos y conjuntos de celdas

En el ejemplo de función SUMA, aparece entre paréntesis el valor A1:A678, dos celdas separadas por el signo “dos puntos” (:). Se trata de una forma abreviada para indicar que la operación se realiza sobre un intervalo de celdas. El ejemplo:

=SUMA(A1:A678)

indica que se efectúa la suma de todos los valores desde la celda A1 hasta la celda A678 (siempre en celdas consecutivas).

Sin embargo, los datos sobre los que se opera no siempre aparecen de forma consecutiva en la hoja de cálculo. ¿Cómo podemos sumar entonces tres valores que están en las celdas A1, B3 y C9, sin recurrir el operador de suma (+)? Para ello podemos seguir utilizando la función SUMA e indicar un conjunto de celdas con el signo “punto y coma” (;).

=SUMA(A1;B3;C9)

que sería equivalente a escribir:

=A1+B3+C9

La ficha en formato PDF resume estos contenidos y añade la explicación de «Opciones de función» y muestra el uso de otra funciones conocidas (PROMEDIO, M.C.D, M.C.M, MÁX, MÍN, etc.).

Enlaces: Ficha 01 | Ficha 02

Curso de Hoja de Cálculo (I). Entorno y operaciones básicas

Con esta entrada empieza una serie de artículos en forma de Curso de Hoja de Cálculo. En cada una de las entregas publicaré algunos materiales resumidos en una ficha.  El material se ha elaborado para complementar los contenidos de estadística en educación secundaria y, por tanto, la mayoría de ejemplos se plantean para resolver problemas matemáticos de este nivel.

Durante este curso utilizaré OpenOffice Calc como software para desarrollar las explicaciones y ejemplos de Hoja de Cálculo, aunque es muy probable que en una segunda edición del curso (con mejora de los materiales) opte por pasar definitivamente a LibreOffice. Para conocer los motivos, puedes leer más sobre la noticia OpenOffice/LibreOffice en GenBeta o en Barrapunto.

Empezamos conociendo los aspectos básicos de una hoja de cálculo.

La hoja de cálculo es un programa que permite manipular datos numéricos y alfanuméricos. Con él podemos realizar desde operaciones básicas hasta complejos cálculos estadísticos. En una hoja de cálculo, todos los datos se organizan en filas (representadas por números; 1, 2, 3, …) y columnas (representadas por letras: A, B, C, …), ocupando cada valor un celda determinada (A1, B2, C2, …).

En general, en cada celda se pueden introducir valores de tres tipos: números, fórmulas y texto:

  1. Los números son los datos de entrada, aquella información sobre la que queremos realizar cálculos. Ejemplo: las notas de dos exámenes: 6,5 y 8.
  2. Las fórmulas son expresiones matemáticas que permiten obtener nuevos datos a partir de los números que aparecen en otras celdas. Ejemplo: la fórmula del promedio. Para el caso que muestra la figura, la suma de las notas divida por 2)
  3. El texto permite describir y organizar mejor la información numérica y las fórmulas. Ejemplo: etiquetas junto a los datos: Examen 1, Examen 2, Media.

Aunque veremos que existen métodos más sencillos (llamados funciones) para calcular una media aritmética, convendrá en primer lugar aprender a realizar este tipo de cálculos con los operadores básicos, que incluyen la suma, la resta, la multiplicación, la división, la potenciación y la raíz cuadrada.

Enlaces: Descargar OpenOffice.org | Ficha 01 de Hoja de Cálculo