martes, 15 de diciembre de 2015

Historia de la electricidad (IV): El primer generador



Aunque desde el 1600 ya existía una forma de medir el fenómeno, la única forma de producir las cargas eléctricas era por frotamiento lo que no generaba cargas muy elevadas. Hacía falta un sistema que generase una carga de mayor nivel, pero hubo que esperar 60 años hasta que se consiguió realizar un aparato que las produjese, y lo consiguió uno de los grandes científicos del momento, aunque es más conocido por otros estudios de física.

Otto von Guericke nació en Magdeburgo en 1602, estudió derecho, aunque su gran pasión era la ciencia, por lo que completó sus estudios de matemáticas en la universidad de Leyden (no olvidemos este nombre que aparecerá en otra entrada). Tras casarse, trabajó en el ayuntamiento de Magdeburgo, ciudad de la que tuvo que huir por la invasión de la ciudad durante la guerra de los Treinta Años. Arrasada la ciudad y mermada su población a la cuarta parte, a su regreso asumió la alcaldía de la ciudad durante 15 años, para luego ser juez en esta misma ciudad durante otros 30 años.

Como su gran pasión era la física no dejó de investigar nunca, y es famoso por acabar con uno de los grandes principios de Aristóteles que dijo "la naturaleza aborrece el vacío", lo que se tomo como verdad inquebrantable durante la Edad Media. Guericke se cuestionó esto, motivado por los estudios sobre la presión atmosférica del italiano Evangelista Torricelli, continuadas por el francés Blaise Pascal que demostró que era posible el vacío. A partir de sus estudios Guericke ideó la primera bomba de vacío.

Se hizo muy famoso en su época ya que en 1654 ante la corte imperial demostró la fuerza del vacío de manera espectacular, juntó dos hemisferios de cobre e hizo el vacío entre ellos, dos tiros de ocho caballos tirando cada uno de uno de los hemisferios no consiguieron separarlos. Los "hemisferios de Magdeburgo" no fueron su única demostración, un émbolo en un cilindro al que se hizo el vacío no pudo ser levantado por la fuerza de 50 hombres.
Representación de la época de los famosos "hemisferios de Magdeburgo" (fuente: museovirtualiespedroespinosa)

Demostró que en el vacío no se transmite el sonido de una campana, ni puede mantener la vida de un animal, tampoco puede mantener encendida una llama. Todos estos descubrimientos los plasmó en un libro de 1672 que llamó "Experimenta nova, ut vocatur Magdeburgica, de vacuo spatio" (Experimentos nuevos, o de Magdeburgo, sobre el espacio vacío). También se atrevió con la astronomía, apoyando el que los cometas retornaban cada cierto tiempo, para lo que usó sus conocimientos matemáticos calculando su órbita alrededor del Sol.

Pero lo que nos interesa es su aportación a la electricidad. En 1660 Guericke construyó la primera máquina electrostática capaz de producir electricidad. Vertió azufre fundido en una esfera de cristal para formar una bola, la extrajo, perforó la bola y la fijó a un eje a la que fijó un asa. Se hacía girar la esfera con una mano mientras la frotaba contra la otra, esto cargaba la esfera con más electricidad de la que se podía producir hasta ese momento por frotamiento. Una vez cargada la esfera, esta atraía plumas de ave y trozos de papel, podía producir chispas, y al ponerla en contacto con un objeto estudiar si este podía o no retener la electricidad.

Ilustración de la máquina electrostática de Guericke (fuente: timerime.com)
Esta máquina le permitió hacer observaciones sobre la atracción y repulsión de los objetos electrizados, y fue la base de todas las máquinas generadoras durante más de 100 años. Al ver las chispas especuló sobre el que los rayos fueran de origen eléctrico.

Seguiremos viendo la evolución de estas máquinas y hablaré de los "electricistas" y sus espectáculos en las siguientes entradas, aunque primero explicaré por que estos aparatos generan electricidad.

lunes, 14 de diciembre de 2015

Historia de la electricidad: Índice

