Buscar en Google

viernes, 1 de abril de 2011

Sintaxis de operaciones


Sintaxis de operaciones


Entremos ahora más en el mundo del lenguaje C. Hasta éste momento, los programas que fuimos viendo, estuvieron hechos de una manera si se quiere primitiva. Explícitamente les colocaba muchos pasos para realizar las diferentes tareas. Todo esto buscando que los programas que les iba presentando queden lo más claro posible.

Ahora, vamos a ver instrucciones que son del lenguaje C, que nos permiten ahorrar líneas de código, y que tienen su correlato con instrucciones soportadas dentro del microcontrolador. Aunque la mayoría de los compiladores tienen muy buenos algoritmos de optimización. Si utilizamos las operaciones con la sintaxis del C de manera más eficiente, ayudamos al compilador a tomar la decisión por el resultado más optimizado.

Recordemos el programita que les había presentado que implementaba un contador sencillo. El programa era el siguiente:

                        char A;
char B;

Paso 1 :           A=1;

Paso 2:            B = A + 1;
Paso 3:            A = B;

Paso 4:            Volver a ejecutar el paso 2.

Operadores de asignación


Veamos, que en nuestro programa ejemplo, había utilizado dos variables A y B. Donde B la utilizaba como variable temporal que tomaba el valor de la variable A y le sumaba el valor 1. Para luego asignarle el valor de la variable B nuevamente a la variable A.

El mismo programita lo podría haber reescrito de una manera diferente. Con menos código, pero que sea exactamente el mismo resultado.

char A;

Paso 1:             A=1;

Paso 2:            A = A + 1;

Paso 3:            Volver al paso 2

Como vemos, en éste último programa que les acabo de pasar, ya no utilizo más la variable B. Directamente le digo al compilador que tome el valor de la variable A, que le sume uno al valor de la variable A y que el resultado lo almacene dentro de la misma variable A.  Además de ahorrarnos una línea en el código que escribimos, nos ahorramos algo más valioso: Una posición de memoria RAM que se ocupaba para la variable B. Cuando hablamos de microcontroladores, una variable más o una variable menos es algo importante. Recordemos que en los PICs hay modelos que sólo tienen 20 bytes de RAM. Por lo tanto, la cantidad de variables que ocupemos tienen su implicancia.

Ahora, podemos volver a reescribir el código del programita, ahorrando un poco más todavía.



char A;

Paso 1:    A =1;
Paso 2: A+=1;

Paso 3: Volver al paso 2

Acá, en la línea 2, lo que acabo de hacer, es simplemente un ahorro cosmético si se quiere. Es exactamente lo mismo poner la línea:

A = A + 1;

Como también poner la línea

A += 1;

Cuando se antepone el signo del operador + al signo igual, significa para el compilador que tome el valor que está a la derecha del signo igual, y lo acumule en la variable A.

También por ejemplo podemos hacer lo siguiente:

A += 2;

El funcionamiento de ésta instrucción, es decirle al compilador que sume 2 al valor de la variable A y que el resultado se guarde nuevamente en la variable A. Es como poner la línea A=A+2.

De la misma manera, se pueden utilizar los otros operadores, -, *, /, &, etcétera.

Entonces tenemos las siguientes posibilidades:

Operación
Equivalente
A += B
A = A + B
A -= B
A = A - B
A *= B
A = A * B
A /= B
A = A / B
A &= B
A = A & B
A |= B
A = A | B
A ^= B
A = A ^ B
A << = B
A = A << B
A >>= B
A = A >> B
A &&= B
A = A && B
A ||= B
A = A || B

Si bien la diferencia es mínima. Es muy común que los programas escritos en C tomen la operación con la forma descripta en la columna de la izquierda de la tabla. Ambas formas de escribir las operaciones funcionan correctamente en C. Según el tipo de compilador que estén usando serán compiladas iguales o nó. Para ello, deben probar ambas operaciones escritas de diferentes maneras y observar el código resultante en assembler para ver las diferencias. A modo práctico, normalmente se usa la forma de la columna de la izquierda ya que expresando de ésa manera las operaciones, posiblemente el compilador tomará la opción de menor cantidad de código.  La forma de escribir los operadores de la manera que están en la columna de la izquierda es lo que se conoce como operadores de asignación.

No hay comentarios:

Publicar un comentario