Mostrando las entradas con la etiqueta Lenguajes de programación. Mostrar todas las entradas
Mostrando las entradas con la etiqueta Lenguajes de programación. Mostrar todas las entradas

martes, 17 de mayo de 2016

El error de la base octal en Java



Todo empezó con una sencilla pregunta

¿Cuál es el resultado de la siguiente línea de código en java?:
int suma = 023 + 010;
System.out.println(suma); 
Pero utilizar la regla de "el cero a la izquierda no tiene valor" es la alternativa equivocada:
Lo que en lenguaje natural procesamos como una suma de resultado = 33;
para Java, el 0 a la izquierda se utiliza para expresar números en base 8, por lo que la suma tiene un resultado distinto:
  • 023 = 2*8 + 3 = 19:
  • 010 = 1*8 + 0 = 8;
  • 19 + 8 = 27.

Pueden comprobarlo en este compilador online, copiando/pegando las líneas de código puestas arriba.

Entonces, dicho con expresiones Java: 23 != 023
Y nótese que hasta el analizador web de sintaxis los muestra de distintos colores.

Bases aritméticas en Java

Java comprende el uso de base decimal, hexadecimal, octal y binaria.
Y se utilizan de la siguiente manera:
// Base decimal (10), comprende dígitos [0-9]
int decimal = 495; 
// Base hexadecimal (16), empieza con 0x o 0X, comprende dígitos y letras [0-9A-Fa-f]
int hexa = 0x1EF;  
// Base octal (8), empieza con 0, comprende dígitos [0-7]
int octal = 0757; 
// Base binaria (2), empieza con 0b o 0B, y comprende dígitos [0-1]
int binario = 0b111101111;
¿El problema es el lenguaje natural, o el problema es java?

Así como el error de interpretación; puede surgir un error de concatenación (para algoritmos de seguridad y encriptación, por ejemplo)
Entonces, pensando en calcular un número, internamente Java calculará su equivalente en base octal... lo que potencialmente podría significar un error.

Mi propuesta:
Como la gente de Sun Microsystems Oracle sigue diariamente mi humilde blog, propongo que -tal cual base 2 y base 16, utilicen una notación especial para base 8: 0b, 0x, y 0o respectivamente.
(Y no, el "0" no se confunde con la "o", porque hasta la RAE ya eliminó la "ó" usada antiguamente para diferenciarla del cero).
Así que aquí la lanzo, aunque sea otra idea muerta en el ciberespacio.



Recibe en tu correo electrónico las últimas actualizaciones de éste blog:
Ingrese su e-mail:
(y no olvide confirmar su suscripción)
También me encuentras en facebook. También en twitter. También en tumblr.

martes, 3 de enero de 2012

Los lenguajes de programación más utilizados durante 2011


Como fan acérrimo de Java, publico con mucho gusto y orgullo ésta lista porque, claro, Java está (permanece) en el primer lugar :)



Fuentes:
También en Punto Geek.

Recibe en tu correo electrónico las últimas actualizaciones de éste blog:
Ingrese su e-mail:
(confirme su suscripción desde un mensaje que recibirá al correo registrado)
Delivered by FeedBurner

viernes, 30 de julio de 2010

Juego de Damas en Prolog


Para días de junio, unos amigos de la UPN me mandaron a hacer un proyecto de su curso Lenguajes de programación...
Fue así como asumí el reto de realizar un proyecto de curso en 2 días.
El proyecto consistía en realizar un juego de Damas en prolog, particularmente swi-prolog.

Así que, sin más preludios, voy directo al grano:
Y como el post va a ser realmente extenso, voy a dedicarle varias entradas

Tuve que clasificar los predicados según su tarea... y así reduje a 4 clases:

1. Hechos:
  • fichaEsImg(numeroEnMatriz, idImagenEnMemoria).
2. Operaciones de Listas y Matrices:
  • extraerElementoLista(Lista, Posicion, Elemento).
  • extraerElementoMatriz(Lista, CoordX, CoordY, Elemento).
  • mostrarLista(Lista).
  • mostrarMatriz(Matriz).
  • cambiarElementoLista(Lista, Posicion, Elemento, NuevaLista).
  • cambiarElementoMatriz(Matriz, CoordX, CoordY, Elemento, NuevaMatriz).
  • esPar(Ficha).

martes, 11 de agosto de 2009

Los 10 mandamientos para crear buen código


Una cadena de enlaces... encontré éste link desde la página de Angel "Java" López; quien a su vez referencia la página donde encontró el original: making good software.

El artículo, la traducción, me parecen tan buenos, y los comentarios agregados tan puntuales y prácticos, que cometeré el pecado de copiarlo textualmente:

Los 10 mandamientos para crear buen código
(10 commandments for creating good code)

1. DRY - Don't repeat yourself – No se repita
DRY es usualmente el principio más fácil de entender, pero el más difícil de aplicar. Significa que cuando encontramos código similar en uno o más lugares, deberíamos abstraerlos en un nuevo método y cambiar los anteriores fragmentos de código para que llamen al nuevo método con los parámetros apropiados.
DRY es posiblemente el principio de codificación más universal, yo nunca he encontrado un desarrollador que argumentara que repetir código es bueno, pero, he encontrado desarrolladores que olvidan este principio cuando codifican pruebas unitarias, como ejemplo: imaginen que han cambiando la interface de una clase que tiene montones de pruebas unitarias, si no han usando DRY, tendrán que cambiar a mano las llamadas a esa interface para cada caso de prueba.