01 : Introducción
02 : Comienzos 
03 : El primer aparato de medida
04 : El primer generador
05 : ENTRADA TEORICA. Electricidad estática y el efecto triboeléctrico
06 : Pequeños avances
07 : Conducción y cargas 
08 : Se almacena la electricidad. Primeras teorías.
09 : La electricidad se convierte en espectáculo.
10 : Se domina el rayo. Economía aplicada a la electricidad
11 : ¿Cuanto pesa la electricidad? 
12 : Ya sabemos pesar voltios, pero ¿cuanto pesa la tierra?
13 : La electricidad animal, la revolución y el monstruo, parte uno
14 : La electricidad animal, la revolución y el monstruo, parte dos
15 : La electricidad animal, la revolución y el monstruo, parte tres
16 : Hágase la luz
17 : La unión magnética
18 : La teoría avanza
19 : El telégrafo
20 : El fin de los generadores electrostáticos, Maxwell completa la teoría
21 : La década de los ingenieros. El teléfono 
22 : Edison, mucho mas que la bombilla
23 : Tesla, un genio con altibajos
24 : La guerra de las corrientes

Historia de la electricidad (III): El primer aparato de medida



En ciencia, como dije en la introducción, no se pueden usar los sentidos para conocer el mundo que nos rodea, ya que nuestro cerebro queramos o no interpreta lo que percibe. El principal ejemplo es la pareidolia , una imagen nos parece otra diferente, ya que nuestro cerebro es especialista en buscar semejanzas de forma muy rápida para poder movernos por el mundo.

En la anterior entrada hablé de William Gilbert y su libro "De magnete" publicado en el 1600. Para llegar a la conclusión de que la Tierra producía el campo magnético que afectaba a las brújulas, utilizó brújulas que dispuso en horizontal y vertical en varias posiciones. Esta forma de medir era imprescindible para sacar conclusiones, por lo que necesitaba otro medio para medir la electricidad estática que generaba, solo con ver las pequeñas chispas que obtenía no era suficiente.

Pero los científicos son observadores, experimentan y pruebas muchas cosas (o las hacen de casualidad), y sacan conclusiones a partir de ello. Gilbert observó que las láminas de pan de oro electrificadas se repelían entre sí, por lo que ideo el primer aparato de medición de la electricidad de la historia. Lo denominó versorium, consistía en una pequeña flecha pivotante echa de hojuelas de oro, parecida a una veleta en miniatura.

https://upload.wikimedia.org/wikipedia/commons/thumb/4/46/Gilberts_versorium_needle_electroscope.png/250px-Gilberts_versorium_needle_electroscope.png
El versorium de William Gilbert (fuente: wikipedia)
 
Este primer aparato era muy sencillo, primero se cargaba la fecha con una carga inicial, luego acercando el material cargado que se quería estudiar se veía si se repelía, atraía o no afectaba a la flecha, de esta forma se podía medir de manera rudimentaria la existencia de electricidad y su magnitud relativa, no era un aparato muy preciso, pero permitió por primera vez estudiar de forma sistemática el fenómeno eléctrico, sin depender de observaciones del experimentador.

Este aparato fue mejorado con los años, usando un frasco de vidrio aislante, en cuyo interior se ubicaba una lámina de oro doblada sobre si misma, suspendida de un cable conductor unida a una bolita metálica en la tapa. Al cargar el aparato a través de la bola las láminas se separaban, midiendo el ángulo que formaban se podía conocer la magnitud de la carga eléctrica inducida. Si posteriormente se introducía otra corriente, si era del mismo signo y superior las láminas se separaban, si era de signo contrario se acercaban mas.

Electroscopio de láminas de oro (fuente: museo.iescoloma.es)

Este aparato se llama electroscopio (del griego elektron y scopio que significa aparato para observar), y fue el principal instrumento de medida eléctrico del siglo XVII y parte del XVIII, hasta que Volta creó la pila eléctrica, que al ser de corriente contínua no es posible medir con este aparato, solo apto para corrientes estáticas.


Hoy día los aparatos modernos de laboratorio disponen de una lámina fija y otra móvil, que a través de una escala graduada nos proporciona la medición. Son mas precisos, y su uso mas habitual es en centros de enseñanza.

5280 Electroscopio - leboriz
Electroscopio de laboratorio moderno (fuente: leboriz.com)


