Anuncios

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.

Anuncios

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
Anuncios

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.

Anuncios

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
Anuncios

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
Anuncios

Funciones de redondeo

Anuncios

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

Anuncios

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
Anuncios

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.

Anuncios

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)
Anuncios

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
Anuncios

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.

Anuncios

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.

Anuncios

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.00