Sentencia GOTO: definición, uso y debate en programación

Sentencia GOTO: definición, uso y debate en programación — historia, ejemplos, ventajas y riesgos; ¿cuándo evitarla o usarla en código moderno?

Autor: Leandro Alegsa

goto es una sentencia en muchos lenguajes de programación. Es una combinación de las palabras inglesas go y to. Es una forma de saltar a otra línea de código.

Muchos lenguajes admiten la sentencia goto, y otros no. En Java, goto es una palabra reservada, pero no se puede utilizar. (Una palabra reservada es una palabra que forma parte del lenguaje de programación y no puede utilizarse para otras cosas, como nombrar variables).

En informática, existe una teoría llamada teorema del programa estructurado. Esta teoría dice que cualquier programa puede ser escrito de tal manera que las cosas se hacen con funciones y métodos (subprogramas más pequeños) en lugar de en un programa muy grande y declaraciones goto. La teoría demuestra que la sentencia goto no es necesaria para escribir programas.

¿Qué hace exactamente goto?

La sentencia goto transfiere el control de ejecución a otra parte del programa marcada por una etiqueta. Es decir, en lugar de seguir la secuencia lineal de instrucciones, el programa "salta" a la etiqueta indicada y continúa desde allí.

Sintaxis y ejemplos comunes

La sintaxis varía según el lenguaje, pero en lenguajes como C suele verse así:

inicio:     /* código */     if (condición) goto inicio; 

En ensamblador el uso de saltos (jumps) es equivalente a goto a nivel bajo. En cambio, muchos lenguajes de alto nivel no incluyen goto o lo limitan mucho.

Lenguajes que lo permiten y excepciones

  • Lenguajes clásicos como C, C++ y muchos dialectos de BASIC permiten goto.
  • Algunos lenguajes modernos lo evitan o lo desaconsejan (por ejemplo, Java reserva la palabra pero no la implementa: goto).
  • En lenguajes funcionales o en entornos donde se promueven estructuras inmutables y expresiones, goto suele estar ausente.

Debate y críticas

El uso de goto ha generado un debate histórico en programación:

  • Lecturabilidad: Saltos arbitrarios dificultan entender el flujo del programa, lo que complica mantenimiento y revisión de código.
  • Errores y robustez: Los saltos pueden provocar omisión de inicializaciones, fugas de recursos o acciones repetidas inadvertidamente.
  • Estructuración: El teorema del programa estructurado argumenta que las estructuras de control (secuencias, decisiones, bucles) y las funciones / métodos son suficientes para programar cualquier algoritmo, haciendo innecesarios los goto.

Alternativas comunes a goto

  • Bucles (for, while, do-while) para iteración.
  • Condicionales (if/else, switch) para decisiones.
  • Retorno temprano (return) para salir de funciones.
  • Manejo de excepciones para controlar errores sin romper el flujo normal con saltos.
  • Funciones y métodos para dividir lógica en unidades legibles y reutilizables.

Casos donde su uso puede ser aceptable

Aunque suele desaconsejarse, hay situaciones prácticas en las que el uso de goto se considera legítimo:

  • Gestión de errores y limpieza en C: En funciones con múltiples puntos de fallo, un único bloque de limpieza etiquetado permite liberar recursos de forma ordenada y evita duplicar código.
  • Optimizaciones de bajo nivel: En código crítico por rendimiento o en programación de sistemas/compiladores, saltos explícitos pueden generar código más eficiente.
  • Maquinas de estados y ensamblador: Donde los saltos son naturales y necesarios para representar transiciones.

Buenas prácticas si decides usar goto

  • Usar goto únicamente cuando mejora la claridad o reduce la duplicación claramente (por ejemplo, para cleanup en C).
  • Limitar su alcance: utilizar etiquetas locales y bien nombradas.
  • Documentar la razón del salto con un comentario claro.
  • Preferir estructuras de control y funciones cuando sea posible.

Resumen

La sentencia goto es una herramienta simple y potente para transferir el control dentro de un programa, pero su poder puede llevar a código difícil de mantener. El teorema del programa estructurado demuestra que no es necesaria para escribir programas correctos y legibles; por eso muchos desarrolladores y lenguajes la evitan. Aun así, en contextos específicos —como la programación de sistemas, optimización de rendimiento o manejo de errores en C— su uso puede ser razonable si se aplica con criterio y se documenta adecuadamente.

Utilice

Una sentencia goto se utiliza normalmente con una etiqueta. Una etiqueta es una palabra que identifica un lugar en un trozo de código. Una sentencia goto en el código suele tener este aspecto:

ir a LABEL

En este ejemplo, el ordenador saltaría a la ubicación de LABEL.

Muchas veces la sentencia goto se combina con la sentencia if. En este caso, el ordenador sólo saltará a otro lugar del código si algo es cierto. Por ejemplo:

IF condition THEN goto LABEL

Esto puede leerse como "si alguna condición es verdadera, entonces ve a la ubicación de LABEL".

Los distintos lenguajes de programación tienen diferentes restricciones o límites en el uso de las sentencias goto. Por ejemplo, el lenguaje de programación C no permite que un goto salte a una ubicación dentro de otra función (subprograma).

Preguntas y respuestas

P: ¿Qué es una sentencia goto?


R: Una sentencia goto es una forma de saltar a otra línea de código en muchos lenguajes de programación.

P: ¿Cuántos lenguajes de programación soportan la sentencia goto?


R: Muchos lenguajes de programación soportan la sentencia goto.

P: ¿En qué lenguaje de programación goto es una palabra reservada?


R: En Java, goto es una palabra reservada, pero no se puede utilizar.

P: ¿Qué es una palabra reservada en un lenguaje de programación?


R: Una palabra reservada es una palabra que forma parte del lenguaje de programación y no se puede utilizar para otras cosas como nombrar variables.

P: ¿Qué es el teorema del programa estructurado en informática?


R: El teorema del programa estructurado es una teoría en Informática que dice que cualquier programa puede escribirse de tal manera que las cosas se hagan con funciones y métodos en lugar de en un programa muy grande y sentencias goto.

P: ¿Prueba el teorema del programa estructurado que las sentencias goto son necesarias para escribir programas?


R: No, el teorema del programa estructurado demuestra que la sentencia goto no es necesaria para escribir programas.

P: ¿Qué son las funciones y los métodos en programación?


R: Las funciones y los métodos son subprogramas más pequeños utilizados en programación para realizar tareas específicas.


Buscar dentro de la enciclopedia
AlegsaOnline.com - 2020 / 2025 - License CC3