Estamos muy acostumbrados a la difusión rápida de la información, hoy día un político mete un gazapo en televisión y en media hora hay una web montada sobre el tema, pero es esa época los progresos eran lentos, debemos esperar 60 años hasta el siguiente hito en la historia de la electricidad, cuando en lo que hoy es Alemania un científico llamado Otto von Guericke da el siguiente paso en el camino, creando el primer generador eléctrico.

 

domingo, 13 de diciembre de 2015

Historia de la electricidad (II): Comienzos



Durante unos 20 siglos apenas se experimentó con la electricidad, solo hay algunas referencias entre los filósofos griegos y algunas prácticas médicas relacionadas con el uso de anguilas eléctricas. El magnetismo si fue más explotado en las brújulas, aunque no se conocía la relación entre ambos efectos.

Los egipcios constataron la existencia de los peces eléctricos, hay referencias a ellos sobre el 2700 A.C., los llamaban peces guardianes, ya que pensaban que protegían a los otros peces.
En la introducción dije que se atribuye a Tales de Mileto, hacia el año 600 A.C. el descubrimiento de la electricidad estática producida por frotamiento, lo que se denomina efecto triboeléctrico. Como Tales no dejó nada escrito no se puede afirmar que fuera suyo. Lo más probable es que el fenómeno lo observara un joyero, ya que en aquella época el ámbar es considerado una piedra preciosa, al ser transparente y relativamente fácil de trabajar se usaba mucho para realizar joyas, un artífice seguramente frotaría sus piezas para aumentar su brillo. Lo que hizo Tales, o uno de sus discípulos, fue observar el fenómeno y constatarlo. Ellos pensaron que la electricidad era una propiedad que residía en el ámbar.

Por esa época, aunque sin fecha cierta, se conoce que cerca de la ciudad griega de Magnesia, ubicada en la costa este de la grecia continental, se observó que unas extrañas piedras tenían la propiedad de atraerse entre sí, o de atraer objetos de hierro. A esa piedra se les llamó magnetita por su ubicación.

La segunda referencia a la electricidad proviene de Theofasto, discípulo de Platón, que sobre el 250 A.C. escribió un tratado de física en el que habla del fenómeno eléctrico y aporta que no solo el ámbar tenía esta propiedad.

Esto es lo poco que se conoce que se investigara por los griegos. Sus sucesores, los romanos, no destacaron en ciencias teóricas sino en la ingeniería que es una ciencia aplicada. Se conocen referencias al uso de las anguilas y rayas eléctricas en el tratamiento de dolencias como las migrañas y la gota en escritos de Plinio el Viejo, que se dedicó a recopilar el conocimiento científico, o del médico del siglo primero Escribonio Largo, recopilador de la primera farmacopea o relación de fármacos importante de la historia.

A lo largo de la Edad Media solo hay algunas leves referencias al ámbar y su electricidad, y los grandes científicos de ese momento, los árabes, tampoco aportaron más que referencias al rayo, en árabe raad. Pero sobre el año 1100 se tienen referencias a las primeras brújulas en China, y en el 1187 Alexander Neckham es el primer europeo en hablar en su obra "De nominibus ustensilium" sobre la brújula como apoyo a la navegación. En esa época la brújula era una aguja de magnética sobre un trozo de madera, que flotaba en un cuenco con agua. Las brújulas chinas apuntaban hacia el sur, mientras que las europeas lo hacían hacia el norte.

Representación de "el pez que apuntaba al sur" chino, primera brújula (fuente: naukas.com)

Hacia el 1550, el italiano Girolamo Cardano, gran investigador y enciclopedista, inventor de la junta cardan que lleva su nombre, mientras ideaba un soporte mejorado para las brújulas usadas en los barcos, distingue entre fuerzas eléctricas y magnéticas.

