Bienvenidos sean a este post, hoy hablaremos sobre los primeros operadores de este lenguaje como son los arimeticos, estos son:

Anuncios
SignoDescripcion
+Para sumar
Para restar
*Para multiplicacion
/Para division
^Para exponenciacion
% Devuelve el modulo o el resto de una division
Se usa para negacion

En este caso son los operadores estandar de todos los lenguajes, salvo por el de negacion donde en lugar de utilizar el signo de admiracion (!) utilizar el mismo signo que el de resta, estos operadores cumplen su cometido con numeros reales, por ejemplo en el caso de hacer x^0.5 nos calculara la raiz cuadrada de x, o si usamos x^(1/3) nos calculara la raiz cubica de x, para argumentos de tipo entero podemos decir que siempre tiene el mismo significado con el resultado, este siempre tendra el mismo signo que el segundo argumento, para argumentos de tipo real tiene algunos usos extra, por ejemplo x%1 es la parte fraccional de x en cambio x-x%1 es la parte entera de x, lo mismo con x-x%0.01 porque eliminamos los ultimos dos digitos, el signo modulo esta definido por la siguiente regla:

a%b == a - floor(a/b)*b

Donde decimos que obtener el modulo de la division de a y b es igual a menos el valor entero de la division de a y b multiplicado por b, una cosa equivale a la otra, nosotros tomando este concepto y lo visto anteriormente podemos obtener el valor entero de una variable de la siguiente forma:

tinchicus@dbn001dsk:~/lenguaje/lua$ lua5.3
Lua 5.3.3  Copyright (C) 1994-2016 Lua.org, PUC-Rio
> pi = math.pi
> print(pi)
3.1415926535898
> print(pi - pi%0.01)
3.14
> print(pi - pi%1)
3.0
>

Observen como aplicando los modulos anteriormente visto pudimos reducir del valor original de math.pi a su valor entero, para nuestro siguiente ejemplo con el signo de modulo usaremos el concepto de calcular el angulo de la rueda de un auto en reversa, si lo hicieramos en grado podemos usar el siguiente calculo:

Anuncios
tinchicus@dbn001dsk:~/lenguaje/lua$ lua5.3
Lua 5.3.3  Copyright (C) 1994-2016 Lua.org, PUC-Rio
> tolerancia = 10
> function isturnback(angulo)
>> angulo = angulo % 360
>> return (math.abs(angulo - 180) < tolerancia)
>> end
> print(isturnback(-180))
true
>

En este caso tenemos una variable llamada tolerancia con un valor, lo siguiente es la funcion isturnback el cual tendra un argumento que sera el angulo que informemos, nuestro siguiente calculo sera reemplazar el valor de angulo con el modulo de angulo dividido 360, luego devolveremos el valor booleano del valor absoluto, por medio de abs, de angulo menos 180 y que sea menor al valor informado de tolerancia, cuando imprimimos la funcion como pueden ver nos devuelve verdadero, apliquemos el mismo caso anterior pero para radianes:

> tolerancia = 0.17
> function isturnback(angulo)
>> angulo = angulo % (2*math.pi)
>> return (math.abs(angulo - math.pi) < tolerancia)
>> end

En este caso, hicimos una variacion donde en lugar de usar el numero de 360, que corresponde a los grados, utilizamos el numero de pi multiplicado por 2, despues nos devolvera la misma situacion pero esta vez es para mantenerse dentro del intervalo 0,2pi.

Anuncios

En resumen, hoy hemos visto los operadores arimeticos, hemos visto una breve descripcion, hemos trabajado con el operador de modulo, hemos visto algunos ejemplos, espero les haya sido util sigueme en Twitter o Facebook para recibir una notificacion cada vez que subo un nuevo post en este blog, nos vemos en el proximo post.

Tambien podes donar

Es para mantenimiento del sitio, gracias!

$1.00