domingo, 15 de noviembre de 2015

ZX Spectrum: El lápiz óptico

Cuando hace unos años empecé a ver cómo proliferaban los dispositivos táctiles recordé cuando de niño tenía mi Spectrum y en todas las revistas te enseñaban la maravilla del lápiz óptico, hace ya treinta años...

Cómo pasa el tiempo... Y ese dispositivo era para un televisor, y ese dibujo impreso en la pantalla lo podías grabar en una cinta de cassette y luego recuperarlo. Esas imágenes fueron usadas para diseñar objetos, para construir piezas...

Con el tiempo incluso se usaba para elegir opciones en los menús... Y al evolucionar los ordenadores estos dispositivos mucho más desarrollados se usaron en estudios de arquitectura y de diseño par crear cosas más complejas. Mientras se usaban los plotters para imprimir esos dibujos y los diseños.


Eran un momento en que con 48k se podían hacer tantas cosas como ahora con millones de k´s algo asombroso.

La principal diferencia era la calidad de los gráficos y la velocidad con la que se guardaban los datos, ahora casi instantáneo antes cosa de minutos. La vida era mucho más tranquila y más barata, aunque ahora no nos quejaremos, si tienes internet hay mucho contenido gratuito.

Pero lo que no vemos es lo que pagamos por esa internet...

Sigamos de todas formas con lo que andábamos, con nuestros móviles y portátiles táctiles, y empecemos a darnos cuenta de que lo único que antes hacíamos sin el ordenador, es decir, escribir en papel, ahora ya no necesitamos hacerlo ya que podemos tomar notas a mano en papel.

El papel, ese bien escaso que tiene el tiempo contado, pero lo que tiene aún más contado el tiempo es la escritura manuscrita, ya  que ahora lo que hacemos es escribir con los dedos en la pantalla, y al ritmo que vamos, lo siguiente será no escribir, sino solo teclear,,,

Ahora ponte a pensar un poco, es mucho más sencillo controlar todo lo que tiene bits que tener que digitalizar las hojas escritas en papel, es decir, la idea brillante para este nuevo siglo es intentar que no escribamos con puño y letra, sino solo con caracteres de bits, y esto significará un nuevo cambio en la forma de ser y de transmitir la información.

El hombre que ahora es niño y que en lugar de escribir o pintar solo usa la tablet, cuando sea adulto si nada falla, solo lo hará sobre dispositivos táctiles.

O si tenéis en cuenta lo nuevo las hololens y todo lo que son las gafas de realidad virtual, a lo mejor vemos a algún humano con un lápiz virtual sobre un papel virtual escribiendo en una sala virtual, y recuperando así las habilidades perdidas en un siglo.

La evolución lleva por caminos extraños y esperamos que esto no nos lleve por caminos poco buenos para seguir evolucionando.

viernes, 14 de agosto de 2015

WINDOWS 10:La instalación.

Bueno ya os he contado un poco las cosas que más me gustan de este nuevo sistema de Microsoft, y ya es hora de empezar a ver como ha sido el proceso de instalación para, en capítulos posteriores ir viendo cada cosa nueva que vayamos encontrando en el sistema.

Lo cierto es que el proceso ha sido muy bien estudiado y muy tipo "americano", es decir, muy del estilo a los grandes eventos que organizan las compañías americanas cuando tienen algo muy importante que comunicar.



Es decir, lo que han hecho es crear espectativa, es hacer que todo el mundo que tuviera un ordenador compatible con Windows 10, estuviera esperando el día 29 de julio, para ver como su viejo ordenador, que a lo mejor estaba trabajando con Windows 7, pasaba a tener el nuevo y tan publicitado Windows 10.

Pero Microsoft ya sabe lo que pasa cuando pones una fecha y dices, descargarlo todos: Los servidores se bloquean, las actualizaciones no llegan, los problemas son tantos que mejor hacerlo de otra forma. Por eso el mensaje decía que a patir del día 29 de julio de 2015 estaría disponible.

Así ha sido y el día 29 nos llegó a todos un mensaje diciendo que en cuanto estuviera disponible la actualización para tu equipo te lo iban a notificar, es decir, te saldría un mensaje diciendo ya lo tienes lo quieres descargar ahora o más tarde: y así empieza la magia.

