martes, 3 de noviembre de 2015

Un pequeño mnemotécnico.

Cuando trabajamos con los números enteros, existe una relación muy útil entre las comparaciones estrictas y las no estrictas. Es esta [$$a\le b \iff a<b+1$$] Igualmente su simétrica, [$$a\ge b \iff a+1>b$$]Con aritmética modular, la que se suele usar en computación debido a la precisión finita, es algo más imperfecto ya que no funciona en los casos extremos [$$a\le MAX; a< MIN$$] Donde [$MIN$] es el menor entero representado y [$MAX$] el mayor entero representado. Al usar aritmética modular [$$MAX+1=MIN$$]Por esa razón aunque [$a\le MAX$] es siempre cierto, al usar la relación "equivalente" obtenemos [$a< MAX+1 = MIN$] que es siempre falso.

Advirtiendo este caso, la única pega es acordarse si el [$+1$] se añade con el [$<$] o con el [$\le$] y si a un lado o al otro. Aquí entra en juego la regla mnemotécnica. El [$+1$] aparece en el lado mayor de la relación no estricta. Podemos imaginarnos como la rayita del igual se convierte en el [$1$] y podemos recordar el lado mayor ya que [$+1$] lo hace mayor.

Esta relación es muy útil para simplificar código ya que permite homogeneizar todas las condiciones de enteros (si no llegan a [$MIX$] o [$MAX$], claro). Otra relación también conocida es la de la negación [$$¬(a<b)\iff a\ge b$$] y su complementaria y simétricas.

2 comentarios:

helq dijo...

Hola Gadelan. Probablemente no leas esto nunca (:S). Pero aún así te quería comentar que siempre has tenido un lector fiel. Tus blogs fueron parte de mi formación en programación, matemáticas y otras cosas durante mis años años de formación en la universidad. Gracias a la blogósfera, que ahora parece muerta, a tu blog y a otros, aprendí muchas cosas. Y por cosas raras de la vida, terminé estudiando en áreas similares a las que escribías (sobretodo en computación, programación funcional y esas cosas). Si llegas a leer este comentario, no importa cuando sea, envíame un email, manda una paloma a volar o con señales de humo hazme saber en dónde publicas tus pensamientos hoy en día, tu cuenta de github, twitter o lo que sea que uses. Muchas gracias por compartir tus pensamientos e ideas con el mundo. Te deseo muy buen día :)

Gadelan dijo...

Hola helq. Sigo por aquí. Bastante más viejo, pero vivo aún. Se interponen entre mi blog y yo tres hijos, una empresa propia y recientemente la situación creada por el virus que ha complicado muchísimo mis horarios. Siempre ha sido mi idea continuar con el blog e, incluso, migrarlo a otras plataformas más actuales (por ejemplo, github.io) pero es imposible con el tiempo del que dispongo hoy en día.

Últimamente estoy siguiendo el lenguaje de programación Typescript (tiene algunas ideas para el sistema de tipo bastante curiosas) y he llegado a programar un pequeño juego. He tardado varios años en terminarlo mientras los niños crecían. Puedes probarlo en https://avazquezcomics.blogspot.com/2020/09/caleorn-el-juego-de-tab-ordenador.html

Puedes seguirme también (aunque no hago mucho por allí) en https://github.com/gadelan y en https://twitter.com/g_gadelan. El Twitter lo tengo más relacionado con el dibujo y tampoco es que escriba mucho.

Un saludo y muy emocionado de que algo de lo que he hecho aquí te haya podido ayudar o, incluso, inspirar.

Publicar un comentario