3. Repaso de programación

¿Qué es un programa?

En computación, un programa es una secuencia de pasos que el ordenador (o microcontrolador) debe realizar para resolver algún problema o necesidad, la metodología usada para resolver este tipo de problemas recibe el nombre de algoritmo. A menudo, un problema podrá resolverse de diferentes maneras empleando diferentes algoritmos, por eso cuando dos o más personas intentan resolverlo por su propia cuenta, suelen obtener programas diferentes pero con la misma función.

Etapas de la programación

Hay unas etapas bien definidas en lo que se refiere a realizar e implementar un programa, en la figura 1.6 se pueden apreciar.

fig 1.6
fig 1.6 Etapas de la programación

a. Planteamiento del problema o necesidad: el objetivo de escribir un programa es dar solución a algo usando un ordenador o microcontrolador, por ejemplo, si deseamos hacer que un LED encienda y apague consecutivamente ya tenemos nuestro problema planteado.

b. Diseño de la soluciòn: las ideas que se nos ocurran para dar solución a lo que queremos realizar se llaman algoritmos, podemos expresar estos algoritmos con diagramas de flujo o con secuencias de instrucciones llamadas pseudocódigo. Siguiendo con el ejemplo anterior, para lograr nuestro objetivo con el LED un algoritmo general sería el siguiente:

Encender el LED

Mantenerlo así por un espacio de tiempo

Apagar el LED

Mantenerlo apagado otro espacio de tiempo

Repetir de nuevo los pasos

Este es un algoritmo que describe los pasos que se deben seguir para tener un LED «parpadeante», descripciones como estas son llamadas pseudocódigo, pues es una primera aproximación a lo que será el código definitivo del programa. Hasta ahora, el problema no está solucionado, este algoritmo se debe escribir en un lenguaje de programación.

c. Escritura del código fuente (lenguaje de programación):  esta es una etapa muy importante, de aquí depende gran parte del funcionamiento del dispositivo que se programará. A través de un computador, y usando un lenguaje de programación se escribirán formalmente las sentencias que el microcontrolador deberá realizar.

Existen diversos tipos de lenguajes de programación, pero básicamente tenemos los de bajo nivel y los de alto nivel. Un lenguaje de bajo nivel describe las instrucciones casi de la misma forma como las realizará la máquina; un lenguaje de alto nivel es más abstracto y cada instrucción escrita puede traducirse en muchas instrucciones para la máquina sin que podamos percibirlo al programar.

Un ejemplo aplicable a microcontroladores de lenguaje de bajo nivel es ensamblador cuyo código fuente se guarda con extensión *.asm; un ejemplo de lenguaje de alto nivel es C, en este caso su código fuente se guarda con extensión *.c.

Nota: Todo programa debe tener un inicio y un final en su código fuente.

d. Compilación (objeto): en esta etapa, un software se encarga de convertir las instrucciones dadas en el lenguaje de programación al lenguaje propio del dispositivo que se va a programar, para el caso de un microcontrolador, el lenguaje al que se traduce es el hexadecimal, el archivo obtenido también recibe el nombre de objeto y se guarda con extensión *.hex.

fig 1.7
fig 1.7 Proceso de compilación

e. Implementación: si nos refiriéramos a un computador sería el proceso de instalación del programa; para el caso de un microcontrolador lo llamaríamos «quemado» y consiste en transferir el programa desde un PC hacia el micro, para hacer esto posible se necesita de un circuito intermedio llamado circuito programador.

fig 1.8
fig 1.8 Proceso de «quemado» de un microcontrolador

f. Verificación: consiste en comprobar si el dispositivo ha cumplido con los requisitos, si no es así habrá que regresar hacia la etapa de diseño para realizar las correcciones o ajustes.

Nota: Puede incluirse una etapa adicional que es la simulación, aunque omitirla no impide la programación puede resultarnos muy útil en muchos casos.

Estructura de un còdigo fuente

Inicio

Declaración de variables y constantes

Operaciones

fin

Cada programa debe tener un inicio y un fin bien determinados. Las variables y las constantes derivan de los datos y condiciones del problema a resolver, las operaciones se encargan de hacer los procesos y comunicar los resultados.

Cuando se hace un programa, se especifica cómo se hará uso de los memorias disponibles en el microcontrolador, hay una memoria encargada de guardar las instrucciones llamada memoria de programa; otra memoria, llamada memoria de datos, se encargará de .guardar cada resultado que surja a medida que el programa corre. Como las memorias tienen un límite de capacidad, siempre hay que estar atento de no excederlo.

Nuestro estudio empezará con el lenguaje ensamblador porque nos permitirá estudiar mejor al micro y predecir mejor su comportamiento; cuando necesitemos hacer programas muy complejos pasaremos al lenguaje C.