Operación módulo

A estas alturas todos deberíamos saber bastante bien para que sirve la operación módulo( osea, %), pero como mis dos siguientes post trataran con esta operación de manera activa, vamos a explicar  un gran truco que nos ofrece y que a veces pasa por alto.

El uso principal que nos ofrece % es simplemente obtener el resto de una división.
Por ejemplo :
9 / 5 = 1 y 9 % 5 = 4
10/5 = 2 y 10 % 5 = 0

Si hacemos un pequeño for que nos muestre los módulos obtenemos:

for(int i = 0; i < 12; ++i)
       System.out.println(i + " tiene modulo " + i%5);

0 tiene modulo 0
1 tiene modulo 1
2 tiene modulo 2
3 tiene modulo 3
4 tiene modulo 4
5 tiene modulo 0
6 tiene modulo 1
7 tiene modulo 2
8 tiene modulo 3
9 tiene modulo 4
10 tiene modulo 0
11 tiene modulo 1
etc…

Por tanto x % 5 = 0..4

Y ¿Cómo podemos aplicar esto de otra manera? Si nos fijamos la operación % tiene una naturaleza circular y esto es muy útil en los arrays o listas circulares o para moverse por una variable de esta manera.

¿Cuántos de vosotros no habéis hecho esto?

int i = 0;

while(Condición){
   Operaciónes

   ++i; // Para evitar la sobre asignación.

   if( i == Límite)
        i = 0;
}

Con ese código nos queremos mover desde 0..Límite, por tanto podemos usar la operación módulo.

int i = 0;

while(Condición){
   Operaciónes
   i = (++i) % Límite;
}

Con lo que nos quitamos una condición y todo queda más compacto. Es muy importante que sea ++i y no i++, ya que la manera en la que estos funcionan es diferente(¡Y aquí es donde comprobamos su utilidad!).

¿Y con los arrays? Supongo que todos ya sabéis que es lo que va a pasar.
Modulo y arrays

Con lo cual es una manera sencilla y efectiva de recorrer un sistema circularmente sin pasarnos de la ralla por despiste.

Como dije antes, esta operación es realmente útil y tiene que tenerse en cuenta.Lo veremos más tarde en los ejemplos que desarrollaré.

Un saludo.

Anuncios

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s