"Pienso que podemos repetirnos, siempre y cuando tengamos planeado el refactoreo del código. Si siguen Test-Driven Development, no hay que hacer hincapié en este principio siempre, sino tenerlo presente en la etapa de refactoreo. A veces, no tenemos claro cuál es la implementación que necesitamos abstraer, hasta que tengamos varios casos resueltos."

sábado, 13 de septiembre de 2008

Algunos trucos en VB6 - Asistente de de formularios de datos


Bueno, sé que es algo recontra-sencillo...
Hasta probablemente, este sea sólo un apunte mental, o un apunte web de algo que debería anotar en un papelito.
Pero justamente no lo hago, xq cuando lo necesite, se me habrá olvidado!
Hace unos meses me mandaron a hacer un proyecto final universitario en Visual Basic 6, y bueno...
Por la premura del tiempo (cuando mandan a hacer proyectos faltando 2 días para la presentación) opté por utilizar el asistente (wizzard) de formularios de datos.
Es sencillo (al crear un nuevo formulario, tienen la opción de elegir dicho asistente).

1. El asistente crea todos los objetos (botones, diálogos, etiquetas, etc) con nombres en inglés.
Para cambiarlos a español, abrí el archivo del formulario (por ejemplo, frmEmpleado.frm) con notepad (algún editor de texto, para editar el código del formulario).
y reemplacé(*) todos las palabras:
"update" por "actualizar";
"add" por "agregar";
"delete" por "eliminar";
etcétera, más que nada, para la presentación (Se supone que si el profesor pide un trabajo, no lo van a presentar con botones en otro idioma).

2. La base de datos (.mdb) depende de la ubicación del ejecutable, la cual no es constante.
Nuevamente, abriendo el formulario desde un editor de texto, una vez encontradas las líneas:

Connect = "PROVIDER=Microsoft.Jet.OLEDB.3.51;Data Source=C:/carpeta1/BDx.mdb;"
OLEDBString = "PROVIDER=Microsoft.Jet.OLEDB.3.51;Data Source=C:/carpeta1/BDx.mdb;"

Donde dice Data Source=C:/carpeta1/BDx.mdb; 
Además el valor que Data Source contiene, depende de la ruta y el nombre de la Base de Datos.
Lo único para modificar, sería borrar la ruta, quedaría simplemente Data Source=BDx.mdb;
Repito: Sólo en caso que la ruta de la base de datos vaya a cambiar.

(*):reemplazar, en notepad: ctrl + R.

Como mencioné... son trucos sencillos... pero que a más de uno puede salvar de apuros, y ahorrar varios minutos encontrarle el truco. :)

domingo, 3 de agosto de 2008

Códigos de LPs para publicar en Web


Colorea tus códigos para publicarlos en web.
Algo muy útil para todos los que tenemos una página web, y que, de vez en cuando, necesitamos publicar código fuente de algún programa y en algún lenguaje en particular...
Con esta herramienta gratuita podrás colorear el código según las palabras reservadas y símbolos, identificadores, etc.

Es tan sencillo como escribir (copiar/pegar) el código y elegir el lenguaje de programación, y listo!
Los lenguajes de programación y marcado soportados por esta aplicación son:

ActionScript, Ada, Apache, Asm, Asp, Bash, C, C_Mac, Caddcl, cadlisp, Cpp, C# (C Sharp), CSS, D, Delphi, Diff, Div, Eiffiel, Gml, html 4 strict, Java, JavaScript, Lisp, Lua, Matlab, Mpasm, Nsis, Objp, Oobas, Oracle 8, Pascal, Perl, Php, php-brief, Python, Qbasic, Smarty, Sql, Visual Basic, Visual Basic.NET, Vhdl, Visual Fox Pro y Xml.

La página para dicha tarea es ésta: http://www.scourdesign.com/articulos/tutoriales/colorear/

domingo, 13 de julio de 2008

LaTeX para Web/Blogger


Este blog está hecho para publicar algoritmos, investigaciones, y proyectos que desarrollé en la universidad, o que actualmente hago...
Pero es un poco difícil manejar el lenguaje matemático en la web...
Navegando por internet, encontré que en servalx plantean 2 soluciones (desde aquí):

Opción 1: Un editor on-line de LaTeX, aquí en rogercortesi.
La fórmula te la da en formato de imagen (pero no conviene al usar muchas fórmulas = muchas imágenes)
Opción 2: Acoplar LaTeX en el editor de Blogger (La explicación completa en inglés, está aquí)
Para esto, según voy entendiendo va así:
2.1. Necesitas tener Firefox instalado.
2.2. Necesitas tener instalado el greasemonkey (un script para editar HTML de la página cargada desde firefox)
2.3. Debes ejecutar éste script (se carga automáticamente)
2.4. Debes modificar el CSS de tu blog para que las ecuaciones no tengan bordes/marco.
Añade éste código:
img.latex_eq {
padding: 0;
margin: 0;
border: 0;
}

Justo antes de la línea ]]>
Eso es todo... Necesitas conocer LaTeX y escribir tu fórmula con $$ al inicio y también con $$ al final, y escribir sobre fondo blanco (por estética para la fórmula).
Un ejemplo: escribe ésta fórmula:

$$\pi = \int_{0}^{1} \frac{4}{1+x^{2}}$$

Y luego dale clic al botón en la barra de edición de blogger.
Y obtendrás:

Un breve y muy buen manual de LaTeX aquí.