Introducció a la Programació

Llenguatges i Estàndards Web - Grau Multimèdia - UOC 2010

Index


Introducción

Aprender a programar bien ha sido siempre una tarea ardua. Aunque son muchas las personas que de manera autodidacta han aprendido lo suficiente como para hacer sus propios programas, la verdad es que, como en todo, sin una buena base, programar bien no es trivial.

Sentarse delante de un ordenador a escribir un programa informático es una tarea que requiere además de una buena dosis de paciencia, unos conocimientos básicos que permitan al programador tener una cierta seguridad de que lo que está haciendo funcionará sin demasiados problemas. Tener que probar lo que haces a cada paso representa una pérdida considerable de tiempo, así que si tienes claro todo lo que puedes o no hacer y como hacerlo, siempre estarás en disposición de mejorar la calidad de tus programas.

Este manual pretende ser una breve introducción a la programación. Está pensado básicamente para que sea útil a aquellas personas que desean empezar a programar en ActionScript, el lenguaje de programación del Flash de Adobe (antes Macromedia). Sin embargo también puede ser de gran ayuda para aquellas personas que quieran aprender a programar, casi, para cualquier lenguaje de programación.

Con este objetivo, una parte importante del manual utiliza un pseudolenguaje de programación propio que no puede compilarse ni interpretarse. La idea es que el lector se entretenga en escribir sobre “el papel” sus programas; más adelante ya tendrá tiempo de hacerlo directamente sobre la máquina.

Este pseudolenguaje está pensado para que el salto desde él hasta ActionScript (el lenguaje de programación de Flash), sea muy sencillo. Eso complicará la existencia a aquellos que quieran practicar con otros lenguajes de programación, pero menos de lo que pudiese parecer.

Acabar con una advertencia. Este manual es una introducción. Seguir los pasos que aquí se indican facilitará a lector el aprendizaje de técnicas más avanzadas de programación. Eso sí, hay que tener paciencia y tesón.


Programas y Datos

Programas

Al leer el título de esta etapa (Programas y datos) es fácil pensar en ordenadores y en una persona sentada delante de una pantalla durante horas, haciendo algo parecido al navegador de Internet que estamos usando para leer este texto. Sin duda este material tratará el tema de los programas desde un punto de vista similar, pero, para entender qué es un programa, debemos ser conscientes de que a lo largo de nuestra vida son muchas las ocasiones en las que nos dedicamos a programar muchas cosas que no son ordenadores.

Cuando nos vamos de viaje programamos el viaje. Cuando queremos que el vídeo nos grabe una película de la televisión programamos el vídeo. Si tenemos que dar unas clases tenemos que preparar el programa que daremos.

A veces el programa ya viene hecho y nosotros sólo tenemos que utilizarlo. Y no estamos hablando de programas informáticos. La lavadora, el lavavajillas, muchos electrodomésticos tienen un conjunto de programas que nosotros debemos escoger para que hagan su función. Podemos encontrar programas por todas partes sin necesidad de tener delante un ordenador. ¿Qué es entonces un programa?

Podríamos definir un programa como un conjunto de instrucciones que nos permiten, dada una situación inicial, llegar a la situación final que nosotros deseemos. Por ejemplo: el programa de ropa delicada de la lavadora nos permite dada una situación inicial (un conjunto de prendas delicadas y sucias) llegar a una situación final que nosotros deseamos (esas prendas limpias y sin estropear). Cada uno de los programas de los que consta la lavadora nos permite partir de una situación inicial diferente para llegar a una situación final similar.

El ejemplo de la lavadora nos ha mostrado como diariamente trabajamos con programas sin darnos cuenta. Pero, ¿y programar? Programar también lo hacemos auque seguramente no tan a menudo. Vamos a ver otro ejemplo: cuando queremos que el vídeo nos grabe una película de la televisión debemos programarlo. ¿En qué consiste programar el vídeo? La verdad es que es muy sencillo. Le indicamos qué cadena tiene que grabar, a qué hora debe iniciar la grabación y a qué hora debe finalizarla. Así, si queremos que grabe un programa de TVE 2, que empieza a las 15:30 y calculamos que acabará sobre las 17:00, al vídeo le daremos estas instrucciones:

Nuestro programa tiene 5 instrucciones que, si bien no las hemos escrito exactamente así, sí que hemos hecho lo suficiente como para que el vídeo las realice de esa manera. En este programa la situación inicial era una cinta de vídeo vacía y dentro del vídeo, y la situación final la misma cinta, en el mismo sitio, pero con el programa que queríamos ver grabado en ella.

