Teoría

05) Variables - Tipos de datos y Aritmética

En esta sección los temas a tratar son los siguientes:

  • VARIABLE
  • TIPOS DE DATOS
  • ARITMETICA
  • ASIGNACIONES COMPUESTAS
  • OPERADORES DE COMPARACION
  • CONSTANTES
  • OPERADORES LOGICOS

VARIABLE

Una variable es una forma de llamar y almacenar un valor numérico para usarse después por el programa. Como su nombre indica, las variables son números que pueden cambiarse continuamente al contrario que las constantes, cuyo valor nunca cambia. Una variable necesita ser declarada y, opcionalmente, asignada al valor que necesita para ser almacenada.

int inputVariable = 0;                 //declara una variable y asigna el valor a 0

inputVariable = analogRead(2);  //ajusta la variable al valor del pin analógico 2

Una vez que una variable ha sido asignada, o reasignada, es posible testear su valor para ver si cumple ciertas condiciones, o puedes usarlo directamente.

if(inputVariable < 100) //comprueba si la variable es menor que 100
{
inputVariable = 100; //si es cierto asigna el valor 100
}
delay(inputVariable); //usa la variable como retardo

Declaración de una Variable

Todas las variables tienen que ser declaradas antes de que puedan ser usadas. Declarar una variable significa definir su tipo de valor, como int, long, float, etc., definir un nombre específico, y, opcionalmente, asignar un valor inicial. Esto sólo necesita hacerse una vez en un programa pero el valor puede cambiarse en cualquier momento usando aritmética y varias asignaciones.

int inputVariable = 0;

Una variable puede ser declarada en un varias posiciones en todo el programa y dependiendo de la parte en la que se encuentre esta definición será posible determinar que partes del programa pueden usar la variable.

Ambito de la variable

Una variable puede ser declarada al comienzo del programa antes del void setup(), localmente dentro de funciones, y algunas veces en un bloque de declaración, por ejemplo bucles for. Donde la variable es declarada determina el ámbito de la variable, o la habilidad de ciertas partes de un programa de hacer uso de la variable.
Una variable global es una que puede ser vista y usada por cualquier función y declaración en un programa. Esta variable se declara al comienzo del programa, antes de la función void setup().
Una variable local es una que se define dentro de una función o como parte de un bucle for. Sólo es visible y sólo puede ser usada dentro de la función en la cual fue declarada. Además, es posible tener dos o más variables del mismo nombre en diferentes partes del programa que contienen diferentes valores.

int value; // 'value' es visible por cualquier función
void setup()
{
}
void loop()
{
       float f; //'f' es sólo visible dentro de loop

       for(int i=0; i<20;) //'i' es sólo visible dentro del bucle for
       {
       i++;

       }
}

TIPOS DE DATOS

boolean

Es una variable que únicamente puede tener, el estado de 1 lógico TRUE o el estado de 0 lógico FALSE

boolean My_Variable = true;

byte

Byte almacena un valor numérico de 8 bits sin puntos decimales. Tienen un rango de 0 a 255.

byte someVariable = 180; //declara 'someVariable' como un tipo byte

char

Esta variable puede contener valores unicamente que estan entre el rango de 0 a 255 y representan a un caracter dentro del código ascci. Esta nomenclatura se utiliza para indicar que se esta trabajando con un caracter especifico.

char myChar = 'A';
char myChar = 65; // ambos son equivalentes

01 assci

Figura 01: Código Assci

unsigned char

Es un tipo de datos sin signo que ocupa 1 byte de memoria. Igual que el tipo de datos byte. El tipo de datos char sin signo codifica números de 0 a 255. Para tener coherencia en la  programación de Arduino, es recomendable utilizar el tipo de dato byte, sin embargo indique esto para que se tenga en cuenta que existe este tipo de dato.

unsigned char myChar = 240;

int
Enteros son los tipos de datos primarios para almacenamiento de números sin puntos decimales y almacenan un valor de 16 bits con un rango de -32,768 a 32,767.

int someVariable = 1500; //declara 'someVariable' como tipo int

unsigned int

Este tipo de dato  unsigned int (enteros sin signo)  almacenan un valor de 2 bytes pero en lugar de almacenar valores negativos sólo almacenan valores positivos, en un rango útil de 0 a 65.535 (2 ^ 16) - 1).

unsigned int ledPin = 13;

unsigned int x
    x = 0;
    x = x - 1; // x ahora contiene 65535
    x = x + 1; // x ahora contiene 0

word

Es una variable que almacena un valor de16 bits con un rango de 0 a 65535

word MyWord = 47231;

long
Tipo de datos de tamaño extendido para enteros largos, sin puntos decimales, almacenados en un valor de 32 bits con un rango de -2.146.483.648 a 2.147.483.647

long MyVariable = 90000; //declara 'MyVariable ' como tipo long

long Velocidad = 186000L;

unsigned long

Las variables largas unsigned long, son variables de tamaño extendidas y almacenan 32 bits (4 bytes). A diferencia de los longs estándar, los unsigned long no almacenan números negativos, haciendo que su rango de 0 a 4.294.967.295 (2 ^ 32 - 1).

unsigned long time; 

short

Un short es un tipo de datos de 16 bits, almacena un valor de 16 bits (2 bytes). Esto comprende un rango de -32.768 a 32.767 (valor mínimo de -2 ^ 15 y un valor máximo de (2 ^ 15) - 1).

short ledPin = 13;

float

Un tipo de datos para números en punto flotante, o números que tienen un punto decimal. Los números en punto flotante tienen mayor resolución que los enteros y se almacenan como valor de 32 bits con un rango de -3.4028235E+38 a 3.4028235E+38.

