La asignación

Una variable se llama así porque se puede cambiar su valor, de la misma forma que se puede cambiar el valor de una memoria en una calculadora. Por ejemplo:

    double x= 2*radio;
    println(x);
    x= radio*radio;
    println(x);
Cuando el valor de radio es 4.0, este programa despliega:

    8.0
    16.0
En el programa se usa una sola variable x. La variable toma dos valores distintos durante la ejecución del programa (primero 8. y luego 16.).

Sintaxis de la asignación:

``variable'' = ``expresión'';

Se diferencia de una declaración en que ``variable'' ha sido declarada previamente y en que no se indica nuevamente su tipo.

Semántica:

Primero se evalúa la ``expresión'', y luego, su resultado se asigna a ``variable'', es decir se almacena en la variable.

Obs.: no se puede declarar dos veces la misma variable:

    double x= 2*radio;
    double x= radio*radio; // ¡error!

Declaración sin inicialización

Al declarar una variable no es necesario darle un valor inicial. El programa anterior se puede reescribir como:

    double x;
    x= 2*radio;
    println(x);
    ...
Obs.: en general no se puede usar una variable a la cual no se le ha dado todavía un valor.

Ejercicio: calcular el máximo entre a y b y dejarlo en max, sin usar la función max(..)

    // Las variables a y b han sido declaradas previamente
    int max;
    if (a>b) {
      max= a;
    }
    else {
      max= b;
    }
    println(max);
Al desplegar max, es seguro que tiene algún valor.

Obs.: el siguiente programa es inválido porque se declara dos veces la variable max:

    if (a>b) {
      int max= a;
    }
    else {
      int max= b;
    }
    println(max);

Ejercicio: El programa confuso (en clases).

Indique qué despliega el siguiente programa:

    int a = 4;
    int b = 10;
    int d = 7;

    d = b - 2;              println(d);
    a = d - (3 + b);        println(a);
    b = 1 + a*2-1;          println(b);
    a = d - b;              println(a);
    d= b - a;               println(d);
    int e = a+(d-b);        println(e);