martes, 25 de septiembre de 2018

Cómo conectar una PS4 a un ordenador portátil windows

Qué interesante poder conectar la PS4 a un ordenador para poder hacer otro tipo de vídeos si eres youtuber, o si lo que quieres es controlar un juego con el teclado... Lo cierto es que pensaba que iba a ser más difícil, pero solo te hace falta un cable usb.

Si miras el vídeo verás que sencillo:





https://www.youtube.com/watch?v=YW8bEqPX6VI

martes, 9 de agosto de 2016

El código máquina...

Eran tiempos revueltos en mi vida cuando alguien me contó como funcionaban realmente las máquinas, como era realmente la vida de un ordenador.

En aquel tiempo yo programaba ya bastante bien en el basic del Spectrum, de hecho hacía mis programas de contabilidad, mis horarios, las chuletas para estudiar en el colegio, los primeros juegos... Luego lo guardaba en cinta y andando.

Pero en las revistas que me llegaban a casa con programas aparecía siempre una palabra, la palabra "POKE", que significaba meter, y luego una cadena de caracteres o de pares de números alfanuméricos, que tenías que meter uno a uno y sin confundirte, ya que si no, el programa o el juego no funcionaba.

Todo eso llamó mi atención y leyendo aquí y allá entendí que lo que hacía el poke era meter una información en un dirección de memoria. 

En aquellos días me dieron un libro, que si mal no recuerdo era "El Zilog Z80", en el cual me explicaban que lo el ordenador lo que hacía era colocar información en memoria, y mandarla a los periféricos.

Pero el ordenador ni siquiera funcionaba con esos hexadecimales sino que funcionaba con 0 y 1, con largas series de 0 y 1 que eran mandatos de la forma pon esto aquí o llevaló allí, o cambia el estado de tal posición...

Eso era el código máquina, el código que usaba el ordenador para mover la información de un lado a otro, para "MOV" o "GO" o "ADD"... Ese código máquina era tan difícil de leer y tan farragoso que lo que se había hecho es crear un lenguaje algo más legible, el lenguaje ensamblador, que correspondía uno a uno a aquellos códigos que yo metía en el POKE.

Ese lenguaje ensamblador era muy complejo en aquellos tiempos y lo que habían hecho los creadores del Spectrum era crear un interprete, es decir, un traductor que se encargaba de hacer que lo que yo escribía en Basic fuera entendido por el ordenador en código máquina. De esta forma cuando ponías print el Basic lo traducía a un código más entendible al ordenador:

print "jose" era traducido a una cadena de comandos de ensamblador que hacían que la cadena jose apareciera en la pantalla, de modo que primero se seleccionaba la traducción del comando PRINT y luego se pasaba a código binario la cadena jose, y se iba imprimiendo punto a punto cada letra de la cadena "jose" en la pantalla.

En los ordenadores actuales, cuando tu enciendes un ordenador y lo haces funcionar, nada se hace en inglés o en español o chino, todo se actualiza a 0 y 1 y fluye de una zona a otra en forma de bits de un lado a otro de tu ordenador o tu movil o tu tablet.

Por eso es tan importante saber que existe y qué es el código máquina.

lunes, 1 de agosto de 2016

Los que hacen todo: Navegadores

Ya hace tiempo os he hablado de la guerra de Explorer y Netscape, y hemos hablado algo de Safari y Chrome... Pero no nos damos cuenta de la suerte que tenemos... Simplemente teniendo este traductor que se llama navegador.

El navegador, y la palabra fue muy bien buscada, nos sirve para "viajar" entre una url y otra url, entre una dirección de internet y otra, o siguiendo con la metáfora entre un puerto y otro, como si estuviéramos en un mar, navegamos de una dirección ip a otra ip.

Y es que lo primero que hubo que hacer al crear un navegador es que este fuera capaz de ir de un sitio a otro, y para ello necesitaba un mapa, este mapa eran las dns, un directorio que cambiara el nombre que yo pongo por un conjunto de números que llamaran a la dirección de un servidor, es decir, que pusieran en comunicación mi ordenador con el ordenador al que quiero acceder.

En tiempos, cuando lo único que teníamos eran lineas telefónicas, ya era algo increíble el conectar por modem con un ordenador a distancia, oyendo el ruido de inicio de conversación entre ambos.

