3USD tu primer mes de Premium 😱 Canjear promo No me interesa

notifications Notificaciones

Marcar todas como leídas

Ver más

lightbulb_outline

Un caso curioso para usar el módulo %

timer 3 Min.

remove_red_eye 1005

calendar_today 24/03/20

Programar es usar de manera creativa tu conocimiento, para instruirle a la computadora lo que tiene que hacer, en muchas ocasiones, la solución a un problema se encuentra detrás de algo que ya conocemos, pero que aún no concebimos como una alternativa para solucionar problemas.

Por eso decidí escribir acerca de una de las soluciones más divertidas a través del operador del módulo.

El operador del módulo

El operador del módulo, usualmente representado por el % en la mayoría de los lenguajes de programación, nos entrega el residuo de una división.

Ejemplo de una división 21 / 2, destacando el 1 como residuo

En una operación que en pseudocódigo puede verse así: 21 % 2, el resultado de la expresión sería 1, el residuo de dividir 21 entre 2, sin usar puntos decimales.

El ejemplo del módulo

Usualmente, el operador módulo es explicado en cursos de programación con el mismo ejemplo, algo como Encuentra los números que son par de un arreglo , en estos casos se puede identificar un número como par si es divisible entre 2 sin dejar residuos.

Y aunque existen escenarios para esta clase de problemas, ¿qué tan seguido en tu carrera profesional has tenido que usar un ejemplo como éste?

Poniéndonos creativos

No sé si es una práctica común en otras escuelas, pero en la mía, había actividades donde se requería formar N cantidad de equipos, para hacer que los equipos se formarán de manera aleatoria, el maestro nos pedía que contáramos consecutivamente hasta cierto número, para luego volver a empezar, al final, todos los que habían contado el mismo número se juntaban en un mismo equipo.

Por ejemplo, si necesitábamos 5 equipos, cada alumno contaba un número hasta llegar a 5: 1, el siguiente 2, el siguiente 3, el siguiente 4, el siguiente 5 y luego volver a empezar en 1, así sucesivamente. Eventualmente todos los 1, se juntaban en un equipo, todos los 2, en otro equipo, etc.

¿Cómo podrías hacer eso en programación? ¿Cómo le instruyes a una computadora que de una secuencia de elementos, los agrupe en N cantidad de grupos, de manera consecutiva, tal como lo explicamos anteriormente.

La respuesta: Usar el operador del módulo.

Es probable que para ti parezca obvio, pero cada que pienso en esta solución se me hace muy curiosa y una representación de lo creativo que es solucionar problemas en programación.

Cada que quieras separar tus elementos en N cantidad de grupos, puedes usar el módulo. Sin importar que valor le entregues al módulo, la respuesta del operador se encontrará en el rango de 0 a (N-1), siendo N el número que divide. Por ejemplo, si aplicamos el módulo y como divisor 5, todos los valores posibles que entregará el operador módulo están en el rango de 0 a 4(5-1).

0 % 5  => 0
1 % 5  => 1
2 % 5  => 2
3 % 5  => 3
4 % 5  => 4
5 % 5  => 0
6 % 5  => 1
7 % 5  => 2

Nota como la secuencia de respuesta es igual al ejemplo de mis clases, comenzamos a contar del 0 al 4 y luego volvemos a comenzar. Sin importar de qué tamaño sean las cifras, el rango de respuestas es el mismo:

1273123 % 5  => 3
8777 % 5 => 2
10000 % 5 => 0

Un ejemplo práctico donde decidí usar esta característica del módulo es en una gráfica de gantt que hice para el sitio de la campaña #AprendiendoEnCasa de CódigoFacilito. La gráfica se ve así:

Ejemplo de gráfica de Gantt donde vemos tarjetas separadas en 3 posibles filas

De ante mano sé que, en este ejemplo, habrá a lo mucho 3 cursos en la misma fecha, por lo que quiero separar mis cursos de manera consecutiva, en 3 distintas filas. El primer curso en la primer fila, el segundo en la segunda fila, el tercero en la tercer fila, el cuarto de nuevo a la primera fila, el quinto a la segunda fila, y así sucesivamente.

Un trabajo perfecto para el módulo, usando como divisor 3, para recibir resultados en el rango del 0 al 2.

Qué podemos aprender de esto

Algunas cosas que me hacen reflexionar de esta clase de soluciones:

  1. La programación es una expresión de la creatividad
  2. Hay muchas formas de solucionar el mismo problema
  3. Las matemáticas no son necesarias para iniciar, pero eventualmente son de mucha utilidad, incluso en problemas sencillos como éste

¿Tienes alguna solución que te cause este tipo de curiosidad? Cuéntame en los comentarios

Otros artículos del blog

Comunidad