Atlasingeniería

Algoritmos y programaciónFundamentosTema 2

Variables, tipos y expresiones

Una variable vincula un nombre con un valor y un tipo define operaciones válidas. Entender esa separación evita mezclar representación, significado y mutabilidad.

Una variable no es una caja mágica ni necesariamente una dirección de memoria. Es un nombre que, dentro de cierto contexto, está vinculado a un valor. El tipo dice qué significa ese valor y qué operaciones tienen sentido.

Valores y nombres

Números, booleanos y textos son valores. Una declaración introduce un nombre:

const unitPrice = 1200;
const quantity = 3;
const total = unitPrice * quantity;

La expresión de la derecha se evalúa y su resultado se vincula al nombre de la izquierda. const impide reasignar ese vínculo; no vuelve inmutable todo objeto que pueda haber detrás.

Dos declaraciones. A la izquierda el nombre, a la derecha lo que quedó vinculado a él.

1 / 5
La flecha es lo que const congela, y la caja del otro lado no. Por eso el número no se puede tocar y el objeto sí: no son dos reglas distintas, es la misma regla sobre dos cosas distintas.

Antes de seguir, predecí

Sumás el número 1 y el texto «2» en un lenguaje con conversión implícita. ¿Qué da?

Un tipo son valores y operaciones

Un tipo reúne valores posibles y operaciones permitidas. Sumar números, concatenar texto y comparar booleanos son operaciones distintas aunque algún lenguaje reutilice símbolos.

El chequeo estático detecta incompatibilidades antes de ejecutar; el dinámico las resuelve durante la ejecución. La inferencia permite que un sistema estático deduzca tipos sin escribirlos en cada línea.

Precedencia, y por qué los paréntesis

Una expresión produce un valor. La precedencia decide cómo se agrupan operadores, pero los paréntesis hacen explícita la intención:

promedio=sumacantidad.promedio=\frac{suma}{cantidad}.

También importa el dominio. Dividir por cero, exceder el rango de un entero o mezclar unidades puede producir error aunque la sintaxis sea válida. El tipo ayuda, pero no reemplaza las precondiciones del negocio.

Compuestos: dos nombres, un objeto

Arreglos, registros y objetos agrupan valores. Dos variables pueden referir al mismo objeto; mutarlo a través de una vuelve visible el cambio desde la otra. En cambio, reasignar una variable no cambia la otra referencia.

Esta diferencia explica muchos efectos inesperados. Antes de modificar una estructura hay que saber si es compartida, si debe copiarse y qué parte del programa puede observarla.

Tres expresiones que no dicen lo que parecen

// 1. El orden de evaluación decide el resultado
let index = 0;
const values = [10, 20, 30];
const picked = values[index++] + values[index++]; // 10 + 20 = 30, y index quedó en 2

// 2. La división entera no existe en todos lados
const average = 7 / 2;            // 3.5 en JavaScript, 3 en Python 2 y en C con enteros
const integerPart = Math.trunc(7 / 2); // 3, y dicho explícitamente

// 3. Los decimales no son exactos
const sum = 0.1 + 0.2;            // 0.30000000000000004
const isThird = sum === 0.3;      // false

Las tres tienen el mismo origen: la expresión se lee como matemática y se ejecuta como una secuencia de operaciones sobre representaciones concretas. La primera depende de cuándo se incrementa el índice; la segunda, de qué tipo tienen los operandos; la tercera, de que 0,1 no se puede escribir exacto en base dos.

Lo que se decide al declarar

constletvar
Se puede reasignarno
Alcanceel bloqueel bloquela función entera
Antes de la declaraciónerrorerrorundefined, en silencio
Cuándo usarlasiempre, por defectocuando el valor cambia de verdadnunca
La tercera fila es la que hace de var un problema y no una preferencia: usar una variable antes de declararla no falla, devuelve undefined, y el error aparece mucho más lejos.

La regla práctica es corta: const por defecto, let sólo cuando el valor se reasigna de verdad, y var nunca. No es una convención estética. Un const le dice a quien lee —y al compilador— que ese nombre va a significar lo mismo en toda la función, y eso es una cosa menos que hay que seguir mentalmente al leer.

Lo que preguntan sobre esto

Cierre

Los nombres hacen legible el estado, los tipos delimitan operaciones y las expresiones crean nuevos valores. Separar vínculo, valor y representación permite razonar sobre mutabilidad, errores y contratos sin depender de una metáfora incompleta.

Autoevaluación

¿Lo entendiste?

Declarar algo con const, ¿qué impide exactamente?
¿Qué es un tipo?
Dos variables refieren al mismo objeto y una lo muta. ¿Qué ve la otra?
El tipo dice que la división es entre números. ¿Alcanza para que la expresión sea válida?