Mi primera vez fue genial cuando entré en un ordenador de una revista de Amstrad y conseguí identificarme para bajar un pequeño programa... Todo eran comandos, palabras clave...

Después tuve acceso a máquinas Unix, que permitían el acceso a ordenadores de otras universidades donde otros locos por la informática como yo habían puesto sus programas y los compartían para poder descargarlos.

Aquello requería una conexión telnen y luego un ftp, es decir, usar un file transfer protocol, un protocolo de transferencia de ficheros, un acceso normalmente anonymous, y luego una descarga.

Ahora tu pones google en el buscador de google y estás en conectado al ordenador de Google, y si haces click en este supervínculo joscarmartom estarás en mi canal de youtube.

Pero es que cuando tu entras en una web, a parte de abrir un canal de comunicación directamente lo que haces es descargar partes del código que está en ese servidor.

Cuando entras en una web, descargas un fichero de texto, aunque no lo sepas descargas un programa que le dice a tu navegador como tiene que colocar las cosas, los textos, las imágenes y los vídeos, el orden en que tienen que aparecer, y la forma y los colores.

Si volvemos de nuevo en el tiempo, al principio las páginas web que se mostraban no eran más que textos, ya que la velocidad de trasmisión era muy pequeña, y si alguien ponía una imagen, eso podía ser una hora para poder verla.

Recuerdo aquellos días, queriendo bajar alguna foto, poniendo el hash para ver el proceso de descarga y llegar a tardar una hora para ver una imagen de una flor con 4 colores... Ahora arrancas el móvil y de pronto ya tienes la foto que tu madre hizo a sus nietos hace dos minutos, o incluso el vídeo de un resbalón en segundos.

Esos primeros navegadores funcionaban poniendo numeritos, y esos numeritos estaban en listados de las universidades, ucla, por ejemplo, y según el tráfico que hubiera así llegaba la información.

Ahora si te tarda en descargar una imagen te desesperas, porque ahora tu navegador descarga en paralelo, descarga a la vez el texto y las imágenes, y te lo va mostrando a toda velocidad, porque ahora todo está comprimido en origen y es decodificado en tu terminal al momento, porque ahora tienes una velocidad de transmisión increible y una de procesado fuera de lo normal.

Y ese navegador al que no prestas atención  es el que se encarga de ordenar todo para que tu lo disfrutes.

jueves, 26 de mayo de 2016

El fallo de Windows

La historia a posteriori nos da las fallas en las decisiones pasadas, y aquí vamos a hablar un poco de un gran fallo que cometió en su pasado.

En aquellos días Windows era el rey indiscutible y todos esperábamos con ansiedad las nuevas versiones de Msdos y Windows. Eran grandes tiempos cuando yo empezaba a hacer mis pinitos en programación de C++ y quería hacer las primeras aplicaciones para Windows.

Por otro lado interntet ya estaba en las universidades españoles aunque el acceso a los centros de cálculo era limitado ya podíamos navegar y descargar pequeños archivos, mediante ftp, o conectarse a otras universidades, a otros ordenadores por telnet.

Eran tiempos donde si te gustaba la informática vivías apasionadamente, ya que las cosas cambiaban a gran velocidad. En la universidad la máquina VAX funcionaba con el sistema operativo Unix, aunque ya sonaban las campanas para empezar a usar Windows NT...

Es en esa época cuando todo surge, cuando se desarrolla un sistema que sería de libre uso y libre modificación, un sistema que pronto llegaría a todos los hogares mediante revistas primero y luego por internet. El sistema Linux fue una gran aportación que descubrió al mundo la posibilidad del código abierto, de lo que mucha gente en diferentes países podían hacer si se ponían de acuerdo.

Con este Linux, en las revistas te enseñaban a hacerlo convivir con Windows, de forma que podías aprender lo mejor de los dos mundos, aprender a programar en los dos sistemas.

Toda esta revolución hizo que el mercado español se volviera a dividir entre los pro Windows y los pro Linux. Sin embargo, todo esto va a llevar a varias cosas pero a una de las más importantes es que Google va a fijarse en Linux para desarrollar su nuevo sistema operativo, y va a comprar un producto ya desarrollado por otros , el sistema Android.

