Programación básica

Introducción

En este artículo vamos a mostrar algunos de los aspectos básicos de lo que es la «programación». Este artículo no es un tutorial, solo pretende ser una guía de por dónde empezar.

¿Qué es un programa?

Un programa puede ser algo tan básico como una receta de cocina. Consiste en una serie de pasos a seguir para conseguir el plato. Si está bien hecha y bien redactada, en principio cualquier persona que la siguiera o ejecutara conseguiría su plato cocinado.

Veamos un ejemplo de una receta para freír un huevo:

Poner a calentar aceite en una sartén.
Cuando esté caliente, echar el huevo.
Dejar freir unos minutos hasta que la clara esté cuajada.
Servir
Sazonar

En este simple ejemplo vemos algunos de los conceptos que son importantes en la programación.

  • Las instrucciones tienen un orden. La instrucción que hay que ejecutar primero es la 1, seguida de la 2, y así hasta la 5. No se puede alterar el orden, es decir, no se puede servir (instrucción 4) sin haber puesto antes aceite en sartén (instrucción 1). Esta forma ordenada de acometer las instrucciones se denomina secuencial. Significa que el cocinero no ejecutará la instrucción 3 antes de haber ejecutado la 2 y así sucesivamente.
  • Las instrucciones deben ser precisas y evitar ambigüedades. Un cocinero experimentado sabe lo que es sazonar, pero alguien que se acerque por primera vez a la cocina quizá no sepa que consiste en echar sal.
  • Las instrucciones o programa se escribe en un lenguaje de programación. El lenguaje de programación en este caso es el español y, cualquier cocinero que entienda el español podría realizar la receta. Si el cocinero no entendiera el español, no podría interpretar la receta.

Veamos otro ejemplo con el programa de una lavadora.

Girar el tambor a derechas a 60 rpm durante 1 minuto
Añadir agua al tambor durante 3 minutos
Girar el tambor a derechas 200 rpm durante 3 minutos
Girar el tambor a izquierdas 200 rpm durante 3 minutos
Añadir detergente
Girar el tambor a derechas 200 rpm durante 3 minutos
Girar el tambor a izquierdas 200 rpm durante 3 minutos
Aclarar durante 5 minutos
Centrifugar a 800 rpm durante 5 minutos


Las instrucciones de la lavadora están escritas en español, pero un microcontrolador no entiende el español. Por lo tanto, si deseamos implementar este programa en el microcontrolador de la lavadora debemos hacerlo en un lenguaje de programación que éste entienda. A las instrucciones escritas en ese lenguaje de programación podríamos llamarlas código o código fuente. Este es el lenguaje que utiliza la persona que escribe un programa (o receta) para que lo ejecute una máquina.

En realidad, las máquinas tampoco entienden ese código fuente que nosotros escribimos. A partir de ese código, existe una herramienta denominada «compilador» que traduce ese código fuente a un lenguaje que entienda el microcontrolador. De ese proceso no nos vamos a ocupar y diremos que es un proceso que realiza la herramienta o compilador sin que preocuparnos.

Así pues, lo que hemos escrito como las instrucciones de ejecución (programa) para la lavadora no lo entiende directamente la máquina, pero podría servirnos de ayuda a la hora de escribir el código fuente en un lenguaje apropiado. A ese lenguaje escrito que los humanos entendemos le llamamos seudocódigo y sería un primer paso a la hora de programar.

Ejemplo de programa: encendido y apagado de un led

Vamos a hacer un programa para que un dispositivo electrónico haga una serie de acciones que nosotros deseamos. Estas acciones se plasman en un seudocódigo.

seudocódigo

Algoritmo: Parpadeo de un led
Encender un led
Mantenerlo encendido durante un segundo.
Apagarlo.
Mantenerlo apagado durante un segundo.

código fuente

digitalWrite(13, HIGH);
delay(1000);
digitalWrite(13, LOW);
delay(1000);

El código fuente indicado no es completo, sólo es para ilustrar la traducción del seudocódigo a un lenguaje de programación.

Una vez escrito el código fuente se compila (traduce) a un lenguaje máquina que entienda el microcontrolador. Como curiosidad, puedes ver un fragmento del código fuente del sistema operativo línux aquí.

A continuación se muestra un fragmento del resultado de la compilación del código fuente indicado arriba:

código máquina

Aspecto del lenguaje máquina generado tras la compilación del código fuente.

A la vista del aspecto del código máquina, si deseamos hacer cambios en el programa es prácticamente imposible hacerlo directamente en este tipo de código. Debemos hacer los cambios en el código fuente y volver a obtener un nuevo código máquina a través de la compilación.

El resultado tras cargar el programa en un microcontrolador:

Fuente: JGil

Software abierto y Software cerrado

