«No encuentro la variable» y «todavía no tiene valor»

Estos errores aparecen cuando el programa usa una variable que todavía no existe o que existe pero aún no guarda nada. Se arreglan dándole un valor antes de usarla, con una asignación o con Leer.

Qué significa

Error al ejecutar en la línea 2
No encuentro la variable 'total'. Revisa cómo la escribiste. Si es nueva, créala antes con 'total <- 0' o con 'Leer total'.

Una variable es una caja con nombre. Para usarla, primero tiene que existir y tener algo adentro. Jaguar te avisa en dos situaciones parecidas:

  • «No encuentro la variable»: el nombre no existe. O nunca la creaste, o la escribiste distinto (total y totall son dos variables diferentes).
  • «Todavía no tiene valor en este punto»: la variable existe, por ejemplo porque la declaraste con Definir, pero hasta esa línea nadie le guardó un dato.

En los dos casos el programa se detiene en la línea donde se usa, porque no sabe qué valor poner ahí.

Ejemplos y cómo arreglarlos

La variable nunca se creó

Algoritmo suma
    suma <- total + 1
    Escribir suma
FinAlgoritmo

Error al ejecutar en la línea 2
No encuentro la variable 'total'. Revisa cómo la escribiste. Si es nueva, créala antes con 'total <- 0' o con 'Leer total'.

Se arregla dándole un valor a total en una línea de arriba:

Algoritmo suma
    total <- 0
    suma <- total + 1
    Escribir suma
FinAlgoritmo

Declarada, pero sin valor

Definir solo reserva la caja y su tipo; no le pone nada adentro:

Algoritmo edad
    Definir n Como Entero
    Escribir n
FinAlgoritmo

Error al ejecutar en la línea 3
La variable 'n' todavía no tiene valor en este punto. Antes de usarla dale un valor, con 'n <- 0' o con 'Leer n'. Esa línea debe estar más arriba que esta.

Pídele el dato a la persona con Leer, o asígnale un valor:

Algoritmo edad
    Definir n Como Entero
    Leer n
    Escribir "Tienes ", n, " años"
FinAlgoritmo

Por qué aparece

  • Escribiste el nombre distinto en dos lugares: una mayúscula no importa, pero una letra de más o de menos sí.
  • Usas la variable antes de la línea donde le das valor.
  • Declaraste la variable con Definir y olvidaste el Leer o la asignación.
  • El valor se asigna dentro de un Si que no siempre se cumple, y luego se usa afuera.

Cómo evitarlo

Da un valor inicial a toda variable en cuanto la creas: total <- 0 para los acumuladores, y un Leer para lo que viene de la persona. Con la prueba de escritorio ves en qué fila aparece cada variable: si una columna sigue vacía cuando la necesitas, ahí está el problema. Hay una guía en la prueba de escritorio.

Preguntas frecuentes

¿Importan las mayúsculas en el nombre de una variable?

No. Jaguar no distingue mayúsculas ni acentos: Total, total y TOTAL son la misma variable. Lo que sí importa es que las letras sean las mismas.

¿Una variable sin valor vale cero?

No. En Jaguar una variable sin valor no vale nada, y por eso usarla es un error. Si necesitas que empiece en cero, asígnalo tú: total <- 0.

¿Este error sale también en PSeInt?

PSeInt avisa de este problema con otro mensaje, pero la causa es la misma: se usa una variable que no tiene valor. El código arreglado de esta página funciona igual en PSeInt.

Sigue aprendiendo