El fallo de Microsoft, el fallo de Windows fue no ver el impacto y las posibilidades del código abierto, de no ver que tras los primeros ordenadores, tras todos aquellos Spectrum, Amstrad, Commodore o el mismo MSX, hubo un retén de gente que sabía de ordenadores bastante más que un usuario normal, que esos programadores sin título no tenían un amor especial a Windows, pero si que tenían ganas de programar...

Además tenían su trabajo, y dedicaban sus horas de ocio a probar nuevos programas. Esa gente además quería ayudar, y cuando les dieron la opción de programar  y publicar esos programas en una tienda, en Google Play, esa gente se movilizó y lo intentaron todo.

De ahí surgieron las grandes y pequeñas aplicaciones que hay hoy en en la tiendo de Google, y todo por no prestar atención a la gente que no debía ser más que un consumidor, sino que eran consumidores activos.

Y con Windows 8 lo intentaron pero no ha sido hasta el prelanzamiento de Windows 10 que Microsoft ha intentado por todos los medios seducir esos programadores, llevarles a C#, llevarles a Visual Studio, decirles aquí nos tenéis para ayudaros a crecer....


Y parece que la gente está empezando a reaccionar y la tienda Microsoft está repleta de nuevos programas. Lo único que le hace falta a Microsoft es llegar a los móviles, es atacar las tablets, y de ahí volver a ser populares....


Pero para eso tal vez debe bajar el precio por licencia... Pero eso ya es otra historia...

miércoles, 23 de marzo de 2016

2016: El final de las teclas

Si habéis visto todo lo que llevo escrito en este blog sabréis que llevo en esto de los ordenadores desde hace ya 30 años, y lo que pongo en el título es lo que parece que va a llegar a ser.

Igual que parece que el papel cada vez va a ser menos usado, las teclas tienen pinta de llevar el mismo camino, y este camino se lleva escribiendo desde el principio de la informática.

En principio, la entrada de datos en un ordenador se realizaba mediante cables, si cables que se colocaban de alguna determinada manera y eran el Input, los datos primero se pensaban en el papel y luego se introducían disponiendo de una determinada manera los cables.

La siguiente manera de introducir datos fue mediante señales eléctricas moduladas, y en esos momentos a alguien se le ocurrió usar un teclado de máquina de escribir para introducir datos en un ordenador.

Así nace el "KeyBoard", el tablero de llaves, ya que cada tecla key es una llave que genera un código en el ordenador, y luego este código nos vale para escribir, como yo hago ahora mismo. palabras y textos.

Este fue un avance fundamental ya que permitió a todos los que sabían escribir a máquina poder escribir en ordenadores, y de esta forma las máquinas de escribir empezaron a desaparecer, ya que en un ordenador se podían corregir los errores en el momento antes de escribir...

Con este avance además hubo una gran caída de las ventas de los correctores, tipo Typex, ya que ahora los textos se escribían primero y luego corregidos se imprimían.

Y todo iba divinamente para el teclado, pero al llegar la Apple y Windows, empieza a aparecer un nuevo competidor, el ratón, que iba a suponer el dejar de usar tanto las flechas, unas flechas que hasta ese momento eran indispensables para moverse por menúes y para seleccionar cosas en la pantalla.

Pero como ya os comenté en el artículo sobre el lápiz óptico, ya se intentaba ir un paso más allá... Alguien ya estaba pensando en lo táctil, en poder usar los dedos no para pulsar teclas sino para interactuar con el ordenador.

Al proliferar los móviles, se intenta en esas pantallas diminutas el poder usar los dedos para moverse por los menús y como resultado, las teclas desaparecen y solo quedan un par de botones... Ese par de botones al final solo nos valen para encender y apagar...


Con la aparición de las tablets, la cosa empieza a ir peor para las teclas, ya que en ella se simula un teclado y se pulsan teclas virtuales...


Nosotros venimos de las teclas y aún seguirán existiendo porque estamos acostumbrados a ellas, pero las nuevas generaciones están acostumbradas a escribir sobre pantallas...

Cuando el tiempo pase, poco a poco los teclados habrán desaparecido casi por completo, porque nos queda un último golpe para las teclas, el dictado por voz.

Desde hace muchos años se ha ido mejorando el software de reconocimiento de voz, con lo que ahora estamos ante programas que fallan muy poco cuando los hablas...


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...




