GOTO para niños
GOTO (que significa "ir a" en inglés) es una instrucción especial que se usa en algunos lenguajes de programación. Imagina que estás leyendo un libro y, de repente, una nota te dice: "Ve a la página 50". Eso es lo que hace GOTO en un programa: le dice a la computadora que salte a un punto específico del código y continúe ejecutando las instrucciones desde allí.
El lugar al que salta GOTO se llama "etiqueta". Es como un marcador en el código. Cuando la computadora encuentra un GOTO, deja de hacer lo que estaba haciendo y va directamente a la etiqueta indicada. Es un salto "incondicional", lo que significa que siempre salta, sin importar nada más.
Aunque GOTO fue muy usado al principio de la programación, hoy en día se usa menos en los lenguajes de alto nivel. Esto se debe a que puede hacer que el programa sea difícil de entender y seguir. Es como si en tu libro, en lugar de ir de página en página, tuvieras que saltar constantemente de un lado a otro.
Actualmente, la idea de "saltar" sigue existiendo en la programación, pero de formas más organizadas. Por ejemplo, se usa para salir de un bucle o de una estructura de control de forma ordenada, en lugar de saltar a cualquier parte.
Contenido
¿Por qué GOTO es menos usado ahora?
La historia de GOTO en la programación
Hace muchos años, cuando las computadoras empezaban, GOTO era una de las pocas formas de controlar cómo se ejecutaba un programa. Los programadores usaban GOTO para mover el flujo del programa de un lado a otro. Era como el único camino disponible.
Sin embargo, pronto se dieron cuenta de que usar GOTO sin control podía convertir el código en un verdadero lío. Imagina un plato de espagueti: todos los hilos se cruzan y es difícil seguir uno solo. A esto se le llamó "código espagueti". Era muy difícil de leer, entender y corregir errores.
Por eso, en los años 60, los expertos en programación desarrollaron algo llamado programación estructurada. Esta forma de programar busca organizar el código de manera lógica, usando bloques y estructuras claras, como los bucles (FOR, WHILE) y las condiciones (IF...THEN...ELSE). Estas nuevas formas de control hacen que el programa sea mucho más fácil de seguir y mantener.
Aunque los compiladores (programas que traducen el código a un lenguaje que la computadora entiende) todavía tienen la capacidad de usar GOTO, la mayoría de los programadores prefieren no usarlo, o lo usan solo en situaciones muy específicas y controladas.
Variaciones de GOTO
Existen algunas variaciones de la instrucción GOTO. Por ejemplo, en el lenguaje BASIC, había una instrucción llamada ON GOTO. Esta permitía elegir entre varias etiquetas a las que saltar, dependiendo de un valor. Es un poco como lo que hoy conocemos como la instrucción switch/case, que te permite elegir diferentes caminos según una condición.
GOTO y otras instrucciones de control
GOTO es una instrucción de salto incondicional, lo que significa que siempre salta a un punto específico. Esto puede hacer que sea difícil entender por qué el programa saltó allí. Las estructuras de control modernas, como los bucles y las condiciones, son más claras porque el salto o la acción se basan en reglas lógicas.
GOTO vs. GOSUB
Una instrucción similar a GOTO es GOSUB (que significa "ir a subrutina"). La gran diferencia es que GOSUB no solo salta a un lugar, sino que también "recuerda" de dónde vino. Cuando encuentra la instrucción RETURN, vuelve al punto exacto donde estaba antes de saltar.
Imagina que GOTO es como saltar de un trampolín sin saber dónde vas a caer, mientras que GOSUB es como saltar a una piscina y saber que, al terminar, volverás al borde del trampolín. GOSUB es más organizado porque define un inicio y un final claros para un grupo de instrucciones.
GOTO vs. IF...THEN...ELSE
La instrucción IF...THEN...ELSE es muy diferente de GOTO. Mientras que GOTO salta sin preguntar, IF...THEN...ELSE solo salta o ejecuta ciertas instrucciones si se cumple una condición. Por ejemplo, "SI hace sol, ENTONCES salimos a jugar, SI NO, nos quedamos en casa". Esto hace que el código sea mucho más fácil de entender, porque sabes exactamente cuándo y por qué se tomará una decisión.
Ejemplos de GOTO
Aquí puedes ver cómo se usa GOTO en algunos lenguajes de programación.
Pascal
En Pascal, debes declarar las etiquetas con la palabra `LABEL`:
Program UsoGOTO (input, output);
LABEL
Salto;
BEGIN
Writeln('Como estamos antes del GOTO esto saldrá en pantalla');
GOTO Salto;
Writeln('Esto no saldrá en pantalla');
Salto:
Writeln('Se efectuó una ruptura en el flujo debido a la sentencia GOTO')
END.
Pauscal
En Pauscal, se usa la instrucción IrHacia (GoTo en español) y se declara una etiqueta:
Var i:Entero
Etiqueta:
i = i + 1
IrHacia Etiqueta
C#
En Lenguaje de programación C#, las etiquetas se declaran con dos puntos al final:
static void main()
{
:etiqueta: //La etiqueta
:goto etiqueta; //Ir a la etiqueta
}
Basic
En BASIC, las etiquetas también llevan dos puntos al final:
:PRINT "Prueba de GOTO en QBASIC"
:GOTO prueba
:PRINT "Esto no se ve porque hemos saltado a la etiqueta llamada prueba"
:prueba:
:PRINT "GOTO realizado correctamente!"
En algunas versiones de BASIC, como Just BASIC o Liberty BASIC, se usan corchetes `[` y `]` para las etiquetas:
:PRINT "Prueba de GOTO en QBASIC"
:GOTO [prueba]
:PRINT "Esto no se ve porque hemos saltado a la etiqueta llamada prueba" [prueba]
:PRINT "GOTO realizado correctamente!"
Ensamblador
En ensamblador, que es un lenguaje de muy bajo nivel, se usan instrucciones similares como `jmp`:
# Programa para GNU/Linux.
# Ensamblar con cc jmp.S -o jmp
# Muestra "Comenzando bucle" y seguidamente entra en un bucle
# mostrando "Hola, mundo" a cada iteración
.section .rodata
msg1:
.string "Hola, mundo"
msg2:
.string "Comenzando bucle"
.section .text
.globl main
main:
movl $msg2,(%esp)
call puts
etiqueta:
movl $msg,(%esp)
call puts
jmp etiqueta
Galería de imágenes
Véase también
En inglés: Goto Facts for Kids
- Estructuras de control
- Bucle
- Bucle for
- Bucle while
- Código spaghetti
- Programación estructurada
- Lenguaje de programación