21.12.2012 Views

Programación Visual Basic (VBA) para Excel y Análisis ... - TEC-Digital

Programación Visual Basic (VBA) para Excel y Análisis ... - TEC-Digital

Programación Visual Basic (VBA) para Excel y Análisis ... - TEC-Digital

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

<strong>VBA</strong> <strong>para</strong> <strong>Excel</strong> M.Sc. Walter Mora F., M.Sc. José Luis Espinoza B. 38<br />

Nota: Para una aproximación inicial U0 se podría usar ⌊ √ U⌋ usando la solución del problema anterior.<br />

En la práctica se usa una aproximación inicial basada en la representación binaria del número.<br />

4. Números primos. Obtenga un programa <strong>para</strong> hallar el número primo más cercano a un número N,<br />

siendo N un número entero positivo mayor que uno. 3<br />

Por ejemplo, los números primos menores que 50 son:<br />

2, 3, 5, 7, 19, 23, 29, 31, 37, 41, 43.<br />

Si N = 50 , el programa debería retornar el número 43.<br />

Un procedimiento clásico <strong>para</strong> hallar todos los números primos menores que un entero positivo N, es la<br />

llamada criba de Eratóstenes. Lo que se hace es colocar en una lista todos los números del 2 al N e ir<br />

eliminando de esta lista todos los múltiplos de 2 (4, 6, 8, ...), todos los múltiplos de 3 (6, 9, 12, ...), y así<br />

sucesivamente, hasta eliminar todos los múltiplos de los primos que han ido quedando en la lista menores<br />

o iguales que √ N. Para decidir si un número es múltiplo de otro, usamos la función mod. Esta función<br />

devuelve el resto de una división (entera). Así, si un número es múltiplo de otro, la división es exacta, o<br />

sea, el resto es cero. En código sería así<br />

If m mod n = 0 Then ’si m es múltiplo de n .... End If<br />

1.6 Evaluando expresiones matemáticas escritas en lenguaje matemático<br />

común<br />

Un evaluador de expresiones matemáticas o un “parser”, es un programa que determina la estructura gramatical<br />

de una frase en un lenguaje. Este es el primer paso <strong>para</strong> determinar el significado de una frase tal como<br />

"x^2+y", que <strong>para</strong> un lenguaje de programación significa traducirla en lenguaje de máquina.<br />

En [9] encontrará un “parser” <strong>para</strong> evaluar expresiones matemática en <strong>Visual</strong> <strong>Basic</strong>. Sin embargo funciona bien<br />

con <strong>Excel</strong>. Además nos da la posibilidad de agregar funciones propias más complejas además de la que el parser<br />

trae implementadas tales como BesselJ(x,n), HypGeom(x,a,b,c) o WAVE_RING(). Por ejemplo, la función a<br />

trozos. Este parser fue desarrollado por Leonardo Volpi [9].<br />

1.6.1 Usando clsMathParser. Sintaxis<br />

Primero descargamos clsMathParser.zip. En la carpeta clsMathParser, además de la documentación en pdf,<br />

vienen dos archivos: clsMathParser.cls y mMathSpecFun.bas. El primero es el parser y el segundo es una<br />

biblioteca con funciones especiales ya implementadas.<br />

Para implementar un ejemplo de uso del parser, implementamos una hoja excel como la que se ve en la figura<br />

3 Un número natural p > 1, es primo si sus únicos divisores positivos son 1 y p. En caso contrario, es un número compuesto.

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!