[C con Clase] GOTO

David fire ddfire en gmail.com
Lun Nov 10 11:26:51 CET 2008


estuve a punto de mandar a la lista que para salir de muchos loops anidados
usar un "named break" prdoucto de mi actual curso de java.....

cuando prima la velocidad y la optimizacion las reglas de buenas costumbres
se van al cuerno....
es la realidad el codigo claro rara ez es el mas optimo.....


con respecto a muchos loops anidados talvez seria una opcion hacer una
funcion aparte y poner un return....
no se no lo pense mucho puede que en esos casos el goto sea lo indicado....

el problema se da si se utiliza un goto para salir de una funcion, por que
cada vez que se haga eso se ocupa mas y mas el stack y nunca se libera.
bueno me tengo que ir a trabajar.
David


El 10 de noviembre de 2008 3:13, Steven Davidson <srd4121 en njit.edu>escribió:

> 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
>
>
>
> _______________________________________________
> Lista de correo Cconclase Cconclase en listas.conclase.net
> http://listas.conclase.net/mailman/listinfo/cconclase_listas.conclase.net
> Bajas: http://listas.conclase.net/index.php?gid=2&mnu=FAQ
>



-- 
(\__/)
(='.'=)This is Bunny. Copy and paste bunny into your
(")_(")signature to help him gain world domination.
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://listas.conclase.net/pipermail/cconclase_listas.conclase.net/attachments/20081110/7993968e/attachment.html>


Más información sobre la lista de distribución Cconclase