Archivo de la categoría Programación

Ámbito de variables en C99



En una de enlaces, hacía referencia a How to C in 2016, una lectura breve, y muy recomendable, si eres un programador clásico de C.

Como sabemos, desde los inicios del lenguaje C con K&R, las variables locales, deben declararse al principio de la función. Muchos programadores se quejan de que ello dificulta el seguimiento del código. En mi caso, quizás por haberme acostumbrado a ello, me da una sensación de orden y de planificación a la hora de escribir código. Por otro lado, ordenarlas colocando primero aquellas que se usan con más frecuencia, para facilitar el uso de registros de la CPU por parte del compilador, me parecía una buena práctica.…

Continuar leyendo...

Casio FX-991SP X vs Casio FX-991ES Plus



Llevo algunos años con la Casio FX-991ES Plus y con la reciente aparición de la nueva Casio ClassWiz FX-991SP X Iberia, decidí actualizarme. No en vano, Casio lleva vendidas más de 1000 millones de calculadoras en todo el mundo.

Como de costumbre, el manual es excelente, en formato papel, y disponible un librito para cada uno de los 3 idiomas soportados por la calculadora. Parece mentira que en apenas 50 pequeñas páginas, quede tan claro todo lo que hace. Basta una lectura completa, y practicar con los ejemplos, para en menos de una hora, tener la calculadora controlada.

No quiere decir que tiempo después no necesitemos acudir al manual para saber como era el formato de algún cálculo en particular, pero incluso en un modelo tan completo como la FX-991SP X, resulta bastante intuitivo, con colores en las teclas multifunción.…

Continuar leyendo...

AIN



Os explicaba en Me gusta de la informática mi interés desde hace mucho tiempo por todo lo relativo a la compresión. Empecé con el PC usando PKARC/PKPAK, para luego pasar a LHARC y finalmente PKZIP.

Me gustaba de PKZIP su grado de compresión bueno, con una velocidad increíblemente veloz, tanto para comprimir como para descomprimir. Curiosamente PKZIP no era demasiado popular en aquel tiempo, y la gente solía preferir ARJ, bastante más lento, pero con grados de compresión algo superiores, y sobre todo, muchísimas opciones.

Así que cuando a mediados de los años 90, me topé con AIN, un compresor que pretendía ser casi igual de veloz que PKZIP, con un grado de compresión incluso superior al de ARJ, y casi tantas opciones como éste, me pareció un imposible.…

Continuar leyendo...

Cambiar idioma de una presentación Powerpoint



Suena absurdo, pero PowerPoint no permite cambiar el idioma de todos los cuadros de texto de todas las diapositivas de una presentación. Así que si por ejemplo, partimos de un archivo que contiene una presentación en inglés, que queremos traducir al castellano, tendremos que ir recorriendo cada uno de los cuadros de texto, y cambiando su idioma, para que el corrector ortográfico no nos marque su contenido como incorrecto.

La solución es usar una macro VBA, que haga justamente eso. Por suerte para nosotros, lo podemos hacer con mucha facilidad.

1) Cogemos el código de la macro siguiente y pulsamos CTRL-C (Copiar):

Option Explicit Sub CambiarIdioma() Dim oSlide As Slide Dim oShape As Shape Dim sLocale As String   sLocale = InputBox("Introduce el idioma de destino:" & vbCrLf & "- 1033: Inglés (Estados Unidos)" & vbCrLf & "- 3082: Español (Internacional)" & vbCrLf & vbCrLf & "Más en: http://msdn.microsoft.com/es-es/goglobal/bb964664.aspx", "Idioma", "1033") For Each oSlide In ActivePresentation.Slides For Each oShape In oSlide.Shapes If ((oShape.Type = msoTextBox) Or (oShape.Type = msoPlaceholder)) And oShape.HasTextFrame Then oShape.TextFrame.TextRange.LanguageID = sLocale End If Next Next End Sub

2) Pulsamos ALT-F11 (Editor de Visual Basic for Applications).…

Continuar leyendo...

Me gusta… de la informática



Desde mis inicios, hasta la época del shareware, es decir, cuando podía dedicarle tiempo (y mucho) a lo que realmente me llamaba la atención, había determinadas tareas que me encantanban.