Pero el primer investigador importante de la electricidad fue el inglés William Gilbert (1544-1603). Era médico de la reina Isabel I de Inglaterra, y esta le encomendó el estudio de la brújula para mejorar la navegación. Habló con muchos navegantes, y de ello sacó la idea para explicar la declinación magnética, para lo que experimentó ubicando brújulas en vertical y horizontal. Sus estudios concluyeron en el libro "De magnete" del 1600, que además es el primer tratado científico escrito en Inglaterra, en el que incluía la afirmación de que la Tierra producía el campo magnético que afectaba a las brújulas. En él introdujo el término "polo magnético". También fue el primero en usar la palabra griega para el ámbar, elektron, para referirse al fenómeno eléctrico, por tanto fue el que lo bautizó como electricidad. En sus estudios vio que ciertas sustancias podían producir el fenómeno por frotamiento, a las que llamó "cuerpos eléctricos", y otras no lo producían y las llamó "cuerpos aneléctricos", siendo la primera clasificación de conductores y aislantes. Una de las tareas del científico es dar nombres a las cosas, y fue el primero que habló de "energía eléctrica" o de la "atracción eléctrica".

Gilbert dio el pistoletazo de salida de las investigaciones en el fascinante mundo de la electricidad, algo que no se podía ver, oler ni tocar, pero que se podía notar por medio de las descargas eléctricas.


sábado, 12 de diciembre de 2015

Historia de la electricidad (I): Introducción



Hace tiempo que quería escribir sobre esto, y ha llegado el momento. Como sabréis, a mi me gusta mucho la historia de la informática, pero realmente soy aficionado a la historia de la tecnología en general, y por eso quiero que conozcáis como fue avanzando el uso de algo que nadie sabe lo que es realmente a día de hoy, pero que se maneja continuamente.

Esta historia comienza con los llamados "electricistas" en el siglo XVII, pero yo empezaré antes, en esta introducción partiremos de los griegos y acabaremos con la vida cotidiana del siglo de la ilustración.

El primer científico se asume que fue Tales de Mileto, en el siglo V antes de Cristo. En aquella época la ciudad mas floreciente de Grecia era Mileto, que estaba ubicada en Jonia, en la costa de la actual Turquía. Troya estaba al norte y Mileto al sur de la costa. Tales fue el primero en creer que el hombre podía explicar los hechos de la naturaleza sin necesidad de recurrir al uso de los dioses, sino solo con su intelecto, aunque reconocía que no era capaz de explicarlo todo. Los griegos pensaban que la herramienta adecuada para estudiar el mundo eran los sentidos, idea errónea, pero al ser la defendida por Aristóteles se asumió que era una verdad incuestionable, por lo que esta idea perduró hasta el renacimiento, con la excepción de Demócrito, que tenía la idea de que todo estaba formado por átomos y que los sentidos nos engañan, por desgracia sus ideas no perduraron como tampoco sus escritos, ya que Platón opinaba que había que quemarlos y los dos pilares de la filosofía hasta el renacimiento fueron Platón y Aristóteles.

Se atribuye a Tales el primer y casi único descubrimiento relacionado con la electricidad hasta casi 20 siglos después. Cuando se frotaba un trozo de ámbar, resina de los árboles fosilizada, contra un trozo de piel o de lana, el ámbar podía atraer pequeños objetos, si el frotamiento se mantenía durante mucho tiempo, podían producirse incluso pequeñas chispas. Esto hoy día se puede reproducir frotando un bolígrafo de plástico contra un jersey de lana, puede atraer papelitos. En griego al ámbar se le conocía como electrón, y por eso al fenómeno se le llamó electricidad.

El primer científico moderno se considera que fue Galileo, aunque tuvo mucha influencia del inglés Francis Bacon, y el gran iniciador del tema fue Copérnico que desterró la visión de que el hombre era el centro del universos. Hasta ese momento la ciencia y la filosofía estaban unidas, y la gran revolución de la ciencia fue separar la especulación filosófica de los hechos, y considerar que los sentidos no eran la forma de estudiar el universo sino la experimentación, hoy día esto se lleva a su máxima expresión, nada que dependa de los sentidos puede ser aceptado, solo las mediciones de los aparatos de medida pueden ser aceptados, ellos no piensan por tanto no interpretan las medidas, solo las proporcionan.

La revolución del renacimiento culminó con la ilustración. En los siglos XVII y XVIII la diversión de moda entre la clase acomodada era la ciencia, acudían a los laboratorios a observar los experimentos, acudían a las salas de disección a ver como estudiaban los cadáveres, y las mejores reuniones eran las que un científico acudía a presentar sus experimentos.