Aunque parezca que el ejemplo del vídeo está muy lejos de un programa informático, no es así. Un programa informático no es más que un conjunto de instrucciones que el ordenador obedece ciegamente. Sin duda, el lenguaje que utilizaremos para indicar al ordenador que debe hacer es más complejo que el que hemos usado aquí, pero la base es la misma. En el programa informático partiremos siempre de una situación (estado) inicial y llegaremos a una situación (estado) final después de realizar un conjunto de instrucciones.

Datos

Hasta aquí hemos hablado de cómo podemos hacer un programa que haga un determinado trabajo y hemos intuido que hay mucha similitud entre un programa informático y un programa que nos permita hacer algo con un electrodoméstico.

Sin embargo, cuando hacemos un programa informático, este trabaja con unos datos (llamamos datos a cualquier información que introducimos en el ordenador), algo que no pasa con el vídeo o la lavadora. ¿O sí? ¿Con qué trabaja la lavadora? Evidentemente con ropa sucia. De alguna manera si hacemos un símil entre una lavadora y un ordenador, podríamos decir que la lavadora tiene un programa que, a partir de unos datos introducidos (ropa sucia), nos devuelve unos datos tratados (ropa limpia). Puede parecer difícil ver la ropa como un dato, pero fijémonos ahora en el ejemplo del vídeo. En este caso tenemos un programa que nos permite, a partir de unos datos de entrada (hora de inicio, hora de final, cadena y los datos de la antena de televisión), obtener unos datos de salida (un programa en una cinta de vídeo).

Así pues podríamos decir que cualquier programa informático (y, generalizando, cualquier programa) realiza un conjunto de instrucciones de manera que, a partir de una situación y de unos datos iniciales, llegar a una situación y a unos datos finales.

Resumen y actividades

Para resumir vamos a definir algunos de los términos que hemos utilizado y que seguiremos usando a lo largo de este documento.

Programa
Conjunto de instrucciones que indica a un ordenador que tiene que hacer para, a partir de un estado inicial, llegar a un estado final.
Estado Inicial
Situación en que se encuentran el ordenador y los datos antes de ejecutar el programa.
Estado final
Situación en que se encuentran el ordenador y los datos después de ejecutar el programa.
Dato
Cualquier información que proporcionemos al ordenador
Actividades
  1. Escribe cuáles son las instrucciones que realiza el programa de lavado suave de tu lavadora (cargar agua, cargar jabón, …)
  2. Escribe un programa que permita a una persona desplazarse desde tu domicilio hasta el ayuntamiento de tu localidad. ¿Qué instrucciones has utilizado? Escríbelas.
  3. Escribe un programa que permita a un robot que sólo sabe interpretar las siguientes instrucciones: ir a comedor, coger silla, dejar silla, ir a dormitorio; mover seis sillas del comedor al dormitorio.
  4. Escribe un programa que permita a una persona hacer una tortilla de patatas para dos personas.
  5. Modifica el programa que has hecho para la actividad anterior de manera que permita a una persona hacer una tortilla de patatas para 2, 4 o 6 personas según el número de invitados que tenga.


Algoritmos y programas

Lenguajes de programación

Cuando debemos hacer un programa para un ordenador no podemos escribirlo de cualquier manera. Una de las actividades de la etapa anterior consistía en hacer un programa que permitiese a un robot mover unas sillas de una habitación a otra. Ese ejercicio especificaba que el robot sólo sabía interpretar cuatro instrucciones y por tanto para poder “explicarle” que tenía que hacer debíamos hacerlo sólo con ellas.

Cuando hacemos un programa para un ordenador nos encontramos en una situación similar: no podemos explicarle con nuestras propias palabras qué tiene que hacer. El ordenador es una máquina electrónica que funciona a base de impulsos eléctricos de manera que, según pase o no electricidad por unos circuitos determinados, hace unas cosas u otras. No vamos a entrar aquí en el sistema que utiliza el ordenador para trabajar, pero lo que es importante que comprendamos es que no nos podemos comunicar con él en su propio lenguaje (de impulsos eléctricos), ni en el nuestro. Por tanto, necesitamos algún lenguaje que esté a medio camino entre lo que entiende el ordenador y lo que podemos explicar nosotros.

Desde hace algún tiempo existen investigaciones tendentes a buscar una forma de comunicación con los ordenadores lo más cercana posible al hombre. Sin embargo todavía está lejos el día en que podamos hablar con los ordenadores y ellos nos entiendan (a pesar de “2001: Una odisea del espacio”). Así pues, nos tenemos que conformar con lo que llamamos lenguajes de programación, que no son más que “idiomas” que, simplificando el inglés, intentan facilitar la creación de programas.