Un software abierto es aquel del que conocemos el código fuente. Por tanto, sabemos lo que hace, cómo lo hace y podemos modificarlo y adaptarlo. Un ejemplo de software abierto es el sistema operativo Línux.

Un software cerrado es un tipo de software del que solo disponemos el fichero ejecutable (código máquina, para entendernos). El suministrador nos ofrece el software para ejecutarlo tal cual, pero no conocemos lo que hace ni cómo lo hace. Además, como clientes o usuarios, al no disponer del código fuente, no es posible modificarlo ni adaptarlo. Un ejemplo de software cerrado es el sistema operativo Windows. El fabricante del software (Microsoft) únicamente distribuye el código ejecutable. El código fuente, queda cerrado y sólo es conocido por personal de la empresa. Por tanto, todos los cambios o modificaciones solo es posible hacerlos por la propia empresa propietaria (Microsoft).

Algoritmos

Un algoritmo es una secuencia ordenada de instrucciones, pasos o procesos que llevan a la solución de un determinado problema. Los hay tan sencillos y cotidianos como seguir la receta del médico, abrir una puerta, lavarse las manos, etc; hasta los que conducen a la solución de problemas muy complejos.

En el caso de la programación, un algoritmo puede plasmarse en un seudocódigo como el que hemos visto.

Diagramas de flujo

Son representaciones gráficas de los algoritmos. A veces, los algoritmos son muy sencillos como en los ejemplos que hemos visto, pero normalmente los programas suelen ser mucho más complejos, por lo que un diagrama de flujo que acompañe a un seudocódigo ayuda a la comprensión y programación.

La representación gráfica del procedimiento (algoritmo) de freír un huevo podríamos dibujarla de la siguiente manera:

Diagrama de flujo correspondiente al algoritmo «Freir un huevo». Diagrama hecho con Dia

Tipos de lenguajes de programación

Un lenguaje de programación es una forma de expresar un algoritmo en unas instrucciones concretas que sea capaz de entender el «compilador». Podríamos decir que es como el idioma en el que se escribe el algoritmo. Si hablamos de comunicación humana podemos escribir un mismo mensaje en varios idiomas distintos: español, francés, inglés, etc. Para que haya comunicación el único requisito es que tanto el emisor como el receptor hablen el mismo idioma.

Con los lenguajes de programación pasa algo parecido. Un mismo procedimiento o algoritmo (por ejemplo, calcular el área de un triángulo) puede ser codificado en diferentes lenguajes de programación, pero el resultado de la ejecución debe ser el mismo.

Lenguajes de programación hay muchos, pero vamos a centrarnos en dos de ellos: Scratch y Python. En programación es costumbre escribir el programa más sencillo posible y se suele denominar «Hola Mundo». Es una forma sencilla de mostrar el aspecto del programa y de comprobar que todo funciona correctamente.

Vamos a ver cómo se codificaría en ambos lenguajes de programación el siguiente algoritmo escrito en seudocódigo:

Inicio
Mostrar por pantalla el siguiente mensaje: "Hola Mundo" durante 2 segundos.

Programación por bloques: Scratch

Veamos cómo podemos codificarlo en el lenguaje Scratch:

Codificación del «Hola Mundo» en Scratch.

Para que empezar la ejecución del programa hay que hacer click en la banderita verde. El resultado se muestra en la ventana de ejecución:

https://scratch.mit.edu/projects/370248227

Otros programas por bloques:

Programación por texto: python

Python es otro lenguaje que nos permite codificar el mismo algoritmo pero de una forma diferente. La codificación es muy sencilla:

print("Hola Mundo")

Para ver el resultado del programa hay varias herramientas. En esta ocasión vamos a utilizar https://trinket.io/

Estos dos ejemplos nos sirven para ilustrar los dos grandes grupos de lenguajes de programación:

  • Por bloques. Por ejemplo, Scratch, AppInventor, etc.
  • Por texto. Por ejemplo, Python, Processing, C++, etc.

Normalmente, los lenguajes de programación por bloques están pensados para una iniciación a la programación sin preocuparse demasiado por la sintaxis. Es tan sencillo como arrastrar bloques y encajar.

Por el contrario, los lenguajes de programación de tipo texto son algo menos intuitivo al principio, pero son más profesionales, versátiles y potentes.

Otros programas tipo texto:

  • Processing Programación orientada a las artes visuales.
  • Arduino Es un completo ecosistema de hardware libre y entorno de programación basado en Processing. Nos permite interactuar con el mundo físico y es el que solemos utilizar para programar robots.
  • Sonic PI permite crear música con líneas de código de programación.
  • OpenSCAD Diseño asistido por ordenador generado por líneas de código. Ejemplos y cómo empezar con OpenSCAD.

otros lenguajes de programación

En la siguiente página, puedes ver cómo se codifica el programa «Hola Mundo» en diferentes lenguajes de programación.