2.7 Operadores aritméticos

Arduino maneja los siguientes operadores aritméticos:

= operador de asignación

Almacena el valor a la derecha signo de igualdad en la variable a la izquierda del signo de igualdad.

Es importante notar que este operador de asignación del lenguaje de programación de C tiene un significado diferente del que se le da comúnmente en álgebra donde indica una ecuación o una igualdad.

Ejemplo:

int sensVal;                 // declara una variable int llamada  sensVal
sensVal = analogRead(0);  // almacena en sensVal (tras digitalizarlo) el voltaje  medido en el pin analógico 0 
 
 
 
 
  • Notas importantes:  La variable en el lado izquierdo del operador de asignación (= ) necesita poder almacenar el valor que se le asigna. Si la variable no es lo suficientemente grande (int en vez de long int, por ejemplo), el valor almacenado en la variable será incorrecto.
  • No confunda al operador de asignación [=] (un único signo de igualdad) con el operador de comparación [==] (dos signos de igualdad), que evalúa si dos expresiones son iguales.
 

Adición, substracción, multiplicación, y división

Estos operadores devuelven la suma, la diferencia, el producto, o el cociente (respectivamente) de los dos operandos. La operación se lleva a cabo usando el tipo de datos de los operandos, así pues, por ejemplo, 9/4 da 2 puesto que 9 y 4 son ints.

Esto también significa que la operación puede desbordar si el resultado es más grande que el que se pueda almacenar en el tipo de datos (por ejemplo, añadiendo 1 a un int con el valor 32.767 da -32.768). Si los operandos son de diversos tipos, el tipo “más grande” se utiliza para el cálculo.

Si uno de los números (operandos) es del tipo float o de tipo double, el cálculo ser realizará en coma flotante.

Ejemplos

y = y + 3;
x = x - 7;
i = j * 6;
r = r / 5;

Sintaxis

resultado = valor1 + valor2;
resultado = valor1 - valor2;
resultado = valor1 * valor2;
resultado = valor1 / valor2; 

Parametros:

valor1: cualquier variable o constante
valor2: cualquier variable o constante

Notas importantes:

 
 
 
 
  • Ten en cuenta que las operaciones entre constantes de tipo int se almacenan por defecto en una variable tipo int, de manera que en algunos cálculos entre constantes (por ejemplo 60* 1000) el resultado puede desbordar la capacidad de almacenamiento de una variable int y devolver un resultado negativo.
  • Elije variables de tamaño suficientemente grande para que puedan almacenar los resultados de los cálculos por grandes que estos sean.
  • Para cálculos con fracciones usa variables en coma flotante (float), pero sea consciente de sus desventajas: utilización de más memoria, lentitud de cálculo.
  • Utilice la función de conversión myFloat para convertir un tipo variable a otro de manera rápida.
 

% (módulo):

El operador % (módulo) calcula el resto cuando un número entero es dividido por otro. Es útil para guardar una variable dentro de una gama particular (por ejemplo, el tamaño de un array). Su sintaxis es la siguiente:

resultado = dividendo % divisor

Ejemplos:

x = 7 % 5;   // x contiene 2
x = 9 % 5;   // x contiene 4
x = 5 % 5;   // x contiene 0
x = 4 % 5;   // x contiene 4

Ejemplo en un sketch:

/* modifica posición a posición los valores de un array volviendo a empezar en la primera posición (0) cuando se halla llegado a la última (9) */

int values[10];
int i = 0;

void setup() {}
void loop()
{
  values[i] = analogRead(0);
  i = (i + 1) % 10;   // modulo operator rolls over variable  
}
 
 
 
 
  • El operador modulo no funciona con variables tipo float.