Cuando una persona quiere crear un programa lo primero que debe hacer es planificar la tarea a realizar, analizar los datos de que dispone, saber exactamente cuál es el resultado a obtener. En la asignatura Programación: Programas y sistemas de autor I se explica con exactitud los pasos a dar para la creación de un programa. Como el objetivo de este documento es introducir al lector en la programación, nos limitaremos a hacer pequeños programas fáciles de planificar y dejaremos para dicha asignatura el saber cuáles son los pasos necesarios parar crear un programa complejo.

Lenguajes de programación hay muchos, pero nosotros nos centraremos en un lenguaje en particular: ActionScript, un lenguaje que nos permitirá hacer que Flash se convierta en algo más que un programa de animación. El ActionScript facilita que nuestras animaciones puedan interactuar con el usuario. A pesar de que nuestro objetivo es aprender a programar en ActionScript, lo cierto es que no vamos a empezar directamente con él. Primero veremos una forma de expresar programas algo más sencilla que este lenguaje y que nos permitirá escribir sobre el papel aquello que después programaremos delante del ordenador: Empezaremos por hacer algoritmos.

Lenguajes de programación
A lo largo de los años, desde la creación de los ordenadores hasta ahora, muchos son los diferentes lenguajes que se han usado para programar. Inicialmente el lenguaje utilizado era el código máquina (un lenguaje que el procesador puede "entender" sin traducción), pero ese "lenguaje" basado en códigos numéricos binarios (sólo con ceros y unos) era difícil de utilizar y los programadores que lo usaban eran casi "seres de otro planeta". Conforme se fueron construyendo más ordenadores hubo que buscar una manera de poderlos programar de una forma más sencilla. Y aparecieron los compiladores, programas capaces de traducir un conjunto de instrucciones escritas en un lenguaje más o menos similiar al humano, al código binario que el procesador es capaz de entender. En un primer momento los lenguajes de programación eran muy similares al lenguaje máquina, muchas veces no eran más que transcripciones en letras de los los códigos binarios. A ese tipo de lenguajes se les llama lenguajes de bajo nivel porqué están muy "abajo", muy cerca de la máquina. Más adelante fueron apareciendo lenguajes más cercanos al ser humano y, por tanto, más alejados de la máquina. Son los lenguajes de alto nivel, los que suelen usarse hoy en día. Pero lenguajes de programación hay muchos, muchísimos y por tanto se clasifican de muy diversas formas. Aunque no entraremos aquí a ver diferentes clasificaciones de lenguajes de programación sí que comentaremos algunos lenguajes de programación para entender un poco mejor qué significa programar. A continuación hay una lista no exahustiva de lenguajes de programación con una breve explicación sobre ellos.

Fortran Es un lenguaje creado en el año 1957 para facilitar la creación de programas de cálculo matemático.

Algol Creado en 1958, se creó pensando en que fuese independiente del ordenador en que se usase. A pesar de ser bastante completo y de que fue evolucionando, su utilización quedó reducida básicamente al entorno académico. Se considera al Algol como antecesor de los lenguajes C, Pascal, Modula y otros.

Lisp Acrónimo de List Processing es un lenguaje muy diferente a Fortran y Algol. Durante tiempo se consideró como un lenguaje modelo para la investigación en inteligencia artificial.

Cobol Es un lenguaje de programación creado en 1960 por un consorcio formado por fabricantes de ordenadores y el gobierno de los Estados Unidos, con el fin de buscar un lenguaje único que funcionase igual en todo tipo de ordenadores. Es un lenguaje pensado sobre todo para facilitar la creación de programas de gestión y durante mucho tiempo fue el rey en las aplicaciones de las grandes empresas. Todavía hoy pueden encontrarse numerosos programas escritos en cobol en dichas empresas.