float someVariable = 3.14; //declara 'someVariable' como tipo float

double

Es un número de punto flotante de doble precisión, ocupa 4 bytes. Es decir, la aplicación double es exactamente igual que el float.

string - char array

Las cadenas de texto se pueden representar de dos maneras. Puede utilizar el tipo de datos String, que forma parte del core a partir de la versión 0019, o se puede representar como una cadena de una matriz de tipo char y con terminador nulo.

char Str1[15];
char Str2[8] = {'a', 'r', 'd', 'u', 'i', 'n', 'o'};
char Str3[8] = {'a', 'r', 'd', 'u', 'i', 'n', 'o', '\0'};
char Str4[ ] = "arduino";
char Str5[8] = "arduino";
char Str6[15] = "arduino";

String - object

La clase String, parte del core a partir de la versión 0019, permite usar y manipular cadenas de texto de formas más complejas que las matrices de caracteres. Puedes concatenar cadenas, añadirlas, buscar y reemplazar subcadenas y más. Se necesita más memoria que una matriz de caracteres simple, pero también es más útil.

String stringOne = "Hello String";
String stringOne = String('a');
String stringTwo = String("This is a string");

Arrays

Un array es una colección de valores que son accedidos con un índice numérico. Cualquier valor en el array debe llamarse escribiendo el nombre del array y el índice numérico del valor. Los arrays están indexados a cero, con el primer valor en el array comenzando con el índice número 0. Un array necesita ser declarado y opcionalmente asignarle valores antes de que puedan ser usados.

int myArray[] = {value0, value1, value2...};

Asimismo es posible declarar un array declarando el tipo del array y el tamaño y luego asignarle valores a una posición del índice.

int myArray[5]; //declara un array de enteros con 6 posiciones
myArray[3] = 10; //asigna a la cuarta posición del índice el valor 10

Para recibir un valor desde un array, asignamos una variable al array y la posición del índice:

x = myArray[3]; //x ahora es igual a 10

ARITMETICA

Los operadores aritméticos incluyen suma, resta, multiplicación y división. Retornan la suma, diferencia, producto o cociente (respectivamente) de dos operandos.

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

La operación es llevada a cabo usando del tipo de datos de los operandos, así 9/4 devuelve 2 en lugar de 2.25. Si los operandos son de tipos diferentes, el tipo mayor es usado para el cálculo.

ASIGNACIONES COMPUESTAS

Las asignaciones compuestas combinan una operación aritmética con una asignación de variable. Estas son muy frecuentemente encontradas en bucles for. Las asignaciones compuestas más comunes se presentan a continuación:

x++; //lo mismo que x = x+1
x--; //lo mismo que x = x-1
x += y; //lo mismo que x = x+y
x -= y; //lo mismo que x = x-y
x *= y; //lo mismo que x = x*y
x /= y; //lo mismo que x = x/y

OPERADORES DE COMPARACION

Los operadores de comparacion son usados para comparar valores y asi poder tomar decisiones a menudo se utilizan en declaraciones if para comprobar si una condición específica es cierta.

x == y;     //x es igual a y
x != y;      //x no es igual a y
x < y;      //x es menor que y
x > y;      //x es mayor que y
x <= y;    //x es menor o igual que y
x >= y;    //x es mayor o igual que y

CONSTANTES

Las contantes son variables que una vez definidas no podrán ser modificadas en todo el funcionamiento del programa.

Se pueden declarar utilizando el modificador const y esta variable será únicamente de lectura.

const byte myVariable =15;

El lenguaje de C que utiliza Arduino también permite declarar contantes mediante la palabra clave #define para definirlas.

#define Mi_Variable "MI CADENA DE CARACTERES"

También existen constantes que forman parte de Arduino y cada una es considerada como una palabra clave y representa un valor especifico como es el caso de true/false, high/low, input/output.

true/false
Estas son constantes Booleanas que definen niveles lógicos. FALSE se define como 0 (cero) mientras TRUE es 1 o un valor distinto de 0.

if(b == TRUE)
{
realiza algo;
}

high/low
Estas constantes definen los niveles de pin como HIGH o LOW y se usan cuando se leen o se escriben en los pines digitales. HIGH esta definido como el nivel 1 lógico, ON ó 5 V, mientras que LOW es el nivel lógico 0, OFF ó 0 V.

digitalWrite(13, HIGH);

input/output
Constantes usadas con la función pinMode() para definir el modo de un pin digital como INPUT u OUTPUT.

pinMode(13, OUTPUT);

OPERADORES LOGICOS

Son operadores que permiten modificar una variable a nivel de bits.

Estos operadores se pueden utilizar cuando se trabajan con variables  char, int, long.

Tipo Signo
Negación
~
AND &
OR Exclusiva ^
OR Inclusiva |

 Tabla 1: Operadores Bit a Bit

Operadores Logicos

Tabla 2: Operadores Lógicos

Los operadores lógicos son usualmente una forma de comparar dos expresiones y devolver un VERDADERO o FALSO dependiendo del operador. Existen tres operadores lógicos, AND (&&), OR (||) y NOT (!), que a menudo se utilizan en estamentos de tipo if:

Logica AND:

if (x > 0 && x < 5) // cierto sólo si las dos expresiones son ciertas

Logica OR:

if (x > 0 || y > 0) // cierto si una cualquiera de las expresiones es cierta

Logica NOT:

if (!x > 0) // cierto solo si la expresión es falsa

© 2017 Innova Domotics - Todos los derechos reservados