En las casas acomodadas no faltaba un "gabinete de curiosidades", en el que se exponían animales disecados de otros países, plantas foráneas, minerales raros, insectos, corales, láminas, cuadros de lugares exóticos, material médico, elementos de física y química. Contra mas grande y variado mas estatus aportaba a su propietario.

Una de las salas del gabinete de curiosidades de Joseph Bonnier de La Mosson
(fuente: Museo Historia Natural París)

En este ambiente florecieron los científicos que se dedicaron al estudio de la electricidad, a los que en esa época se les denominaba "electricistas", que poco a poco fueron desgranando los misterios de la electricidad, partiendo de una variante de la electricidad producida por frotamiento que permitía altos voltajes, las chispas que se generaban arrancaban grandes exclamaciones entre los asistentes, y cuando se acercaba la mano se "tocaba" la electricidad, algo etéreo y extraño.

Los experimentos del XVII y XVIII de Galvani, Volta, Faraday, Ampère, Coulomb o Watson entre muchos otros, llevaron en el XIX a Maxwell  a formular ecuaciones que describian matemáticamente el comportamiento de la electricidad, lo que hizo que Edison, Tesla, Siemens o Westinghouse pudieran generarla, controlarla y usarla, para que en el siglo XX se lograra no solo su uso generalizado, sino su control fino, lo que generó una nueva rama, la electrónica.


En estas entradas quiero ir desgranando esta fascinante historia, que aportó cosas como una obra tan conocida como "Frankenstein o el moderno Prometeo".

lunes, 30 de noviembre de 2015

Gestor de colecciones (I): Programación en Web

La programación en Web es muy diferente de la de escritorio, para la programación en Web hay que aprender varios lenguajes y formas de trabajar, todo cambia y puede costar un poco para los que no estamos acostumbrados. En escritorio tomas un PC, eliges un lenguaje, programas y ejecutas, no hay mas, pero cuando estamos en Web hay dos máquinas implicadas, el servidor aloja las páginas, las prepara y las envía a tu ordenador donde se visualizan.Y unos cuantos lenguajes que aprender, no se puede usar uno solo.

HTML

Inicialmente las páginas eran siempre estáticas, el HTML es un lenguaje de marcado de documentos, en el viajan los textos a mostrar junto a los formatos en que se visualizan. El servidor no hace mas que almacenar las páginas HTML, y cuando el navegador le solicita una se la envía tal cual. Es el propio navegador el que monta la página con los formatos que contenga. No hay interactividad alguna, una vez montada la página no se puede modificar, es completamente estático, pero aun así siempre se pueden poner enlaces a otras páginas, que lanzarán estas al llamarlas, pudiendo hacer que el sistema parezca un poco mas interactivo. La página cuando se lanza tiene un estado, y puede contener campos que sean editables, por ejemplo un formulario de contacto. Cuando se le da el botón de enviar la página se recarga, enviándose a si misma los datos de los campos, en una acción que se denomina POST. Podemos tomar esos datos y enviarlos en un mail por ejemplo tras el Post, esto es lo mas interactivo que puede ser una página web.

CSS

Hemos dicho que junto a los textos viaja el formato, lo que lo hace poco flexible, por ello se idearon las Hojas de Estilo en Cascada (Cascading Style Sheets). En ellas no hay textos, solo las especificaciones de los formatos en que presentarlos, tamaños, colores, márgenes, alineación, todo atributo que se puede cambiar se puede establecer en el elemento o en la Hoja de Estilo. Las hojas de estilo pueden viajar dentro del propio documento o en uno aparte, por lo que el navegador al leer el HTML y encontrar que se llama a una hoja externa, le pide al servidor el fichero y lo procesa. Las hojas permiten modificar el aspecto de las páginas colo cambiando los estilos, lo que has hace útiles para definir de manera sencilla el aspecto, y han llegado a ser imprescindibles si quieres hacer algo con la misma apariencia en todas las hojas. Se denominan en cascada porque son acumulativas, un atributo de un elemento puede redefinirse parcialmente en otro, por ejemplo podemos establecer un tamaño de letras general, y para ciertos elementos cambiar ese tamaño, manteniendo los mismos colores, alineaciones, márgenes, etc.

LENGUAJES DE SCRIPT

