Ya hemos visto anteriormente qué era la programación. Veamos las distintas fases que dan lugar a un programa:
- cuál es nuestro problema
- elaboración de un algoritmo
- diseñar un programa
- seleccionar lenguaje de programación
- dónde vamos a hacer que funcione
- qué vamos a programar
- correcciones (depuración)
Definir el problema
El objetivo que hay detrás de un programa de ordenador o de una placa electrónica como arduino utilizar la gran rapidez y poder de cálculo de estos equipos para que nos hagan la vida más fácil.
Ya vimos en una entrada anterior lo sencillo que es sumar 1 millón de números mediante un programa. No entro en que sea esto más o menos útil. Sí que hemos visto la utilidad de los programas para controlar el funcionamiento de un ventilador en verano o incluso gestionar un sistema de depósitos de agua.
Analicemos un problema típico de robótica educativa: evitar que nuestro robot choque con obstáculos. Este va a ser nuestro problema.
Tenemos nuestro robot, dotado de un sensor de obstáculos, ruedas y baterías. Además, necesitamos un controlador que vamos a programar.
Construir un algoritmo
Hay que pensar cómo resolver el problema. El sensor de distancia proporciona continuamente la distancia que el robot ve a cualquier objeto al que se acerque. Hacemos que el robot avance continuamente. Cuando se acerca demasiado a una pared, hay que pararlo antes de que choque. Un diagrama de flujo para representar el problema resuelto sería:
Pero esta resolución no resulta muy satisfactoria. Se para, pero ahí se acaba todo. Evita chocarse pero no sigue explorando.
Demos un paso más. Después de parar, pedimos al robot que se mueva hacia atrás y a la vez gire hacia la izquierda durante un tiempo determinado (500 milisegundos, por ejemplo). Cuando pasa ese tiempo, le dejamos que continúe chequeando la distancia:
Esto resulta mucho más satisfactorio porque convierte a nuestro robot en un «organismo» que se mueve de forma autónoma. Con un solo sensor hemos construido un robot capaz de responder a su entorno.
Cómo se programa
Programar se convierte en la traducción del algoritmo a instrucciones que entienda nuestro robot. Las instrucciones se deben almacenar en nuestro ordenador o bien, en una placa electrónica, como arduino. Es preciso decidir qué lenguaje utilizar. En el caso de las placas de arduino, el más común es lenguaje C adaptado a la placa. Se puede escribir en lo que se llama entorno de desarrollo integrado (IDE), que tiene este aspecto:
En los primeros estadios de aprendizaje de la programación es conveniente utilizar métodos más visuales que eviten la escritura de un código que a primera vista es bastante árido. Así, el programa que corresponde al segundo algoritmo sería similar a este:
Donde hay que tener en cuenta que atras_izquierda y adelante son funciones que hacen que las ruedas se muevan en consecuencia.
En general, los programas no suelen funcionar a la perfección la primera vez que los probamos. ‘A la perfección‘ quiere decir que se comporten exactamente como nosotros queremos. Casi siempre es necesario un proceso de corrección y depuración (debugging, en inglés) para llegar al programa definitivo.
La depuración de programas en placas compatibles con arduino es un poco especial. Hablaremos de ello en una futura entrada.
(Fotografía de portada: JuralMin, pixabay)