Visual Studio 3

Visual Studio 2

MICROSOFT VISUAL STUDIO 1: Descargar

domingo, 21 de junio de 2015

PROGRAMAR EN C#: Primer programa.

Cómo vimos en el capitulo anterior el primer programa que hemos sacado del horno tiene la sigueinte forma:


using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Aplicacionvacia
{
    class Program
    {
        static void Main(string[] args)
        {
        }
    }


}




Si sabes un poco de inglés estarás traduciendo lo que pone:



Usando sistema
Usando sistema.colecciones.genericas
Usando sistema.Linq
Usando sistema.texto
Usando sistema.threading.tarea


espaciodenombres Apicacionvacia

{
    clase program
          {
                  estatica vacia Principal (cadena[] argumentos)

                         {
                          }
          }
}


Vayamos por partes. La traducción si nos da grandes pistas de lo que está pasando.




El comando using, lo que nos permite es importar clases desde el fichero System, y este concepto de clases lo vamos a ver en el siguiente capítulo porque es el concepto fundamental de la programación en C#.

Este fichero System es lo que se llama una biblioteca, y al igual que en una biblioteca hay libros, lo que tenemos allí almacenados son clases, y en cada clase tenemos unos métodos que podemos llamar desde nuestro programa.

Cuando decimos using System.Linq lo que hacemos es acceder a las clases que dependen de Linq es decir, si ahora necesitamos alguna cosa de Linq la podemos usar directamente sin poner System.Linq.loquesea...

Esto lo vamos a ver un poco después con nuestro segundo programa en este mismo blog...

De momento seguimos adelante, namespace nos define el lugar donde vamos a trabajar, es decir, define un espacio de nombres que va a ser compartido por todas las clases que uses en tu programa, por ello ya verás lo sencillo que es usar otros ficheros con clases para tu programa.


A continuación declaramos la clase Programa, es el lugar donde vamos a crear nuestro programa, es el sitio donde va a ir toda la magia que vamos a poner en cada linea de código que vayamos poniendo.


Por último aparece la linea " static void Main(string[] args)" que es la declaración de nuestra función principal, y es la parte donde ponemos el programa principal. y es desde aquí donde se llamarán a las clases previamente definidas.


Main, es principal, porque es donde pondremos lo principal del programa. Por último lo que va entre paréntesis, son los parámetros que podríamos pasar a nuestro programa desde la linea de comando, es decir, podríamos lanzar el programa desde c:

C:>miprograma argumento1 argumento2

Y podríamos recuperar dentro del cuerpo del programa esos parámetros para tomar diferentes decisiones en base a ellos.

Pero ahora si vamos a añadir dos lineas entre las llaves que hay debajo de Main:

     Console.WriteLine("Mi primer programa");
      Console.ReadLine();

Estas dos lineas van a llamar a la clase Console a la función WriteLine primero, que va a sacar por pantalla nuestro mensaje Mi primer programa, y luego al llamar a ReadLine el programa va a esperar a que pulsemos una tecla para finalizar a continuación.



Otra manera de hacer lo mismo es recurrir al uso de using, para que no tengamos que escribir todo el rato la palabra Console:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Console;
namespace Aplicacionvacia
{
    class Program
    {
        static void Main(string[] args)
        {

                 WriteLine("Mi primer programa");
                 ReadLine();
        }
    }


}

Con esto lo que hacemos es decirle al compilador que cuando escribo WriteLine mire en la biblioteca Console, y allí la encontrará. Esto viene muy bien para no escribir tanto pero tiene una pega y es que usáramos dos cosas con el mismo nombre, es decir, que existiera una clase con el mismo nombre en dos bibliotecas.

Si esto sucede tendrías que llamar a ambas con todo el nombre porque en caso contrario se generaría un error de compilación puesto que el compilador no sabría a que estás haciendo referencia.

Espero que os haya gustado...

sábado, 20 de junio de 2015

PROGRAMANDO EN C#: Eligiendo las herramientas

En la primera entrada del blog os he señalado las razones por las que he elegido estudiar C#, y ahora voy a mostraros la herramienta que voy a utilizar.

Evidentemente ya sabemos todos que detrás de este lenguaje está Microsoft, de manera que para empezar vamos a descargar el Visual Studio que está ahora mismo como gratuito en la página de Microsoft.