Las páginas no son interactivas, por lo que para mejorarlas se idearon una serie de lenguajes denominados de script, que permiten alterar las páginas antes o después de enviarlas al navegador. Así por ejemplo podemos cargar una lista de registros de una base de datos en el lado del servidor, y montar la página con ellos. Una vez enviada la página el servidor se desentiende, a nuestro navegador le llega una página que puede variar en cada llamada. Esto son script del lado del servidor, la interacción se produce cuando se pide la página, enviando tras el nombre una serie de parámetros, o en el Post al recibir los datos de los campos escritos en la página. Los mas usados son PHP y ASP. Cuando se ha recibido la página en el cliente, otros lenguajes de script se pueden ejecutar en el mismo, aquí no se puede acceder por ejemplo a la base de datos, pero si es posible cambiar elementos de las páginas, cambiar aspectos y colores, hacer visibles o presentar zonas, o cosas similares. Cada día son mas potentes, el mas usado es JavaScript, en el está escrito por ejemplo Ajax que es una forma de poder refrescar una parte de la página, sin necesidad de volver a enviar toda al servidor.

PHP

El lenguaje PHP permite mezclarse junto al HTML, lo que le hace a veces un poco mas complicado de seguir si no se hace adecuadamente, es un lenguaje con sintaxis de C, en el que podemos definir Objetos y Clases, montando toda la lógica de negocio en el servidor. Cuando se procesa la página se ejecuta el programa en PHP, generándose una página HTML normal, que es enviada al navegador, en ese momento se ha perdido toda interacción. Cuando la página se procesa, se envía una orden POST al servidor, que monta de nuevo la página, pero ya podemos leer datos de ese Post y procesar la página o los datos de la misma. Las variables no son necesario definirlas, lo que puede ser una fuente de problemas, y su nombre siempre empieza por un signo de dolar, y es débilmente tipado, lo que si no controlamos puede causar problemas. Si el script da un error al montar la página, dará un error que se presentará en el navegador si es grave, pero es complicado seguir el programa ya que se ejecuta en el servidor, y en el cliente se ve solo el resultado, aunque hay sistemas para poder depurar los programas.

JAVASCRIPT

Los script en Java se ejecutan en el navegador, usan la sintaxis del Java pero no es Java, por tanto no necesitan la máquina Java para su ejecución, por lo que también es un lenguaje con sintaxis de C, aunque es Orientado a Objetos no permite definir Clases sino prototipos, aunque lo suyo es usar pequeñas funciones y no grandes programas. Una de sus características es que no necesita definir las variables, y que no es tipado, es sencillo y rápido. Cuando se produce un error no se presenta, solo se ignora el script, por lo que es difícil seguir los fallos, pero al estar en el navegador se pueden ver el código.

Programación en Web

Para hacer un programa en Web necesitamos manejar una Base de Datos y por tanto el lenguaje SQL, las páginas se montarán usando HTML, CSS, PHP y JavaScript, por tanto debemos conocer 5 lenguajes diferentes, y una forma no habitual de interactuar con las páginas, y esto sin pensar en otras tecnologías como ASP.NET, que tienen la ventaja de que incluye casi todo en un solo sistema, y puedes programar sin necesidad de ver lo que hay por debajo.

martes, 13 de octubre de 2015

Programemos un juego en C (VI): Compresión de datos, cambios de base




Exploremos ahora una técnica de compresión bastante sencilla de implementar y bastante eficiente en cuanto a ocupación, basada en los cambios de base de numeración.

En nuestro juego usaremos 7 elementos diferentes que son " ", "#", "$", "@", ".", "*" y "|". Si en lugar de representar cada uno con un carácter de 8 bits, usamos un número entero sin signo, para almacenar un número entre 0 y 6 solo necesitamos 3 bits, por lo que desaprovechamos 5 bits de cada byte realmente, eso es mas del 50%, un despilfarro. Hay dos técnicas que se usan habitualmente, el BDC y el cambio de base.

