[C con Clase] GOTO
Steven Davidson
srd4121 en njit.edu
Lun Nov 10 07:13:59 CET 2008
Hola David,
David fire wrote:
> siento dicentir pero no se me ocurre ningun caso en C/C++ o cualquier
> otro lenguaje de alto nivel que requiera usar GOTO en vez de if for
> whilke etc...
Sí hay casos que se consideran apropiados usar 'goto', cuando prima la
claridad de un código fuente que de por sí puede ser complicado. El
típico ejemplo de esto es el de salir directamente de una serie de
bucles anidados. Por ejemplo,
for( ... )
{
while( ... )
{
for( ... )
{
for( ... )
{
if( ... )
{
...
goto salir;
}
}
}
}
}
salir:
...
Obviamente, podríamos usar una variable booleana que sirviese de
banderín o indicador para salir de todos estos bucles. Sin embargo,
complica un poco todo este código agregar otro elemento sólo con el
propósito de controlar la salida de todos los bucles anidados. Por ejemplo,
bool bSalir = false;
for( ... && !bSalir )
{
while( ... && !bSalir )
{
for( ... && !bSalir )
{
for( ... && !bSalir )
{
if( ... )
{
...
bSalir = true;
}
}
}
}
}
...
También hay que tener en cuenta que es posible que necesitemos un código
de muy bajo nivel porque prima la velocidad de ejecución del programa u
optimización del tamaño del programa ejecutable. La otra razón de tener
'goto' es que algunos programas que traducen de ensamblador a C/C++
pueden usar 'goto' para indicar los "saltos" a otras instrucciones en el
programa. Si no tuviéramos 'goto' disponible, el traductor podría tener
problemas a la hora de elegir la estructura correcta de C/C++ para
representar la lógica del programa.
En general, no usaríamos 'goto', por los peligros que existen y además
ya tenemos varias otras estructuras ofrecidas por el lenguaje. Sin
embargo, es útil saber que si necesitamos 'goto', por la razón que sea,
lo tendremos a mano.
Espero haber aclarado un poco el tema.
Steven
Más información sobre la lista de distribución Cconclase