• Viernes 26 de Abril de 2024, 21:13

Autor Tema:  Goto  (Leído 2801 veces)

Bgirl

  • Miembro activo
  • **
  • Mensajes: 62
    • Ver Perfil
Goto
« en: Viernes 11 de Febrero de 2005, 15:43 »
0
Hola que tal!

Quisiera saber como puedo utilizar la funcion GOTO en Dev o si existe alguna funcion equivalente.

Gracias de Antemano...
[size=109]Hack To Construct, Never To Destroy!!!![/size]

CiRRuS

  • Miembro MUY activo
  • ***
  • Mensajes: 218
    • Ver Perfil
    • http://zirrus.es
Re: Goto
« Respuesta #1 en: Viernes 11 de Febrero de 2005, 16:35 »
0
Para usar el goto en dev nohay nada de especial. Debes poner goto <etiqueta> donde etiqueta esta declarado en el procedimiento, te pongo un ejemplo:

Código: Text
  1.  
  2. int main() {
  3.    p:
  4.    printf(&#34;HOLA&#092;n&#34;);
  5.    system(&#34;pause&#34;);  
  6.    goto p;
  7. }
  8.  
  9.  

Pero recuerda que el uso de GOTO es una "desgracia" (como diría uno de mis profesores) y para ello se ha inventado la programación estructurada.

Por cierto, con poner la pregunta en un foro era suficiente, no hacía falta ponerla en los dos.

Nos vemos :hola:
Core Dumped
zirrus.es

Enko

  • Miembro de PLATA
  • *****
  • Mensajes: 1562
  • Nacionalidad: 00
    • Ver Perfil
Re: Goto
« Respuesta #2 en: Viernes 11 de Febrero de 2005, 16:39 »
0
Ya que está la pregunta.....
El goto del C/C++ Es un salto Incondicional (JMP) o es una salto condicional corto que se usa sin condicion ?

Blag

  • Moderador
  • ******
  • Mensajes: 697
    • Ver Perfil
    • http://atejada.blogspot.com
Re: Goto
« Respuesta #3 en: Viernes 11 de Febrero de 2005, 16:43 »
0
Utilizar GOTO es lo peor que puede haber..........En C++ nunca lo he tenido que utilizar........Quizás un par de veces en QBasic.....Pero jamás en C++  :angry:

Hasta donde yo se.....es un

Citar
Es un salto Incondicional (JMP)

Saludos,

Blag  :devil:

CiRRuS

  • Miembro MUY activo
  • ***
  • Mensajes: 218
    • Ver Perfil
    • http://zirrus.es
Re: Goto
« Respuesta #4 en: Viernes 11 de Febrero de 2005, 18:25 »
0
Pues creo que es un salto incondicional (¿que condición se pondría?) de todas formas si te pica mucho la curiosidad puedes probar a generar el ensamblador a partir del codigo c que tengas.

Nos vemos :hola:
Core Dumped
zirrus.es

Enko

  • Miembro de PLATA
  • *****
  • Mensajes: 1562
  • Nacionalidad: 00
    • Ver Perfil
Re: Goto
« Respuesta #5 en: Viernes 11 de Febrero de 2005, 21:06 »
0
Sacado de Turbo C++
Código: Text
  1.  
  2.            ¦Distance to                 ¦Inline Assembler
  3.   Opcode     ¦Target Label                ¦Generates
  4.  
  5.   JMP        ¦    Within -128 to 127 bytes¦Short jump
  6.              ¦NOT within -127 to 128 bytes¦Near jump
  7.              ¦                            ¦
  8.   Conditional¦    Within -128 to 127 bytes¦Short jump
  9.   Jumps      ¦NOT within -127 to 128 bytes¦Short inverse jump
  10.  
  11.  

Segun entiendo ahi, los JMP solo pueden ser Cortos o cercanos, por lo que no permite saltos Lagos. Por  eso, debe de haber una cierta restriccion respecto su uso. y claro, si es programacion estructurada.
Citar
un par de veces en QBasic
En cambio, en QBasic, al ser Menos estructurado que la "Casita del Arbol despues de un tornado" Si que permite JMP a cualquier lado, inclusive a la Luna.

CiRRuS

  • Miembro MUY activo
  • ***
  • Mensajes: 218
    • Ver Perfil
    • http://zirrus.es
Re: Goto
« Respuesta #6 en: Viernes 11 de Febrero de 2005, 22:33 »
0
Citar
QBasic, al ser Menos estructurado que la "Casita del Arbol despues de un tornado"

 :D  :D  :D  :D  Muy simpatica la anotación  :D  :D  :D  :D

Nos vemos :hola:
Core Dumped
zirrus.es

bob esponja

  • Miembro MUY activo
  • ***
  • Mensajes: 411
    • Ver Perfil
    • http://marianoguerra.blogspot.com
Re: Goto
« Respuesta #7 en: Sábado 12 de Febrero de 2005, 09:36 »
0
voy a parecer un viejo cascarrabias pero usar goto es una mala practica y no existe algo que se haga con goto que no se pueda hacer de la forma correcta...

es solo mi opinion

JuanK

  • Miembro de ORO
  • ******
  • Mensajes: 5393
  • Nacionalidad: co
    • Ver Perfil
    • http://juank.io
Re: Goto
« Respuesta #8 en: Sábado 12 de Febrero de 2005, 15:35 »
0
Opino lo mismo, usar goto es anti profesional en los tiempos modernos, mejor usa un while o un for o un do-while.
[size=109]Juan Carlos Ruiz Pacheco
[/size]
Microsoft Technical Evangelist
@JuanKRuiz
http://juank.io

Platypus

  • Miembro activo
  • **
  • Mensajes: 63
    • Ver Perfil
Re: Goto
« Respuesta #9 en: Lunes 14 de Febrero de 2005, 20:15 »
0
Yo no es que opine lo mismo, es que hace unos años cuando estudié C/C++ en la uni, si te veían un GOTO estabas suspendido directamente y entonces ya nos acostumbramos a no utilizarlo en este lenguaje, el GOTO estaba "prohibido".

Ruben3d

  • Miembro HIPER activo
  • ****
  • Mensajes: 710
  • Nacionalidad: es
    • Ver Perfil
    • Web personal
Re: Goto
« Respuesta #10 en: Martes 15 de Febrero de 2005, 00:49 »
0
Hola.

Comparto vuestra idea sobre la mala práctica que es utilizar la sentencia goto, y que cualquier cosa hecha con un goto se puede hacer de cualquier otra manera. Sin embargo lo he visto utilizar inteligentemente en algoritmos de ordenación, para salir rápidamente de muchos bucles anidados si se cumple una condición, y evitar así tener una variable booleana que comprobar en cada iteración de cada bucle (hablo de casos en los que la velocidad importa mucho).

Por otro lado, aqui hay una interesante lectura sobre el abundante uso del goto en el kernel de Linux:
Linux: Using goto In Kernel Code

Un saludo.

Ruben3d

JuanK

  • Miembro de ORO
  • ******
  • Mensajes: 5393
  • Nacionalidad: co
    • Ver Perfil
    • http://juank.io
Re: Goto
« Respuesta #11 en: Martes 15 de Febrero de 2005, 03:19 »
0
Si, ya me estoy acostumbrando a que muchas de las cosas que se pueden hacer por el codigo para que este produsca resultados más eficientes en procesos críticos casi en un99% son una mala practica de programación...

Ya hemos visto como el codigo estructurado(y POO) produce grandes cuellos de botella  en segmentos de codigo que si fueran programados en 'spagetti' a punta de goto's y enoooooooooooooooooooooooooooomes bucles serian muchisimo más rápido, el tener segmentos de codigo reutilizable es uno de nuestros grandes  retrazos en cuenato a rendimiento en un programa, pero sin lugar a dudas es un avance gigantesco en cunto a la legibilidad del codigo y el ahgorro de tiempo en nuevos desarrollos. Por otro lado en las maquinas de hoy en dia esos tiempos son casi que despreciables y solo se consideran importantes en cosas como por ejemplo crear un manejador de procesos, de memoria o de dispositivos para un sistema operativo o crear segmentos de codigo para trabajos multimedia a bajo nivel (codificacion y decodificacion de archivos (mp3, mpeg, divx... etc), filtros , convolulcion de imagenes etc.)

En fin, si yo creara un sistema operativo seguramente que si llegaria a usar el goto algunas veces por razones de mision critica asi mismo usaría segmentos de codigo repetido para evitar los tiempos que implican los cambios de contexto etc etc , pero en el 99.9999999% de los casos no lo usaria.  :smartass:
[size=109]Juan Carlos Ruiz Pacheco
[/size]
Microsoft Technical Evangelist
@JuanKRuiz
http://juank.io