# definir un limite o rango a una variable?

**URL:** <https://forum.arduino.cc/t/definir-un-limite-o-rango-a-una-variable/647765>\
**Category:** Software\
**Created:** [April 10, 2020, 4:16am UTC](https://forum.arduino.cc/t/definir-un-limite-o-rango-a-una-variable/647765 "2020-04-10T04:16:03Z")\
**Posts on this page:** 5\
**Page:** 1

<div class="post-metadata">

**Author:** ![christian\_zb](https://avatars.discourse-cdn.com/v4/letter/c/ac8455/32.png) [@christian\_zb](https://forum.arduino.cc/u/christian_zb)\
**Post date:** [April 10, 2020, 4:16am UTC](https://forum.arduino.cc/t/definir-un-limite-o-rango-a-una-variable/647765/1 "2020-04-10T04:16:03Z")

</div>

hola soy nuevo en programación y quiero saber si hay alguna forma de establecer un rango de valores a una variable.

En mi caso quiero usar una variables que solo puedan tomar valores de 0 a 24 solamente, y su función es para un temporizador con 5 salidas cada una de ellas con un tiempo ajustable.

se que se puede hacer con un ciclo de if para que cuando llegue a 24 y se incremente se le vuelva a asignar su valor a 0, pero aplicarlo a cada una de las salidas hace que el codigo se extienda mucho

---

<div class="post-metadata">

**Author:** ![victorjam](https://dub1.discourse-cdn.com/arduino/user_avatar/forum.arduino.cc/victorjam/32/218315_2.png) [@victorjam](https://forum.arduino.cc/u/victorjam)\
**Post date:** [April 10, 2020, 6:08am UTC](https://forum.arduino.cc/t/definir-un-limite-o-rango-a-una-variable/647765/2 "2020-04-10T06:08:32Z")

</div>

No queda otro remedio que controlar las variables una a una, al menos, en mi humilde opinión, puede que alguien sepa algo que yo no sepa.

Si es por cuestión de no repetir muchas veces el mismo codigo puedes usar una función.

Cuando una variable se incrementa o decrementa dentro de un rango y tengo varias, suelo utilizar una funcion incrementar/decrementar.

```cpp
int incrementar(int &variable, int minimo, int maximo) {
  variable++;
  if ( variable > maximo ) variable=minimo;
  return variable;
}

int decrementar(int &variable, int minimo, int maximo) {
  variable--;
  if ( variable < minimo ) variable=maximo;
  return variable;
}

```

Dentro del código cuando has de modificar una variable llamo a esas funciones. En tu caso dices que las variables van de 0 a 24, así que cuando haya que incrementar/decrementar una variable llamo a la función:

```cpp
if ( condicion_incremento ) incrementar(variable, 0, 24);
if ( condicion_decremento ) decrementar(variable, 0, 24);

```

Si quieres ahorrar aun mas, puedes definir dos variables minimo y maximo fuera de las funciones y simplificar las funciones.

```cpp
int minino = 0;
int maximo = 24;

int incrementar(int &variable) {
  variable++;
  if ( variable > maximo ) variable=minimo;
  return variable;
}
int decrementar(int &variable) {
  variable--;
  if ( variable < minimo ) variable=maximo;
  return variable;
}
...

void loop() {
  ..
  if ( condicion_incrementar ) incrementar(variable);
  if ( condicion_decrementar ) decrementar(variable);
  ...
}

```

En la declaración de la función notaras que pongo un "&" delante de la variable.

```cpp
int incrementar(int &variable)

```

Eso convierte el parametro en la función en un parametro por referencia, en cristiano, que puedes modificar la variable dentro del código de la función y lo que estaras modificando será la variable que le pases como parametro.

---

<div class="post-metadata">

**Author:** ![\_jose](https://dub1.discourse-cdn.com/arduino/user_avatar/forum.arduino.cc/_jose/32/217136_2.png) [@\_jose](https://forum.arduino.cc/u/_jose)\
**Post date:** [April 10, 2020, 8:50am UTC](https://forum.arduino.cc/t/definir-un-limite-o-rango-a-una-variable/647765/3 "2020-04-10T08:50:16Z")

</div>

Esto podria valerte [constrain() - Arduino Reference](https://www.arduino.cc/reference/en/language/functions/math/constrain/)

---

<div class="post-metadata">

**Author:** ![christian\_zb](https://avatars.discourse-cdn.com/v4/letter/c/ac8455/32.png) [@christian\_zb](https://forum.arduino.cc/u/christian_zb)\
**Post date:** [April 11, 2020, 2:15am UTC](https://forum.arduino.cc/t/definir-un-limite-o-rango-a-una-variable/647765/4 "2020-04-11T02:15:14Z")

</div>

perfecto! muchas gracias para ambos, muy útil la información.

---

<div class="post-metadata">

**Author:** ![system](https://dub1.discourse-cdn.com/arduino/user_avatar/forum.arduino.cc/system/32/1140315_2.png) [@system](https://forum.arduino.cc/u/system)\
**Post date:** [May 7, 2021, 12:39am UTC](https://forum.arduino.cc/t/definir-un-limite-o-rango-a-una-variable/647765/5 "2021-05-07T00:39:28Z")

</div>


