Sentencia de asignación

Las sentencias de asignación sirven para calcular expresiones y asignárselas a un dato.

<Referencia a un dato> = <expresión> ;

Se debe indicar el dato en el cual se va a guardar el resultado de la expresión, seguido del símbolo = (símbolo de la asignación) y la expresión numérica o lógica a evaluar cuando se ejecute la sentencia. Tras esta sentencia se debe poner siempre el símbolo ;(punto y coma).

En una sentencia de asignación sólo está permitido asignar valores a objetos tales como variables (de cualquier tipo), a una posición de una tabla, o a un elemento de una estructura.

No es posible asignar un valor a una constante, a una función o a un proceso, o, en general, a cualquier expresión numérica o lógica.

Se muestra a continuación un programa con varias asignaciones.

Ejemplo:
PROGRAM mi_juego;
BEGIN
    x=x+1;
    angle=(angle*3)/2-pi/2;
    size=(x+y)/2;
    z=abs(x-y)*3-pow(x, 2);
    // ...
END


Ésta es la forma básica de las asignaciones, si bien existen otros símbolos de asignación que, en lugar de asignar un nuevo valor al dato referido, modifican su valor. Éstos son los símbolos de asignaciones operativas:

+= Suma al dato el resultado de la expresión
        x=2; x+=2; -> (x==4)

-= Resta al dato el resultado de la expresión
        x=4; x-=2; -> (x==2)

*= Multiplica el dato por el resultado de la expresión
        x=2; x*=3; -> (x==6)

/= Divide el dato por el resultado de la expresión
        x=8; x/=2; -> (x==4)

%= Pone en el dato el resto de dividir al mismo entre el resultado de la expresión
        x=3; x%=2; -> (x==1)

&= Realiza un AND (binario y/o lógico) entre el dato y el resultado de la expresión y lo asigna como nuevo valor del dato
        x=5; x&=6; -> (x==4)

|= Realiza un OR (binario y/o lógico) entre el dato y el resultado de la expresión y lo asigna como nuevo valor del dato
        x=5; x|=6; -> (x==7)

^= Realiza un OR exclusivo (XOR binario y/o lógico) entre el dato y el resultado de la expresión y lo asigna como nuevo valor del dato
        x=5; x^=3; -> (x==3)

>>= Rota a la derecha el dato tantas veces como indique el resultado de la expresión (cada rotación a la derecha equivale a dividir entre 2 el dato)
        x=8; x>>=2; -> (x==2)

<<= Rota a la izquierda el dato tantas veces como indique el resultado de la expresión (cada rotación a la izquierda equivale a multiplicar por 2 el dato)
        x=2; x<<=2; -> (x==8)

También se admiten dentro de la categoría de sentencias de asignación los incrementos y decrementos de un dato. Por ejemplo, si quisieramos sumarle 1 a la variable local x podríamos hacerlo con la sentencia x=x+1;, con la sentencia x+=1; o bien con el operador de incremento: x++; o ++x;.

Es decir, se aceptan como sentencias de asignación incrementos ( ++ ) o decrementos ( -- ) de un dato.


Ver: Sintaxis