BDC es acrónico en inglés de Decimal Codificado en Binario, como con 4 bits podemos almacenar un número del 0 al 16, en este sistema se usan 4 bits para almacenar un solo dígito del 0 al 9, y cada byte almacena dos números en su interior, uno en los 4 bits superiores y otro en los inferiores. De esta forma para almacenar un número como el 78, como 7 en binario es 0111 y 8 es 1000, si los ponemos juntos formarían el número binario 01111000, y en un solo byte tenemos almacenados dos números de forma sencilla. El número almacenado se lee igual en hexadecimal que en decimal codificado en este formato, una ventaja del sistema en base 16.

Los procesadores suelen disponer de instrucciones adecuadas para manipular número en este formato y operar con ellos, y es muy sencillo mostrar estos dígitos en un display de 7 segmentos usando un chip codificador BDC.

Si usamos esta técnica, debemos convertir los datos a números, así asociamos un número a cada elemento, por ejemplo: 0 = " ", 1 = "#", 2 = "$", 3 = "@", 4 = ".", 5 = "*", 6 = "|".

Mediante un programa debemos convertir las cadenas de caracteres con los datos a BDC, e ir almacenándolas en variables enteras sin signo de 8 bits, para eso en C se usa el tipo unsigned char, lo mejor es hacer un programa para convertirlo, es sencillo y práctico. Si en un nivel al final hay un número impar de dígitos, rellenamos con un cero al final, que no hará nada. Los dos primeros niveles del juego quedarían así en hexadecimal, que el C puede tratar directamente sin problemas:

00h,00h,11h,11h,16h,00h,00h,10h,00h,16h,00h,00h,12h,00h,16h,
00h,11h,10h,02h,11h,60h,01h,00h,20h,20h,16h,11h,10h,10h,11h,
01h,00h,01h,11h,11h,16h,10h,00h,10h,11h,01h,11h,11h,00h,44h,
16h,10h,20h,02h,00h,00h,00h,00h,00h,44h,16h,11h,11h,10h,11h,
10h,13h,11h,00h,44h,16h,00h,00h,10h,00h,00h,11h,11h,11h,11h,
16h,00h,00h,11h,11h,11h,16h 

11h,11h,11h,11h,11h,11h,61h,44h,00h,10h,00h,00h,11h,16h,14h,
40h,01h,02h,00h,20h,01h,61h,44h,00h,12h,11h,11h,00h,16h,14h,
40h,00h,03h,01h,10h,01h,61h,44h,00h,10h,10h,02h,01h,16h,11h,
11h,11h,01h,12h,02h,01h,60h,01h,02h,00h,20h,20h,20h,16h,00h,
10h,00h,01h,00h,00h,01h,60h,01h,11h,11h,11h,11h,11h,16h


Solo de esta sencilla manera hemos conseguir reducir a la mitad la ocupación de los 10.492 bytes que teníamos ya sin espacios no necesarios, y dejarlos en 5.246 bytes.

Pero analizando los datos hay una posible mejora, para almacenar un valor del 0 al 7 solo hacen falta 3 bits, con lo que en un byte puedo almacenar dos números y dos tercios, casi tres, una pena que nos falte solo un bit, pero si ese bit fuera siempre cero o uno ya no hace falta que lo almacenemos. Usaremos un pequeño truco, sabemos que la mayoría de los valores a almacenar son huecos o paredes, si le asignamos un número bajo la mayoría de las veces los elementos comenzarán siempre por cero.

Como tenemos 8 posibles valores con 3 bits y usamos 7, vamos a poner en marcha un truco. Los valores que vamos a almacenar van a ser 8, añadimos uno nulo que representa que es un hueco a saltarse, por lo que cuando decodificamos ese valor cero nos lo saltamos directamente. Ese valor lo usaremos solo cuando tengamos que almacenar un elemento en la posición alta del byte cuyo primer bit deba ser un uno. De esta forma aunque el 90% de las veces no hace falta, por poner una cifra diré que solo el 50% de las veces lo uso, por lo que el otro 50% de las veces almacenaré un tercer valor en un byte, o lo que es lo mismo guardo 2.5 valores en cada byte, y reduzco los 10.492 bytes a ocupar solo entre 4.197 y 3.617 bytes, la ganancia es muy grande.