Podéis elegir entre la versión Express para windows Desktop o la Community. Lo bueno de la Community es que os permitirá más adelante crear programas para la web y para la tienda windows. A cambio el peso, es decir, el tamaño del archivo será mucho mayor y os llevará más tiempo la descarga.

Una vez descargado, lo único que tenéis que hacer es arrancarlo, y darle a crear un nuevo proyecto. Este nuevo proyecto lo vais a elegir dentro de visual C#, en windows desktop, una Console Aplication, y le vais a poner un nombre, el que queráis, por ejemplo proyectoconsola1, o lo que más os guste.

Esto os va a generar el primer programa de vuestra carrera de programadores, el programa más sencillo de todos, y el que menos hace pero el más interesante:



using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Aplicacionvacia
{
    class Program
    {
        static void Main(string[] args)
        {
        }
    }
}


Ahora solo tenéis que darle a empezar o Start y se lanza vuestro primer programa... ¿Y qué hace? Abre un segundo una ventana y la cierra, es decir, no hace nada... ¿O hace algo?

Este programa hace muchas cosas que no veis, este programa se compila y se crea un ejecutable, un fichero que luego se puede volver a usar en cualquier máquina con Windows que tengáis, este programa que no es el que se suele mostrar como primer programa tiene muchas lineas que en próximas entregas os iré explicando....

Si no sabes nada de programación estarás deseando pasar a la siguiente entrega del blog para saber que es ese nada que son muchas cosas, pero lo que tienes que saber de momento es que el programa crea un proceso, es decir, abre un hueco en la zona de memoria donde se pueden ejecutar los programas y le dice al controlador de programas que el existe.

Además le dice al sistema que es un programa de consola y que prepare una ventana de consola para la ejecución...


Como ves si hace muchas cosas... Ahora veremos lo que hace cada línea...



viernes, 19 de junio de 2015

PROGRAMANDO EN C#: Presentación

¿Por qué C#?

Hace no mucho he leído un artículo sobre los lenguajes de programación y los programas, y en él se ponía en relación los diferentes lenguajes y sus estructuras unos con otros. Y lo cierto es, cómo decía el autor del mismo, que todos los lenguajes de programación al final manejan las mismas cosas aunque si que es cierto que dependiendo de para qué tarea puede ser que uno sea más apropiado para una determinada tarea.

Cuando yo empecé a programar esto estaba muy definido, si querías hacer solo un programa normal usabas Basic, si querías hacer un programa que manejara matemáticas usabas Fortan o Pascal, si ibas a hace algo relacionado con datos, usabas Cobol... Y querías estudiar otros lenguajes podías irte al Ada o Lisp.

En estos momentos lo que más fuerte pega en programación son el Java, el C++, el JavaSript,y otros muchos. Si sabes un poco de cada uno puedes empezar a darte cuenta de la complejidad de cada caso.

Yo soy de los que en su momento aprendieron mucho Basic, luego mucho Pascal y el lenguaje de Dbase iii, luego me dio por el C y por último me encantó el C++ y sus clases.


Todo esto quedó en el pasado, y mis sueños se fueron diluyendo cómo cubos de hielo en agua, despacio pero se fuero iéndo.

El año pasado por una serie de circunstancias dispuse de algo de tiempo y me pude dedicar a seguir muchos de los cursos que están disponibles en la Microsoft Virtual Academy (microsoftvirtualacademy.com), y empecé a estudiar el C# y poco a poco me di cuenta de lo sencillo que resultaba de entender y lo fácil que resultaba crear programas en él.

Esta es la primera razón, la segunda es que recientemente he empezado a tomar contacto con Xamarin, que te permite crear aplicaciones con C# para Windows, Windows Phone, Android y IOs(Apple), y esto me ha acabado de convencer de que este es el camino que quiero seguir.


Mucho del camino yo ya lo he recorrido pero hay otro mucho camino que quiero recorrer con vosotros, y por ello voy a empezar desde el principio.

Lo básico, desde lo más fundamental, y para ello hay que empezar por los proyectos en Consola, ya que son los más rápidos de crear y entendiendo esto serás capaz de entender todo lo que ha venido después, las aplicaciones en ventana y las aplicaciones para la tienda Windows.

