lunes, 4 de febrero de 2013

La hoja de cálculo gana cifras



Calculadora STCALCU

Las estadísticas contenidas en la entrada anterior no hubieran sido posibles usando una hoja de cálculo normal. Ya es sabido que en ella cuando las cifras significativas de un número llegan a unas 15, se tratan automáticamente en coma flotante y notación científica. La única forma de mantener la expresión con todas las cifras es aumentando las prestaciones mediante un complemento o, como presentaremos aquí, mediante una colección de nuevas funciones.

Como mero divertimento emprendimos hace tiempo la tarea de dotar a las hojas de cálculo de la posibilidad de manejar números enteros con todas sus cifras, sin las limitaciones a las que nos hemos referido. Después de intentarlo con registros múltiples desembocamos en la decisión de usar variables de texto (string), como hemos visto en un trabajo similar al nuestro. Del hecho de manejar strings viene el prefijo ST que incorpora tanto la calculadora (STCALCU) como las funciones: stsuma, stresta,…La llamamos calculadora, aunque en realidad es una colección de funciones, pero para quien no se anime a manejarlas hemos incluido un esquema de cálculo con botones en la última hoja.

Representar un número mediante un string tiene una limitación, y es que las hojas de cálculo manejan en general cadenas de 255 caracteres. En la herramienta que presentamos se ha puesto un tope de 250, útil para la mayoría de los trabajos con números enteros.

Operaciones como funciones

Lo que presentamos ahora ha tenido un desarrollo totalmente personal (y por tanto sin la garantía de un producto profesional) y realiza los cálculos en forma de funciones. Así se pueden crear tablas o enlazar unos cálculos con otros con toda libertad. También así se podrán mezclar, con cuidado, nuestras funciones con las propias de Excel, OpenOffice o LibreOffice.

Con la implementación de las operaciones como funciones se consiguen varias ventajas:


  • Puedes escribir la función en cualquier celda, con lo que es fácil construir tablas y esquemas de cálculo.
  • Son independientes del resto de funciones de las hojas y se pueden mezclar con ellas (con cuidado)
  • No hay que preocuparse en exceso por la sintaxis de las expresiones algebraicas, que aquí se reducen a la aplicación reiterada de funciones. Así, A*B+C*D se escribiría como Stsuma(stmulti(A;B),stmulti(C;D)). Parece más complejo, pero todo es cuestión de costumbre.

La hoja que contiene la calculadora la tienes alojada en

http://hojamat.es/sindecimales/aritmetica/herramientas/herrarit.htm#stcalcu

En STCALCU dispones de las funciones más usuales. Si sabes programar podrás enriquecerlas con otras nuevas. Son estas:

Operaciones básicas

Son las clásicas (la raíz cuadrada resultaba costosa y poco útil), más el residuo

Operación Formato

SUMA =stsuma(A;B)
RESTA =sresta(A;B) 
PRODUCTO =stmulti(A;B)
COCIENTE =stdivi(A;B)
POTENCIA =stpotencia(A;B)
RESTO =stresto(A;B)

Damos algunos ejemplos por si deseas reproducir alguno:

=stsuma(771662374885756;12636645869121) = 784299020754877
=stmulti(777654556988;299818) = 233154833967028184
=stpotencia(7;51) = 12589255298531885026341962383987545444758743
=stresto("27677841276031200";301)= 163

A y B son, en general, referencias a celdas, pero como ves en los anteriores ejemplos, se pueden usar números enteros directamente.

Hay que tener en cuenta estas consideraciones:

(a) Las funciones actúan sobre datos de tipo texto, pero frecuentemente la hoja los interpreta bien aunque no se escriban comillas. Observa el ejemplo anterior del resto, en el que sin comillas nos hubiera dado error. Para evitar esto es preferible usar las funciones sobre celdas, como en =stpotencia(Z12;W12), procurando que tengan formato de texto, también para ver mejor los datos, que, de otra forma aparecerían en formato de coma flotante.

(b) Las operaciones se pueden combinar como si fueran funciones.  Esta fórmula te daría el séptimo número de Fermat

=stsuma(stpotencia(2;stpotencia(2;7));1) = 340282366920938463463374607431768211457

(c) Sobre ellas puedes definir otras funciones. Por ejemplo, el STCUBO

Public function stcubo$(x$)
Stcubo$=stpotencia(x$,”3”)
End function

Observa que prudentemente definimos todo como string

Otras funciones

Están orientadas a la divisibilidad, por lo que pueden ralentizarse en exceso si hay que factorizar

Función Formato

FACTORIZAR =stfactores(A)
ES MÚLTIPLO        =stmultiplo(A;B)
ES PRIMO        =stprimo(A)

STFACTORES

Te devuelve el conjunto de factores primos de un número con el formato usual de [primo1,exponente1] [primo2,exponente2] [primo3,exponente3]…

Ya se ha advertido que puede resultar muy lenta. Si tu paciencia se agota, pulsa ESC en Excel o CTRL+Mayúscula+Q en las otras.

Ejemplo:

stfactores(277311825)= [3,2],[5,2],[7,2],[25153,1]

Es decir, que 277311825=3^2*5^2*7^2*25153

STMULTIPLO

Devuelve VERDADERO si un número es múltiplo de otro

Ejemplo

Stmultiplo(36672753876570989401657263524087877113152819293759126100418746384384; 182273662712) = VERDADERO

STPRIMO

Devuelve VERDADERO si su argumento es primo. También puede resultar lenta.

Ejemplo

stprimo(7726631) = FALSO porque 7726631 = [11,1],[239,1],[2939,1]

Calculadora

Para quienes no se sientan muy a gusto manejando funciones se ha implementado en la tercera hoja de Stcalcu una calculadora simple en la que realizar los cálculos. Consultando el código de los botones implementados se pueden insertar otros nuevos. No es difícil.



Se ha habilitado una línea para el resto de la división, que aquí siempre es euclídea.

En la parte inferior figuran los botones de divisibilidad y aún más abajo unas memorias para almacenar datos intermedios. Todo el esquema es fácilmente revisable.

Con estas funciones y las estructuras del Basic de las hojas de cálculo puedes enriquecer el  catálogo. Debes tener cuidado en declarar como string las variables que uses. Suerte.

Y de nuevo la advertencia: estás ante un trabajo no profesional. Si luego falla algo, ten paciencia.

No hay comentarios: