viernes, 7 de junio de 2013

Curso programación desde 0 - Tema 3 - Pensando con variables

En el tema anterior http://robertogascon.blogspot.com/2013/06/curso-programacion-desde-0-tema-2.html vimos como empezar a pensar como programadores, en este tema avanzaremos un poco más, vamos a ver algo que es imprescindible en la programación las variables; entendamos una variable, como una cajita, en la que vamos a guardar algo, mas tarde llamando a esa cajita podremos ver lo que tiene guardado, cambiarlo, e incluso eliminarlo.

Programando, al usar una variable se guarda en memoria del ordenador, suele ser RAM, por lo que en el momento que cierras el programa, o se apaga el ordenador se pierde todo lo que este hay guardado, para hacerlo permanente hay que meterlo en una base de datos, o crear un archivo con los valores, pero es un tema avanzado que veremos mucho más adelante, ahora entendamos que es una variable y su funcionamiento

En la vida real, si tu guardas algo en una caja, esa caja te ocupara un espacio, en la programación también es así, toda variable ocupa un espacio de memoria, por lo es recomendable utilizar el menor número posible, y lo más adecuadas, con esto último quiero decir que para guardar un boli, nadie utilizaría una caja de 2 metros de largo, por 2 de ancho, por 2 de alto, programando debemos hacer algo parecido, casi todos los lenguajes necesitan que se le diga el tipo de dato que va a guardar esa variable, aquí lo vamos a simplificar en 3, cuando entremos en materia de programación los veremos todos según el lenguaje con el que programemos, pero recordar que lo que veamos aquí nos valdrá para cualquier lenguaje actual.
Así que vamos a clasificar las posibles variables, en:

  • Texto
  • Numero
  •  Verdadero/Falso


Sus nombres prácticamente lo dicen todo de ellas, aun así una pequeña descripción:

·         Texto: En una variable de tipo texto, comúnmente llamadas String podremos almacenar cualquier tipo de texto, como podría ser “Hola mundo” después cambiarlo, mostrarlo por pantalla o trabajar como mas nos convenga, esto suele usarse para guardar el nombre del usuario, o los datos que nos pueden teclear por pantalla, aunque en realidad sirven para guardarlo casi todo, también podremos guardar “2348” y diréis, pero eso es un número, no habría que guardarlo en la del tipo número?? Pues sí, y no quizás estas desarrollando un videojuego y te interesa mostrar en pantalla la puntuación, para ello lo mejor es sacar un mensaje “puntuación: ” al que le juntes la puntuación, por lo que se convertiría en texto.
“Puntuación: 2348” tiene parte numérica y parte texto, pero se usa como si solo fuera texto.

Otro ejemplo, quizás más claro seria si a nuestro “2348” queremos no sumarle; si no ponerle un 0 mas eso con variables tipo numéricas, deberíamos multiplicar por 10, es algo no muy complicado, pero, y si queremos ponerlo un 11 al final? Es decir sacar el numero “234811” en pantalla, ¿que operación habría que hacer para eso? Si juntamos 2 textos se logra fácilmente.

Otro caso muy común que tiene, es guardar los datos que vienen por la URL en aplicaciones web, siempre que se recoge un dato es de tipo texto, si mas tarde necesitamos hacer una suma por ejemplo, deberemos convertirlo a numero, ya que los textos no pueden hacer operaciones matemáticas
Conclusión: una variable de tipo texto puede almacenar cualquier cosa, números, textos… aunque no es recomendable usarla, excepto en casos realmente necesarios, para nada que no sea un texto, son el tipo de caja más grande.


·         Numero: este tipo variable consume mucha menos memoria que las de tipo texto, y son las encargadas de almacenar únicamente números, con ellas podremos hacer operaciones matemáticas; sumar, multiplicar, restar, dividir y modulo son las más habituales; muchos diréis las 4 primeras bien, ¿¿pero modulo?? No hay que asustarse, no es hora de aprender nuevas operaciones matemáticas, en realidad ya la conocéis, el modulo es simplemente el resto de una división.

Por ejemplo, si dividimos 5/2 nos dará como resultado 2, con resto 1, ese resto es el modulo, por lo que modulo de 5/2 es 1, esto tiene infinidad de funcionalidades, pero una de las más comunes es ver si un numero es par o impar.

·         Verdadero/Falso: este tipo de variables es la más liviana que existe, ya que ocupa únicamente un bit, si, ni siquiera un byte, y a pesar de lo pequeña que es no podríamos desarrollar ningún programa sin ella, o seria un infierno, lo que almacena en realidad es un 0, o un 1, lo que en nuestro idioma puede ser un sí o un no, este tipo de variables comúnmente es llamado boolean, en nuestro programa del tema pasado, el de quitarnos la sed, podríamos utilizarlo para comprobar  si tenemos el vaso en la mano, y que cuando lo tengamos cogido, lo dejemos en lugar seguro antes de coger también la botella, aunque, aquí estamos metiendo condiciones, y no quiero adelantarme, eso lo veremos en el siguiente tema.

Vamos a ver un par de ejemplos de programas sencillos en los que usemos variables; por cierto, esto que hacemos de escribir los programas aunque sea de un modo básico en nuestro lenguaje, se llama pseudocódigo, es un paso entre medias de nuestro lenguaje y el del ordenador, lo que estamos escribiendo no cumple las “reglas” de pseudocódigo, pero este es un curso de programación no de pseudocódigo, solo os voy a enseñar a gatear, no a que ganéis carreras gateando, al fin y al cabo todos queremos correr y no quedarnos a cuatro patas, así que es interesante que lo conozcáis, para ir acostumbrándoos y cogiendo ritmo a lo que va a venir después, pero no necesitáis dominarlo, de hecho llevo años programando y no he conocido aun a nadie que utilice el pseudocódigo, aunque también sirve de ayuda, cuando estas atascado y no sabes por dónde tirar, escribírtelo en una “servilleta” para después transformarlo a código.

Un ejemplo de lo visto seria:



Un programa que nos muestre la tabla del 3 y al resultado le sume 2;

Var numero Numero; //declaro la variable
Numero = 3*1; // multiplico 3 x 1
Numero = Numero + 2; // le sumo 2 al valor que tiene numero guardado
Muestro Numero;

Numero = 3*2;
Numero = Numero + 2;
Muestro Numero;

Numero = 3*3;
Numero = Numero + 2;
Muestro Numero;


Numero = 3*4;
Numero = Numero + 2;
Muestro Numero;

……….
……..
……


No vamos a seguir con el ejemplo hasta el final ya que veis que se repite todo una y otra vez solo cambiamos el número que multiplica, y se haría muy largo este programa; más tarde veremos cómo simplificar programas de este tipo que se repiten una y otra vez lo mismo, o con un pequeño cambio.

Podéis ver en el ejemplo superior un par de cosillas nuevas, y es que al lado de las 3 primeras líneas he escrito:
//* Un comentario*
Este es el modo de comentar el código en pseudocódigo, algunos lenguajes de programación también utilizan esta simbología.

Los comentarios son algo muy importante en programación, se pueden hacer en nuestro idioma, y podemos poner tantos como queramos, no existe ninguna regla ni norma que impida ponerlos, ni tampoco que nos obligue, pero son recomendables, por una sencilla razón, a la que haces un programa de unos cientos de líneas, si no tienes comentarios, es complicado saber que parte del código hace que.
Aun así, si has sido tú el que lo ha programado, seguramente en cuanto lo veas te suene y sepas donde buscar, para modificar algo, o reparar un bug, pero si estas en un equipo, y alguien coge tu código, seguramente no sabrá ni por dónde empezar, lo mismo sucederá si te toca coger el código de otra persona, por eso mismo es una buena costumbre comentar nuestro código, los comentarios son ignorados por el ordenador por lo que no afectan al rendimiento, pero si comentas cada línea de código se volverá un poco pesado a la hora de leerlo y buscar una parte en concreto, lo suyo es comentar solamente aquellas partes que son tan complejas que de un vistazo no se sabe que hacen, si buscáis sobre este tema en internet, encontrareis mucha polémica, y la verdad es que el mejor comentario, es el que no necesita escribirse, con esto quiero decir que si tu código es sencillo, claro, esta indentado (en España lo solemos llamar tabulado, veremos cómo tabular el código en el siguiente tema); y demás no será necesario comentarlo, excepto en funciones complejas.

Otro ejemplo seria un programa que le pida al usuario su nombre, y apellidos por separado, y después le muestre su nombre completo

Var Nombre, Apellido, Apellido2  Texto; //declaro 3 variables a la vez
Muestro “Introduce tu nombre”;
Nombre = TextoIntroducido;

Muestro “Introduce tu apellido”;
Apellido = TextoIntroducido;


Muestro “Introduce tu Segundo Apellido”;
Apellido2 = TextoIntroducido;

Muestro “tu nombre es: “+ Nombre + “ “+ Apellido + “ “+ Apellido2;


Como veis cada vez que quiero mostrar un texto que no está almacenado en ninguna variable lo escribo entre “” es el modo habitual de escribir los textos, para no confundirlo con posibles variables o funciones después concateno (junto) el texto que escribo yo, con la variable Nombre utilizando el símbolo de + pero no sumo nada, solo junto los textos, recordemos que los textos no pueden sumarse, solo juntarse; a su vez le sumo un espacio en blanco, y a este le sumo el primer apellido; etc.

Como ejercicio estaría bien que hicierais un programa que pida el nombre de 3 usuarios, uno detrás de otro, a la que tienes los 3 nombres; les haces 3 preguntas a cada uno; pero estas preguntas deben ser personalizadas; con esto quiero decir que debes preguntar algo al estilo: Cuál es tu edad pepe? Una vez la conteste, pasar al siguiente usuario: Cuál es tu edad Juan? Y así las 3 preguntas para los 3 usuarios, termina el programa sumando las 3 edades, y mostrándolo por pantalla.


Recuerda que el mejor modo para la corrección es publicarlo como comentario debajo del ejercicio, así tú y todos tus compañeros podréis aprender y ayudaros los unos a los otros, pero estoy disponible en el email rogamainformatica@gmail.com

Tema 8 - Programación Orientada a Objetos POO
Tema 7 - Funciones
Tema 6 - Bucles Repetitivos
Tema 5 - Usando condicionales
Tema 4 - Arrays
Tema 3 - Pensando con variables (Tema actual)
Tema 2 - Pensando como Programadores
Tema 1 - ¿Que es la programacion?