Una vez que aceptas el nuevo contrato para la descarga y  la instalación del sistema operativo, la cosa empieza a andar, y aparece una pantalla en azul con tres zonas: Descarga, instalación y configuración. Cada parte tiene que ir terminándose para pasar a la siguiente.

De esta manera, en la parte inferior de cada parte hay una barra de progreso que te indica cuanto llevas en porcentaje de lo que tienes que descargar, instalar o configurar. Mucho a cambiado todo desde aquellos tiempos en los que Microsoft intentó hacer estas barras en función del tiempo que faltaba para terminar la operación (Los famosos relojes de Microsoft).

Y además en la zona central en grande te da un mensaje que te dice en la fase que estás y el porcentaje total que llevas del proceso, es ahí donde te haces una idea de lo que te falta.

En mi caso no he tenido ningún problema ya que he ido intentando bajar todas las últimas versiones de los drivers del ordenador, las últimas versiones de los programas que tenía instalados, y las actualizaciones de Windows update que iban saliendo.

Os puse que el sistema es sólido en el artículo anterior, y es así: en algún momento en la instalación debió haber algo que retrasó el proceso y el sistema no paró hasta recuperarse, y como bien han aprendido en Microsoft, hay que informar hasta de lo malo, y te sale un mensaje parecido a:"Algo no salió del todo bien, y está tardando un poco más de lo normal".

Pero hay más, el primer día que quise hacer funcionar OneDrive, el sistema lo rechazaba, y no daba con la solución, de modo que aparcaba el programa, y te daba la opción de intentarlo más tarde. Hoy tres días después de la instalación ya tengo mi disco virtual funcionando.

Una vez alcanzado el cien por cien te aparece la nueva pantalla de Windows 10 pidiendo la clave para el usuario como en la versión anterior y finito, ya has empezado a usar el nuevo sistema de Microsoft.



Espero que os haya sido de utilidad.

jueves, 13 de agosto de 2015

WINDOWS 10: Vista previa

No lo pienses, si estas pensando en quedarte con tu sistema Windows anterior a Windows 10, la decisión debe ser rápida y directa: en cuanto te llegue la notificación de que puedes actualizar hazlo.

Estamos, y llevo muchos años con mirando los diferentes productos de Microsoft, ante el mejor y el mayor cambio desde el cambio de MSDOS a Windows.


Si habéis soñado con un Windows estable, con un sistema que no se cuelgue aunque le pase cualquier cosa, aunque uno de sus programas principales se cuelgue, estáis ante lo que soñabais, aunque se cuelgue la parte que se cuelgue puedes seguir trabajando en otras cosas y mientras el sistema buscará una solución.

Es decir, irá a internet y contará por ti el problema para ver cómo puede solucionarse ese programa que se ha venido abajo para que puedas usarlo en cuanto se pueda.

Pero el cambio es también para los desarrolladores, si has estado haciendo programas para Windows 8 o 8.1, será mejor que vayas olvidando lo aprendido, ya que volvemos a las ventanas, el nuevo mundo es un mundo de programas abiertos en ventanas, con iconos más bonitos, pero volvemos a desarrollar las cosas como en Windows 7.

Sin embargo, hay muchas cosas nuevas, por ejemplo, el antiguo menú de inicio es ahora un lugar donde se han colocado los iconos grandes de Windows 8, allí está el correo, allí están tus juegos, twitter... Allí tienes todo lo que tenías en el menú principal de Windows 8.

Pero el mayor cambio viene de lo que el señor Bill Gates deseó hace muchos años: la integración.

Integrar la navegación Web con el sistema operativo era el plan original cuando se creó Windows Me, era la idea que cierto juicio antimonopolio le hizo desechar. Pero le ha costado cambiar el nombre de Internet Explorer para no volver a caer en la misma trampa.

Porque el nuevo navegador de Microsoft se llama Edge, y tiene un lugar en la parte inferior  al lado del logo de Windows para que busques en tu sistema y busques en internet, es decir, para que a menos que lo cambies busques en Bing.



Otro punto para Microsoft que intenta a marchas forzadas recuperar todo lo que ha perdido en estos años frente a Android, porque Google sigue adelante y sigue siendo la primera en el ranking de Alexa en búsquedas, y no solo eso, sigue teniendo miles de programas y juegos gratis en su tienda online, con lo que el que tiene un Android no se aburre y encima no paga.

Pero eso es parte de una guerra que irá haciendo que mejore la vida de la gente, ya que los sistemas operativos así orientados (orientados a publicidad) están generando un cambio en los hábitos de las personas que solo en las próximas décadas lograremos comprender. No es gratis lo que te dan gratis, tu tienes que consumir anuncios para usar esa aplicación.

Y aunque hay cosas que aún no funcionan del todo bien, de momento lo dicho, espero que os encante como a mi.

viernes, 26 de junio de 2015

PROGRAMAR EN C#: Matrices

Muchos programas se pueden hacer solo con los tipos que hemos mostrado en el artículo anterior, pero hay casos que no es suficiente con las variables para resolver algunos problemas con datos.

Por ejemplo, si queremos representar una lista de 100 números necesitaríamos 100 variables para representarlos, pero esto sería muy complicado de manejar, si quisieras añadir 1000 números más necesitarías 1000 variables más (mira todo esto en http://joscarmartom.blogspot.com.es/2015/06/variables-tercera-parte-arrays.html).

Por esto se recurre a una representación matemática muy usada las matrices o Arrays. Esto va a dar una gran potencia a nuestros programas ya que solo tenemos que aumentar el número de 100 a 1100 y tentemos todo el espacio que necesitamos.





La matriz más básica es unidimensional, y en matemáticas a éstas se les llama vectores, un vector es una colección de elementos dispuestos uno al lado de otro.

Estas matrices unidimensionales nos valen por ejemplo para modelar el ejemplo anterior en C#:

int [] mimatriznumerica= new int [100];

Con esto hemos reservado 100 espacios int en memoria a nombre de mimatiznumerica, y si quisiéramos ahora 1000:

int [] mimatriznumerica= new int [1000];

Ahora que tenemos el espacio reservado podemos empezar a darles valor a cada uno de ellos:

mimatriznumerica[0]=100;
mimatriznumerica[1]=10;
...

Es decir, se coloca el nombre de la matriz, se pone el indice entre corchetes y después del igual se coloca el valor que queremos asignar:

nombrematriz [indice] = valor;

Esto puede resultar muy difícil de entender, pero es lo mismo que cuando asignamos un valor a una variable.

Como podéis entender introducir los 100 o los 1000 campos de esta forma puede resultar muy tedioso y para solucionar esto veremos en próximos capítulos las iteraciones y los bucles que nos permitirán repetir una cosa una y otra vez.

Tenéis que comprender otra cosa importante, estos arrays se pueden declarar de cualquier tipo incluidas matrices, o tipos más complejos, de esta manera se puede reservar espacio para diferentes clases de cosas.

La declaración será siempre igual:

tipo [] nombrematriz = new tipo [dimensión];

Si queremos recuperar el valor de alguna posición lo único que tenemos que hacer es llamar al indice que queramos:
 
  mimatriznumerica[2]=100;
  Console.WriteLine(mimatriznumérica[2]);


Esto mostraría en pantalla el valor 100.


Es importante que os fijéis que la colocación de los valores es desde cero, es decir, el primer indice no es el 1 sino el cero, de manera que el objeto que ocupa la posición 3 en una matriz tiene el valor de indice 2, es decir, es en base al cero y no al uno como funciona esto:


Veamos ahora algunos ejemplos:

Ejemplo 1:

            byte[] matrizbyte;
            matrizbyte = new byte[] { 2, 3 };

En este caso hemos definido una matriz sin decir el tamaño pero al asignar los valores {2,3} le decimos al compilador que la matriz será de una dimensión (vector) y tendrá dos valores.

Esta forma de inicializar valores será muy útil si tenemos una gran lista:

int [] mimatriz=new int[]{1,2,3,4,5,6,7};

Ejemplo 2:


            int[,] matrizdosdimensiones = new int[,] { { 1, 2 }, { 1, 2 } };


Este ejemplo declara una matriz de 2 por 2 y le asigna los valores 1,2 a cada fila:

1 2
1 2

Y recuperar un valor sería de la siguiente forma:

            Console.WriteLine(matrizdosdimensiones[0, 1]);

Mostraría el valor 2 en pantalla.

Ejemplo 3:


Y este es para nota, ya que definimos una matriz que contiene dos matrices de rango 1. Primero le damos unos valores y luego cambiamos algunos de ellos:

   int[][,] matrizdematrices = new int[][,] {new int[,]{{1,1},{2,2}}};

            matrizdematrices[1][1, 2] = 100;
            matrizdematrices[0][1, 2] = 100;


Espero que os haya gustado, iré añadiendo más ejemplos más adelante, cuando vemos los bucles...


jueves, 25 de junio de 2015

MICROSOFT VISUAL STUDIO 4: Proyectos

PROGRAMAR EN C#: Variables

Si alguno habéis visto la serie de artículos que tengo sobre las variables ya sabréis porqué es tan importante saber qué son y para que se usan las variables.

Una variable es un lugar de memoria, es decir, es un espacio de memoria donde se almacena un dato determinado y al que se le asigna un nombre. Esto es fundamental pues no se puede interactuar sin memoria, es decir, sin memoria no hay programas.



Las variables en C# son de diferentes tipos y las podemos ver todas representadas en el siguiente programa:

using System;

namespace Primerprograma
{
    class Program
    {
        static void Main(string[] args)
        {
            //tipos enteros

            byte mibyte;
            sbyte mibyteconsigno;

            short mishort;
            ushort mishortsinsigno;

            int miint;
            uint miintsinsigno;

            long milong;
            ulong milongsinsigno;

            decimal midecimal;


            //tipos decimales

            float mifloat;
            double midouble;

            //tipos caracter

            char michar;
            string mistring;

            //tipo booleano

            bool mibool;

        }
    }
}

En este programa como veis lo que hacemos es definir diferentes tipos de variables y les damos un nombre, la estructura es siempre la misma:

tipovariable nombrevariable;

Los tipos se catalogan en diferentes tipos:

Enteros con y sin signo (byte 8bits , short 16 bits, int  32 bits , long)

Decimales de diferente precisión (float para poca, decimal para gran precisión, double para numeros con muchos decimales)

Caracters (char, un solo caracter; string, cadeanas de caracteres)

Bool (booleanos, true or false)


Si queréis ver el valor máximo que tiene cada tipo podéis añadir al programa las siguientes lineas:


            // maximo número

            Console.WriteLine("Tipos enteros:");
            Console.WriteLine("byte: " + byte.MaxValue);
            Console.WriteLine("sbyte: " + sbyte.MaxValue);
            Console.WriteLine("short: " + short.MaxValue);
            Console.WriteLine("ushort: " + ushort.MaxValue);
            Console.WriteLine("int: " + int.MaxValue);
            Console.WriteLine("uint: " + uint.MaxValue);
            Console.WriteLine("decimal: " +decimal.MaxValue);
            Console.WriteLine("long: " + long.MaxValue);
            Console.WriteLine();


            Console.WriteLine("Tipos decimales");
            Console.WriteLine("float: " + float.MaxValue);
            Console.WriteLine("double: " + double.MaxValue);
      
            Console.WriteLine();

            Console.WriteLine("Tipos caracter:");
            Console.WriteLine("char: " + char.MaxValue);

De esta manera lo que obtenemos es el tipo de variable y el valor máximo que se le puede asignar a cada tipo de dato. Esto además nos da un ejemplo del tipo de definición que tiene cada uno.

Y os dará como resultado lo siguiente:

Tipos enteros:
byte: 255
sbyte: 127
short: 32767
ushort: 65535
int: 2147483647
uint: 4294967295
long: 9223372036854775807


decimal: 79228162514264337593543950335

Tipos decimales
float: 3,402823E+38
double: 1,79769313486232E+308

Tipos caracter:
char: ?


Esta es una forma rápida de ver los límites en los que nos estamos moviendo...