En aquel momento no me lo había planteado, pero tenían mucho que ver con la programación de sistemas y la seguridad. Quizás por ser aspectos poco documentados y conocidos, que potenciaban la imaginación y el buscarse la vida de cada uno, el caso es que eran divertidos de poner en práctica.

Eran tiempos de ordenadores de 8 bits, o de DOS, plataformas que te dejaban gran libertad a la hora de hacer lo que quisieras.…

Continuar leyendo...

Shareware



Hoy vuelvo con las batallitas del abuelo cebolleta, esta vez para hablaros del shareware.

En 1982, Jim “Button” Knopf, crea PC-File, y decide distribuirlo como “user-supported software”, o sea “software soportado por el usuario“. Poco después, Bob Wallace crea PC-Write y lo distribuye como shareware.

Ambos términos quieren decir lo mismo. El autor cedía una copia de su programa, con el fin de ser evaluado por los usuarios, que éstos podían posteriormente comprar directamente al autor.

Hasta entonces, el software era bien gratuito, bien comercial, distribuido y comercializado por una distribuidora o una casa de software, de manera que esta nueva filosofía fue realmente innovadora.…

Continuar leyendo...

Tipos de datos



Cuando empezaba a tocar el Spectrum, empezó a llamarme la atención que los números ocupasen tanto espacio. A mi modo de ver, era como si los guardase internamente como una cadena de caracteres. Poco me podía imaginar yo lo que era la representación de números en coma flotante, o que el Basic manejase todos los número de la misma forma.

Con el tiempo fui profundizando, y me impresionó ver como un procesador de 8 bits como era el Z80, y que tenía instrucciones para manipular 16 bits de golpe, pudiera manejar números en coma flotante de 40 bits. Lógicamente eso era bajo el precio de añadir procesamiento y memoria extra.…

Continuar leyendo...

Hints y anotaciones



Cuando escribía likely, unlikely y __builtin_expect, me vinieron recuerdos de antaño. Me refieron en concreto a los hints o anotaciones. Es decir, añadidos que se hacen en el código fuente, con la finalidad que el documentador, compilador, intérprete o cualquier otra herramienta, pueda leerlos.

El caso de la macro likely, era evidente, un añadido que no afecta al código fuente, pero que sirve para indicar al compilador como mejorar el código que genera.

En realidad, las anotaciones, son algo que se usan con bastante frecuencia en casi todos los lenguajes de programación. Por ejemplo Google Closure Compiler y JSDoc usan los suyos para mejorar la velocidad de ejecución, detección de errores, y el detalle de la documentación respectivamente.…

Continuar leyendo...

likely, unlikely y __builtin_expect



Estaba cotilleando las novedades de GCC, y me he encontrado con lo que llaman __builtin_expect. Esta macro, permite indicar al compilador la probabilidad de una condición, de manera que el predictor de saltos sea capaz de generar un código más eficiente.

Lo habitual es que se usen con una macro más legible llamada likely / unlikely, y que indica una probabilidad alta, y una baja respectivamente.

Imaginemos un fragmento de código que lee un pixel, y en el caso de ser de color negro, retorna cierto, y falso en caso contrario:

if (GetPixel() == BLACK) { return(true); } else { return(false); }

Digamos que el compilador podría traducir este código a x86 de una forma parecida a esta:

call GetPixel cmp eax, BLACK je true false: xor eax, eax ret true: mov eax, 1 ret

De este modo nos encontramos que a nivel de lenguaje máquina, cuando el píxel sea de color negro, entonces se ejecutará el salto a la etiqueta true: y retornará cierto.…

Continuar leyendo...

¿Quién gana dinero con los Bitcoin?



Estoy seguro que todos habéis oído hablar de los Bitcoins o BTC, la moneda virtual de moda. Por supuesto yo tambíen había oído de ella, pero no fue hasta que Sergi, me dio más detalles, que no profundicé en el tema.

Para que todos lo entendamos, un Bitcoin es una divisa virtual, con conversiones a dinero real. En este sentido sería como una acción, o cualquier otra moneda, yo puedo comprar Bitcoins, o venderlos, a cambio de moneda real, sobre el tipo de cambio establecido.

Sin embargo, a diferencia del dinero real, que no se apoya en nada, recordemos que el patrón oro dejó de utilizarse en la década de los 1970, los Bitcoin se apoyan en un bien también escaso.…

Continuar leyendo...