Basic (Beginner's All-purpose Symbolic Instruction Code) Es un lenguaje creado a principio de los años 70 con el objetivo de facilitar el aprendizaje de programación. Basado en parte en Fortran, era sencillo de programar, aunque en su momento tuvo muchos críticos por no ser estructurado. Hoy en día una versión de Basic estructurado, el Visual Basic, es habitualmente utilizado por programadores de todo el mundo.

Pascal Creado por el profesor Niklaus Wirth a principio de los años 70, pretendía ser un lenguaje destinado al aprendizaje de lo que se llama programación estructurada. A diferencia del Basic inicial, nada estructurado, los programas en Pascal deben seguir toda una serie de normas destinadas, sobre todo, a facilitar su comprensión y, por tanto, su mantenimiento. Aunque se considera un lenguaje básicamente académico existe una versión orientada a objetos, Delphi, de amplia utilización en entornos empresariales.

C Creado en 1972 por Dennis Ritchie, es famoso por ser el lenguaje de programación con el que se escribió el sistema operativo UNIX. Se considera un lenguaje de nivel medio y hoy en día se utiliza en todas aquellas aplicaciones en la que es más importante que el programa resultante sea rápido que la facilidad de programación. Existe una versión orientada a objetos, el C++.

Ada Fue desarrollado por el Departamento de Defensa de los Estados Unidos para tener un lenguaje común a todos los ordenadores que usaban. Su nombre es en reconocimiento a Augusta Ada Byron, hija del poeta Lord Byron, considerada por algunos como la primera programadora del mundo. Es uno de los primeros lenguajes en permitir la ejecución de varios procesos simultáneamente dentro de un mismo programa. Su sintaxis deriva del Pascal.

Prolog Acrónimo de Programación Lógica, Prolog es un lenguaje de programación que analiza estructuras lógicas y obtiene resultados a partir ellas.

Perl Lenguaje de programación surgido con la idea de facilitar las tareas de administración en UNIX pero usado como lenguaje de propósito general.

Java Creado en el año 1995 por Sun Microsystems, Java es un lenguaje de programación de propósito general pero con unas características que facilitan la creación de programas que funcionen a través de Internet.

JavaScript Nace en el año 1995 cuando Netscape introduce la versión 2.0 de Navigator y lo incluye bajo el nombre de Mocha (posteriormente pasaría a llamarse LiveScript). Finalmente se le bautiza con el nombre de JavaScript (a pesar de no tener relación con Java) para llamar la atención de los medios y la industria de la informática.

Otros lenguajes de programación son PL/1, APL, B, Modula, RPG, Snobol, Eiffel, Simula, Smalltalk, Clipper, PHP, ...

Algoritmos

Como ya decíamos en un párrafo anterior, antes de ponerse a programar es necesario planificar el trabajo a realizar. Nosotros vamos a hacer parte de esa planificación escribiendo en un papel una aproximación del programa que vamos a realizar. A esta aproximación le llamaremos algoritmo. ¿Es necesario escribir un algoritmo antes de escribir el programa? No, de hecho generalmente los programadores suelen escribir directamente sus programas sin el paso previo de la creación del algoritmo. Sin embargo, para aprender a programar es conveniente que nos acostumbremos a escribir primero el algoritmo antes de ponernos con el programa. De esta manera podemos revisar con facilidad lo que hacemos y modificar todo lo necesario antes de programar. Por otra parte, el hecho de escribir el algoritmo primero, nos permite acostumbrarnos a pensar antes de programar y nos dará agilidad para, en un futuro, poder programar directamente.

Por poner un ejemplo imaginemos un viajante que empieza a trabajar en una zona que no conoce. Para poder llegar a todos los clientes que debe visitar un día, deberá primero planificar su desplazamiento sobre el papel, para, de esta manera, no hacer más quilómetros de los necesarios. Cuando lleve un tiempo recorriendo la zona, será capaz de planificar el recorrido en función de los clientes a visitar sin necesidad de usar el papel. De igual manera, para ahorrarnos trabajo y tiempo, nosotros debemos empezar por "planificar" nuestros programas sobre el papel. Una vez tengamos soltura ya podremos hacerlo directamente... ¡Aunque una planificación previa sobre el papel siempre será provechosa!

Resumen

Para programar necesitamos algún sistema que nos permita indicar al ordenador las instrucciones que debe seguir. Para ello utilizamos los lenguajes de programación. Sin embargo, antes de ponernos a programar debemos planificarnos. Una parte de esa planificación será la creación del algoritmo, una aproximación a lo que después será realmente el programa.



Datos

Datos, tipos de datos y variables

Hasta ahora hemos visto programas muy sencillos. Pero es fácil ver que, para hacer programas más útiles, las cosas se complicarán un poco. Continuando con el ejercicio de la receta de la tortilla de patatas, pensemos en una hipotética receta para hacer pasteles de cumpleaños. Como pasteleros, necesitaremos obtener algunos datos para hacer un buen pastel. Necesitaremos, por ejemplo, saber si al homenajeado le gusta o no el chocolate (en caso contrario, haremos un pastel de frutas), el número de comensales y el nombre a poner en el pastel. En función de estos datos, variaremos el procedimiento a seguir.

Así pues, necesitamos almacenar tres datos. Cada uno de ellos se guardará en una variable.

Variables

Para poder trabajar con los datos los almacenaremos en las variables. Una variable viene a ser un almacén donde podemos guardar un dato determinado. De esta manera para cada dato necesitaremos una variable.

Para diferenciar unas variables de otras a cada una le daremos un nombre que será diferente al nombre de cualquier otra variable. A los nombres de las variables también se les llama identificadores, porque la identifican de manera única.

Así podemos tener una variable que se llame precio que guarde un valor (numérico) que será el precio de un determinado artículo (por ejemplo 137). Y una variable que se llame producto que guarde un valor (de texto) que será el nombre del artículo que tiene ese precio (por ejemplo cámara). Es importante diferenciar el nombre de la variable (producto) del valor que almacena (cámara).

En primer lugar guardaremos un Sí o un No en una variable "chocolate". A las variables que sólo pueden almacenar los valores "Sí" y "No" (más bien cierto y falso) se las llama booleanas o lógicas.

George Boole

Nacido el 2 de Noviembre de 1815 en Lincoln, Lincolnshire (Inglaterra), publicó en el año 1854 las leyes del pensamiento sobre las cuales se basan las teorías matemáticas de Lógica y Probabilidad. Boole aproximó la lógica en una nueva dirección, reduciéndola a un álgebra simple, vinculando más lógica y matemáticas. Agudizó la analogía entre los símbolos algebraicos y aquellos que representan formas lógicas. Su álgebra consiste en un método para resolver problemas de lógica que recurre solamente a los valores binarios 1 y 0 y a tres operadores: AND (y), OR (o) y NOT (no). Comenzaba el álgebra de la lógica, llamada Algebra Booleana que ahora encuentra aplicación en la construcción de ordenadores, circuitos eléctricos, programación, etc.

Boole también trabajó en ecuaciones diferenciales, el influyente Tratado en Ecuaciones Diferenciales apareció en 1859, el cálculo de las diferencias finitas, Tratado sobre el Cálculo de las Diferencias Finitas (1860), y métodos generales en probabilidad. Publicó alrededor de 50 escritos y fue uno de los primeros en investigar las propiedades básicas de los números, tales como la propiedad distributiva.

El trabajo de Boole llegó a ser un paso fundamental en la revolución de los ordenadores cuando Claude Shannon, en 1938, demostró como las operaciones booleanas elementales se podían representar mediante circuitos conmutadores eléctricos, y cómo la combinación de estos podía representar operaciones aritméticas y lógicas complejas. Shannon demostró asimismo que el álgebra de Boole se podía utilizar para simplificar circuitos conmutadores.

A continuación, guardaremos el número de comensales en la variable numérica "comensales". Finalmente, almacenaremos el nombre del homenajeado en una variable de texto, "nombre". En la realización del programa necesitaremos más variables (el número de huevos, el tiempo de cocción, la temperatura del horno...) pero todos los tipos de datos que veremos a lo largo de este texto se limitarán a los tres que acabamos de ver. Hemos visto que los datos con los que trabajamos deben guardarse en un espacio al que llamamos variable. En algunos lenguajes de programación para poder utilizar una variable debemos decir antes qué tipos de datos guardaremos dentro. No es el caso de ActionScript, que para diferenciar un texto de un número utiliza sólo las comillas (los textos siempre irán entre comillas). Sin embargo, hay veces en que podemos tener dudas a la hora de decidir si el dato que tenemos es un texto o un número. Vamos a ver algunos ejemplos:

"Hola" Es evidente que es un texto
"Tengo 37 años" También es un texto
"37" ¿Qué es? ¿Un texto o un número?
37 ¿Y esto?

A simple vista podemos decir que los dos treinta y siete son números, pero sin embargo uno lo tenemos puesto entre comillas (como el resto de textos) y el otro no. Las comillas indican que lo que hay entre ellas es un texto, así que el primer 37 es un texto y el segundo un número. En la mayoría de lenguajes de programación esto está muy claro, y si en una variable sólo podemos guardar textos, un “37” siempre será un texto. Y si en una variable sólo podemos guardar números, un 37 siempre será un número. Y, todavía mejor, en una variable de texto no podremos guardar un 37 y en una variable numérica nunca podremos guardar un “37”. Sin embargo en ActionScript esto no es así. No tenemos variables numéricas y variables de texto, sólo tenemos variables que pueden guardar de todo. Y nosotros deberemos preocuparnos de que quede muy claro con qué tipo de valor estamos trabajando si queremos que el resultado de nuestro programa tenga algún sentido.

La falta de tipos no es una característica específica de ActionScript. Pocos lenguajes de Script tienen comprobación de tipos.

Para diferenciarlas, a las variables les daremos un nombre. Los nombres de variables pueden ser cualesquiera que incluyan letras, números y el carácter de subrayado ( _ ), siempre que comiencen por una letra. En general, para evitarnos complicaciones, es recomendable que las variables sean palabras que indiquen que datos se van a almacenar en ellas. Las empezaremos siempre con minúscula y si la palabra debe ser compuesta, la segunda palabra la empezaremos con mayúscula.

Por ejemplo:

edad Sería una variable numérica donde guardaríamos edades
precio Sería una variable donde guardaríamos precios
nombreCliente Sería una variable de texto donde guardaríamos el nombre del cliente

Aunque no siempre es necesario, es conveniente acostumbrarse a indicar, al principio del programa, que variables vamos a usar. En algunos lenguajes de programación este paso es obligatorio, debiendo indicar, también el tipo de la variable. En ActionScript, sin embargo, no lo es. A pesar de ello, es conveniente que nos acostumbremos a hacerlo. El hecho de tener todos los nombres de las variables que usemos definidas al principio del programa nos facilitará el trabajo, especialmente si el programa es muy largo.

Para indicar que variables usaremos en nuestro programa basta con asignarles un valor (valor inicial) al principio del programa. De esta manera tenemos una lista de variables usadas y nos aseguramos de no olvidarnos de poner un primer valor en la variable. Sin embargo, en Actionscript tenemos una manera para definir nuevas variables que es mediante la sentencia var. Veremos como usarla cuando hablemos de funciones.

Nombres de variables

Nacido el 2 de Noviembre de 1815 en Lincoln, Lincolnshire (Inglaterra), publicó en el año 1854 las leyes del pensamiento sobre las cuales se basan las teorías matemáticas de Lógica y Probabilidad. Boole aproximó la lógica en una nueva dirección, reduciéndola a un álgebra simple, vinculando más lógica y matemáticas. Agudizó la analogía entre los símbolos algebraicos y aquellos que representan formas lógicas. Su álgebra consiste en un método para resolver problemas de lógica que recurre solamente a los valores binarios 1 y 0 y a tres operadores: AND (y), OR (o) y NOT (no). Comenzaba el álgebra de la lógica, llamada Algebra Booleana que ahora encuentra aplicación en la construcción de ordenadores, circuitos eléctricos, programación, etc.

Boole también trabajó en ecuaciones diferenciales, el influyente Tratado en Ecuaciones Diferenciales apareció en 1859, el cálculo de las diferencias finitas, Tratado sobre el Cálculo de las Diferencias Finitas (1860), y métodos generales en probabilidad. Publicó alrededor de 50 escritos y fue uno de los primeros en investigar las propiedades básicas de los números, tales como la propiedad distributiva.

El trabajo de Boole llegó a ser un paso fundamental en la revolución de los ordenadores cuando Claude Shannon, en 1938, demostró como las operaciones booleanas elementales se podían representar mediante circuitos conmutadores eléctricos, y cómo la combinación de estos podía representar operaciones aritméticas y lógicas complejas. Shannon demostró asimismo que el álgebra de Boole se podía utilizar para simplificar circuitos conmutadores.

- La longitud está limitada a 256 caracteres.
- Siempre debe empezar por una letra.
- Sólo puede contener letras, números y el carácter de subrayado.
- No admite espacios, letras acentuadas, eñe, ni ce cedilla ( ç ).
- La longitud está limitada a 256 caracteres.

Así pues serían nombres de variables correctos:

Lksjdflskfsdlknslsdf
ASkjoIWEIjcn2424klj32
r344231233
En_un_lugar_de_la_Mancha

Sin embargo, si tuviésemos que hacer un programa donde alguna de estas variables se usase varias veces, el tenerlas que escribir en cada ocasión alargaría enormemente el tiempo necesario para escribir el programa. Por otra parte también sería correcto tener nombres de variables como:

A1
A2
A3

Pero en este caso resulta casi imposible saber para qué estamos usando cada una de las variables. Y es muy importante no equivocarse a la hora de usarlas, pues si por error mezclamos edades con quilos el resultado que obtengamos no será el que deseamos.
Variables booleanas
Aunque ya se ha comentado no está de más insistir en el tipo de datos booleano, porqué se usará mucho más a menudo de lo que pueda parecer. Una variable booleana sólo puede guardar dos valores: verdadero o falso (true - false). Tal vez pueda parecer que un tipo de datos que sólo tiene dos valores ha de ser poco útil pero no es así. Muy a menudo en nuestros programas nos veremos obligados a hacernos preguntas cuya respuesta será sí o no. Por ejemplo, si al homenajeado le gusta chocolate. Y si la respuesta es sí, guardaremos verdadero en una variable booleana llamada chocolate. O al hacer el cálculo del precio de un producto, podemos tener una variable booleana donde guardar si ese producto está en oferta o no. Y si en oferta tenemos un cierto, calcularemos el precio después de aplicar el descuento correspondiente y sino calcularemos el precio sin descuento.

En posteriores apartados de este mismo material veremos como el tipo de datos booleano es muy usado en programación. Y deberemos acostumbrarnos a operar datos de este tipo.

Asignación, lectura y escritura de datos

Hemos visto que podemos guardar datos en las variables. ¿Cómo se hace eso? Teniendo en cuenta que nuestros programas los haremos con ActionScript, tendremos dos maneras de guardar los datos en las variables. Por una parte, cuando en el programa nos interesa guardar un valor en una variable podemos utilizar la asignación.

En general la asignación será:

<variable> = <valor>

Donde <variable> será un nombre que defina a esa variable de manera única (sin posibilidad de confusión con otra). Y <valor> será un valor cualquiera.

Esta expresión se leería de la siguiente manera:

<variable> toma por valor <valor>
o
Asignamos el valor <valor> a la variable <variable>
o
Guardamos el valor <valor> en la variable <variable>

Hay que tener presente que en este caso el signo = no representa una igualdad, por eso decimos: toma por valor, que de alguna manera pretende expresar que el valor se guarda en la variable.

Con esta información ya podemos guardar algunos datos en nuestras variables:
		edad = 37
		precio = 125.37
		nombreCliente = "César Muñoz Marín"
Por otra parte podremos permitir que el usuario (aquella persona que utiliza nuestro programa) introduzca directamente los datos en las variables. Cuando hagamos eso diremos que leemos los datos del teclado (el usuario usará el teclado para escribir) y en nuestros algoritmos escribiremos leer.

Así, cuando queramos obtener un dato del usuario escribiremos:

leer(variable)

Y la variable será cualquiera, una usada anteriormente o una que usemos por primera vez.

También nos interesará que el usuario vea en pantalla el resultado de ejecutar el programa. Para hacer esto en nuestros algoritmos utilizaremos la instrucción escribir:

escribir(<expresión>)

Donde <expresión> será un valor o una variable.

De esta manera el resultado de una operación podrá presentarse en la pantalla para que el usuario pueda verlo. En el ejemplo que viene a continuación el programa sería:
		{
			valor = 0;
			resultado = 0;
			leer(valor);
			resultado = valor * 2;
			escribir(resultado);
		}

Ver y probar ejemplo 1

Operadores y operaciones

Ahora que hemos visto como guardar datos en las variables, vamos a ver cómo operar con esos datos. Empezaremos con las operaciones matemáticas básicas:
Operaciones matemáticas
Suma <valor> + <valor>
Resta <valor> - <valor>
Multiplicación <valor> * <valor>
División <valor> / <valor>
Módulo (resto de la división) <valor> % <valor>

La operación %
El módulo (o resto de la división) es una operación que dados dos números nos dice cual es el resto de la división entera entre ambos operandos.

Así, la operación

c = 4 % 2

Almacenará el valor 0 (el resto de dividir 4 entre 2 es 0) en la variable c.

Y la operación

c = 15 % 6

Almacenará el valor 3 en la variable c (15 dividido por 6 es 2 y el resto 3).

Así podríamos tener:
	   4 + 2
	   4 – 2
	   4 * 2
	   4 / 2
	   4 % 2
Y si usamos variables nos podríamos quedar con:

a = 4 // La variable a toma por valor 4.
b = 2 // La variable b toma por valor 2.
c = a + b // La variable c toma por valor el resultado de sumar el
// contenido de la variable a al contenido de la variable b.

Después de realizar la última asignación en la variable c tendremos almacenado el valor 6.

Y si ahora hacemos:

c = a * b

En la variable c tendremos almacenado el valor 8.

Autoincremento y autodecremento
Hay dos operaciones que son un poco especiales. Son el autoincremento y autodecremento. Vamos a verlas:

Autoincremento

Se representa de la siguiente manera:

<variable>++

Por ejemplo:

i++

¿Qué significa? De hecho i++ equivale a escribir i = i + 1. Si miramos esta expresión con una "mirada matemática" puede parecer una expresión imposible

( i es igual i + 1 o que sería similar: 5 es igual a 5 + 1 => 5 es igual a 6).

Sin embargo no debemos olvidar que el símbolo = en este caso no representa igualdad sino asignación y que, en realidad, esta expresión deberíamos leerla como guardamos en i el valor resultante de sumar 1 al valor actual de i (o i toma por valor i + 1).

Así, si antes de la operación i++ la variable i valía 5, después de esta operación su valor será 6.
    {
    i = 33;
    i++;
    escribir (i);
}
¿Qué se escribiría en pantalla después de ejecutar este algoritmo? La respuesta es sencilla, 34.

Autodecremento

Es una operación similar a la de autoincremento pero con la diferencia de que en vez de sumar restamos. Se representaría de la siguiente manera:

<variable>--

Por ejemplo:

i--

Así pues, si el valor de i antes de ejecutar esta operación era 7, después de ejecutarla será 6.
Operaciones con cadenas
ActionScript nos permite hacer algunas operaciones con textos (cadenas de caracteres). Nosotros aquí sólo vamos a ver una de ellas:

Concatenación

<cadena> + <cadena>

El resultado es una cadena de caracteres que contiene las dos que hemos concatenado. Ejemplo:

c = "hola" + "adiós"

Después de realizar esta operación en la variable c se habrá almacenado el valor "holaadiós" (sin espacio, puesto que ninguno de los dos valores lo tenía).

Comparaciones

En el caso de la receta del pastel teníamos varias comparaciones. De alguna manera deberíamos comprobar si al homenajeado le gusta el chocolate o no. En un programa la secuencia sería aproximadamente esta:

Preguntamos al homenajeado si le gusta o no el chocolate y guardamos su respuesta en una variable.

Si el valor guardado en esa variable es No (comparamos el valor de la variable con la cadena “No”) haremos el pastel de frutas.

Otro caso guardaría relación con el número de comensales. Supongamos que podemos hacer el pastel para 6 o para 10 personas. Primero preguntaremos cuantos comensales habrá y guardaremos la respuesta en una variable. Después miraremos si el valor de esa variable es mayor que 6 y entonces tendremos que usar los ingredientes necesarios para hacer el pastel de 10 personas.

En muchas ocasiones nos interesa comparar dos valores. Sea para saber cuál de los dos es el mayor, como para saber si son iguales o no, las operaciones de comparación son de las más utilizadas en los programas informáticos. Las operaciones de comparación que podemos usar son:

Igualdad	<valor> == <valor>
Mayor que	<valor> < <valor>
Menor que	<valor> > <valor>
Diferente	<valor> != <valor>
Mayor o igual que	<valor> <= <valor>
Menor o igual que	<valor> >= <valor>				
La comparación de igualdad se indica con dos signos = seguidos ( == ). De esta manera se diferencia de la asignación. Hay que tener siempre presente esta diferencia para evitar errores indeseados.

Es muy importante no confundir la asignación, que implica guardar en, con la igualdad, que implica comparación.

La comparación como operación
Puede resultar difícil de entender que el resultado de una comparación se guarde en una variable. Pero deberíamos ver la comparación como una operación entre dos valores que da como resultado un valor booleano: cierto o falso. Si partimos de la comparación como operación podemos decir que si tenemos la expresión:

c = 5 == 4

Como el resultado de operar con la igualdad 5 con 4 es falso, el valor que se almacenará en la variable booleana c es falso.

O visto de otra manera:

Es falso que 5 == 4, por tanto si pongo c = 5 == 4 el valor que se almacenará en c es falso.

En cambio en la expresión:

c = 5 > 4

El valor que se almacenará en la variable c será cierto pues 5 es mayor que 4.

El resultado de hacer una comparación siempre será un valor booleano.

Prioridad de las operaciones

Cuando tenemos que realizar varias operaciones (en una misma línea) hemos de tener presente en qué orden se realizarán esas operaciones, porque dependiendo del orden, el resultado final será diferente. Veamos un ejemplo:

c = 4 + 4 / 4

En este caso si primero hacemos la suma (4 + 4 --> 8) y después la división (8 / 4 --> 2) el valor que se almacenará en la variable c será 2.

Sin embargo, si primero hacemos la división (4 / 4 --> 1) y después la suma (4 + 1 --> 5) el valor que se almacenará en la variable c será 5.

¿Cuál de los dos resultados es el correcto?

Si hubiésemos usado paréntesis la cosa estaría muy clara:

Si tenemos la expresión c = ( 4 + 4 ) / 4
El valor que se guardará en la variable c será 2
Sin embargo si tenemos la expresión c = 4 + ( 4 / 4 )
El valor que se guardará en la variable c será 5

Pero si no hemos usado paréntesis necesitamos saber en que orden realiza las operaciones el ordenador para poder saber cual será el resultado de la operación. Ese orden es el mismo que utilizan las calculadoras científicas.

La siguiente lista muestra los operadores de más a menos prioridad:

* / % (mayor prioridad)
+ - (menor prioridad)

La multiplicación, la división y el resto tienen la misma prioridad y la suma y la resta también. En caso de que se encuentren dos operadores de la misma prioridad en una misma expresión se evalúan de izquierda a derecha (primero se calcula la operación que hay más a la izquierda en la expresión).

Así, si tenemos

c = 4 * 4 / 2;

Primero se calculará 4 * 4 y después se dividirá el resultado por 2.

Los operadores de comparación se evalúan en último lugar. En caso de que hayan dos operadores de la misma prioridad juntos, se evaluará primero el que esté más a la izquierda en la expresión.

Si tenemos en cuenta este orden resulta fácil saber que el valor que se almacenará en la variable c de la expresión c = 4 + 4 / 4, será 5.


Tornar a l'index | Tornar a l'inici del Web