De esta manera el esquema será de menor dificultad a mayor dificultad, y llegará un momento en que empezaremos a hacer programas para la tienda windows.

Pero para eso primero hay que ver muchos conceptos y poco a poco iremos viendo cada uno de los que nos serán necesarios...



De momento un saludo y espero que os guste.

miércoles, 17 de junio de 2015

BUCLES Y BUCLES INFINITOS

Cuando aprendes a programar en cualquier lenguaje de programación lo más normal es cometer muchos errores, los más normales al principio son los errores de sintaxis, cómo escribir Pirnt en lugar de Print.

Conforme va uno controlando la sintaxis se empiezan a producir otro tipo de errores, errores que podríamos llamar errores lógicos, como por ejemplo querer usar dos variables de tipo carácter para hacer una suma decimal o querer comparar un numeral con un decimal.

Estos errores pueden llegar a volverte loco si el programa es largo, y si tiene muchas líneas. Pero desde el principio cuando uno aprende un poco de programación quiere probar cosas divertidas e interesantes aunque esto suponga quebrantar esa lógica.







El bucle:

Un bucle es una parte de un programa que se repite una serie de veces. Estas veces pueden estar determinadas (tipo FOR) o indeterminadas (tipo WHILE), es decir se hace 5 veces o n, donde n viene de alguna condición.

FOR I =1 TO 100
PRINT "HOLA"
NEXT I



Imprime cien veces la palabra HOLA en la pantalla

X=0
WHILE X<=100
PRINT "HOLA"
X=X+1;
RETURN

Imprime 101 un veces HOLA en pantalla, es decir hasta que la condición de WHILE se cumpla.

Estos ejemplos realizados en Basic de la vieja escuela nos muestran de una manera muy sencilla lo que es un bucle.

El bucle infinito:

Pero he aquí que podemos hacer en el WHILE que la condición nunca se cumpla, por ejemplo:


X=0
WHILE X<=100
PRINT "HOLA"
RETURN

X siempre vale 0, con lo cual el programa se queda siempre imprimiendo HOLA.

A ver, y esto es lo sorprendente de entender, en condiciones ideales con un ordenador siempre conectado y que nunca fallara, esto sucedería infinitas veces, es decir, sería un bucle infinito.

Pero en aquellos tiempos la preocupación era otra ya que parecía como si se hubiera roto el ordenador y más de uno cruzamos los dedos cuando apagamos y volvimos a encender el ordenador esperando que esto hubiera finalizado.

Y esto era así porque no era verdaderamente infinito, aunque si podía crear más de un dolor de cabeza cuando estábamos ejecutando una aplicación larga y de pronto obteníamos la nada por respuesta, ya que estos bucles aparecían de la manera más insospechada y en los lugares donde menos te lo esperabas.

El más conocido de los bucles infinitos:

Si preguntáis a la gente de mi generación cual era el bucle infinito por excelencia os mostrarán algo así:

10 GOTO 10

Es decir, la más sencilla de todas las sentencias, vete a la linea 10 siempre, y así era en el Spectrum y el Amstrad y en los programas compilados de PC. Menos mal que a alguien se le ocurrió introducir una combinación de teclas que rompían el bucle: Control + C.

De otra manera solo cabía volver cargar el ordenador al reiniciarlo....

Un bucle infinito en C#:

Tan sencillo como un par de lineas y llenamos mientras dure su ejecución de "hola" la pantalla del ordenador:

   while (true )
            {
                Console.Write("hola");
            }
Si lo arrancas verás que la ventana de la consola se llena de holaholaholahola... y no parará hasta que cierres la ventana.

En otro momento, cuando no había tanta memoria del ordenador, lo que se producía al cabo de un rato es un stack overflow, ya que el número de llamadas era demasiado grande para que el ordenador lo soportara.

Un recuerdo curioso:

Cuando el Basic se fue haciendo más popular y los compiladores eran mejores se empezaron a introducir nuevos comandos.

Uno de los que metieron era ONBREAKCONT, es decir, en caso de break continua ejecutando. Con lo que al realizar un bucle infinito solo te quedaba la posibilidad de apagar el ordenador para salir del mismo ( el break era Control + tecla C).

Esto dice mucho de lo que era estabilidad en aquella época y lo que es ahora...


Espero que os haya gustado....