Codificamos así los elementos ahora 0 = nulo, 1 = " ", 2 = "#",  3 = "$", 4 = ".", 5 = "*", 6 = "|", 7 = "@" y codifico de binario, presento los dos primeros niveles e este formato, agrupo de tres en tres y destaco los ceros añadidos cuando un grupo empieza por uno o para completar los bytes. De los 310 caracteres codificados hemos añadido 14, un cuatro y medio por ciento.

001 001 001 - 001 010 010 - 010 010 010 - 000 110 001 - 001 001 001
010 001 001 - 001 010 110 - 001 001 001 - 001 010 011 - 001 001 010
000 110 001 - 001 010 010 - 010 001 001 - 011 010 010 - 000 110 001
001 010 001 - 001 011 001 - 011 001 010 - 000 110 010 - 010 010 001
010 001 010 - 010 001 010 - 001 001 001 - 010 010 010 - 010 010 010
000 110 010 - 001 001 001 - 010 001 010 - 010 001 010 - 010 010 010
010 001 001 - 000 100 100 - 010 110 010 - 001 011 001 - 001 011 001
001 001 001 - 001 001 001 - 001 001 001 - 000 100 100 - 010 110 010
010 010 010 - 010 001 010 - 010 010 001 - 010 111 010 - 010 001 001
000 100 100 - 010 110 001 - 001 001 001 - 010 001 001 - 001 001 001
010 010 010 - 010 010 010 - 010 010 010 - 000 110 001 - 001 001 001
010 010 010 - 010 010 010 - 010 000 000

010 010 010 - 010 010 010 - 010 010 010 - 010 010 010 - 000 110 010
000 100 100 - 001 001 010 - 001 001 001 - 001 001 010 - 010 010 110
010 100 100 - 001 001 010 - 001 011 001 - 001 011 001 - 001 010 110
010 100 100 - 001 001 010 - 011 010 010 - 010 010 001 - 001 010 110
010 100 100 - 001 001 001 - 001 111 001 - 010 010 001 - 001 010 110
010 100 100 - 001 001 010 - 001 010 001 - 001 011 001 - 010 010 110
010 010 010 - 010 010 010 - 001 010 010 - 011 001 011 - 001 010 110
001 001 010 - 001 011 001 - 001 011 001 - 011 001 011 - 001 010 110
001 001 010 - 001 001 001 - 001 010 001 - 001 001 001 - 001 010 110
001 001 010 - 010 010 010 - 010 010 010 - 010 010 010 - 010 010 000

Pasando los valores a decimal nos queda esta codificación:

73, 82, 146, 49, 73, 137, 86, 73, 83, 74, 49, 82, 137, 210, 49, 81, 89, 74, 50, 145, 138, 138, 73, 146, 146, 50, 73, 138, 138, 146, 137, 36, 178, 89, 89, 73, 73, 73, 36, 178, 146, 138, 145, 186, 137, 36, 177, 73, 137, 73, 146, 146, 146, 49, 73, 146, 146, 128

146, 146, 146, 146, 50, 36, 74, 73, 74, 150, 164, 74, 89, 89, 86, 164, 74, 210, 145, 86, 164, 73, 121, 145, 86, 164, 74, 81, 89, 150, 146, 146, 82, 203, 86, 74, 89, 89, 203, 86, 74, 73, 81, 73, 86, 74, 146, 146, 146, 144


El otro sistema sencillo de codificación es el cambio de base. Un número cualquiera lo podemos escribir como potencias de 10, así el 5.24610 sería 5.103 + 2.102 + 4.101 + 6.100. De igual manera podemos escribir un número en base 7, cambiando el 10 por un 7. Si entendemos la lógica del sistema, veremos que en base 7 podemos escribir el número 5467 sería 5.72 + 4.71 + 6.70 = 27910


El sistema seria convertir los números que vamos obteniendo a base 7, e ir montándolos en un número entero sin signo. si usamos dos bytes podemos almacenar 5 números en base 7 en su interior, contra el sistema BDC que almacenábamos solo 4. Un poco mas, pero los 10.492 bytes de partida quedan como 4.197 bytes, ganamos casi 1K con este sistema. Pasar de uno a otro es cuestión de multiplicar y dividir nada mas, lo malo de este sistema es que las divisiones  son operaciones lentas para los ordenadores, por lo que aunque es un buen y sencillo sistema, en nuestro caso no es el mas recomendable tampoco.