Bienvenidos sean a este post, en el post anterior vimos los operadores arimeticos basicos que tenemos disponibles para realizar nuestras operaciones matemeticas pero VBscript tambien posee funciones arimeticas especificas para poder trabajar en operaciones mas complejas, en el dia de hoy nos centraremos en la mayoria de estas funciones.
Logaritmos y exponenciales
Las funciones logaritmicas disponibles son log (logaritmo natural) y Exp (elevar al numero ‘e’ el argumento), ambas funciones estan relacionadas con el numero ‘e’ cuyo valor es aproximadamente 2,718282, veamos el siguiente ejemplo:
matem00.vbs
num = 13
base = 10
LogBase num, base
Sub LogBase (numero, base)
resultado = Log(numero) / Log(Base)
wscript.echo(resultado)
end sub
En este caso haremos un codigo que nos permite calcular el logaritmo de un numero en una base cualquiera de la natural, donde estableceremos los dos valores, la sub que lo hara recibe dos valores (numero y base) lo procesa en resultado por medio de la division del valor del logaritmo natural del numero y el logaritmo natural de la base, una vez calculado nos devolvera el valor, si probamos como se ve en el codigo deberemos ver el siguiente resultado

Como pueden ver se calculo perfecto el valor, tengan un detalle en cuenta que cualquier logaritmo en el rango de los numeros reales esta definido unicamente para numeros positivos y estrictamente mayores que cero, si intentamos pasar como argumento un valor negativo o menor que cero nos devolvera un error, pasemos al siguiente tema.
Raiz cuadrada
Para esta operacion se utiliza a Sqr la cual calculara la raiz cuadrada de cualquier numero positivo, un ejemplo simple:
sqr(2) -> Devuelve 1,414213562331
Funcion signo
La funcion signo, Sgn, nos permite averiguar el signo de un numero, si el numero que le pasamos es negativo devuelve -1, si es positivo devuelve 1 y si le pasamos 0 devuelve 0
sgn(-10) -> Devuelve -1
Funciones de redondeo
Las funciones de redondeo son utilizadas tanto para eliminar los decimales de un numero como para reducir la cantidad de los mismos, entre ellas tenemos las siguientes.
La funcion ABS nos devolvera el valor absoluto de un numero, el valor absoluto es el numero del parametro sin signo, es decir que abs(2,345) y abs(-2,345) en ambos casos nos devolveran 2,345
Las funciones Int y Fix nos permiten obtener la parte entera de un numero, la unica diferencia entre ambos es que Int nos devolvera la parte entera proxima y grande y Fix nos devolvera la parte entera mas proxima y chica siempre y cuando los valores sean negativos de lo contrario siempre devolvera la parte entera excluyendo los decimales, tomemos el ejemplo anterior y hagamos la siguiente modificacion
num = 13
base = 10
wscript.echo(int(-(LogBase(num, base))))
wscript.echo(fix(-(LogBase(num, base))))
Function LogBase (numero, base)
LogBase = Log(numero) / Log(Base)
end Function
En este caso cambiaremos a LogBase de sub a function para que devuelve el resultado en lugar de mostrarlo, eliminamos la linea de wscript.echo, despues usaremos dos wscript.echo el primero para mostrar a int con el resultado de LogBase pero con el signo de menos adelante al resultado lo convertiremos en negativo, la siguiente linea hace exactamente lo mismo pero con Fix, si lo ejecutamos veremos estas salidas:

En la primer ventana vemos el resultado de Int en el segundo de Fix, si hubieran sido valores positivos nos hubiera devuelto 1 en ambos casos.
Functiones de redondeo
La funcion Round es la que se encarga de designar cuantos decimales queremos mostrar despues de la coma, puede ser desde cero hasta el que necesitemos, su sintaxis es:
round(valor, cantidade de decimales)
Para entender mejor el concepto tomemos nuevamente el primer ejemplo con la ultima modificacion y volvamos a cambiarlo de la siguiente manera:
num = 13
base = 10
texto = "Num. original: " & LogBase(num, base) & chr(10)
texto = texto & "Num. con 5 digitos: " & round(LogBase(num, base),5) & chr(10)
texto = texto & "Num. con 0 digitos: " & round(LogBase(num, base))
wscript.echo(texto)
Function LogBase (numero, base)
LogBase = Log(numero) / Log(Base)
end Function
En este caso usaremos una variable llamada texto, en ella indicaremos primero la operacion que realizamos y luego la operacion, la primera linea llama directamente a la funcion LogBase, en la segunda linea usamos a round y el cinco detras de la funcion le dice que utilice hasta 5 digitos, y por ultimo le pasamos a round directamente la funcion, en los primeros casos de texto agregamos a chr(10) al final para que emule al caracter nueva linea, y la expresion: texto = texto & , le dice al lenguaje que al contenido anterior le agregue lo que esta despues del ampersand (&), por ultimo mostramos el resultado final, veamos como es la salida

Como pueden ver se ejecuto perfectamente lo que habiamos solicitado, una aclaracion final cuando round se utiliza sin digitos como en el ejemplo trabaja de la misma forma que Fix.
En resumen, hoy hemos visto las operaciones mas comunes arimeticas, como son las logaritmicas y exponenciales, la raiz cuadrada, la indicadora de signo, y por ultimas las distintas opciones de redondeo disponibles, espero les haya sido util sigueme en tumblr, Twitter o Facebook para recibir una notificacion cada vez que subo un nuevo post en este blog, nos vemos en el proximo post.
Tengo un Patreon donde podes acceder de manera exclusiva a material para este blog antes de ser publicado, sigue los pasos del link para saber como.
Tambien podes comprar mi libro sobre VBscript en Amazon


Tambien podes donar
Es para mantenimiento del sitio, gracias!
$1.50