Hacer saltos de programas -goto-

Por favor soy nuevo usando java pero es lo mas facil de acuerdo a mis posibilidades para aprender a programar....estoy haciendo un programa de pequeños calculos que se repiten y quiero mediante una etiqueta hacer un salto de programa a esa subrrutina para hacer el calculo y continuar,creo que eso se hace con break y continue pero me da un error y me dice que tengo que declarar el label ,estoy haciendo esto con netbeans,y hasta ahora no encuentro la forma si alguien me pudiera ayudar enviandome un ejemplo ,se lo agradeceria. un saludo Eddy

Opciones de visualización de comentarios

Seleccione la forma que prefiera para mostrar los comentarios y haga clic en «Guardar las opciones» para activar los cambios.
Imagen de mathemathician

Muy vaga tu petición

Es demasiado vaga tu petición, trata de ser más específico. Escribe el planteamiento del problema o el código de tu programa para ver si alguien te ayuda. Saludos.

Imagen de cfpmx

Eso, escribe al menos lo que

Eso, escribe al menos lo que ya tienes, para que así te podamos ayudar por partes.

Imagen de teddy

Hacer saltos de programa goto

Que bueno que me dedicaron su tiempo ,muchisimas gracias ,y con el mejor deseo tratare de ser mas profundo aunque mis conocimientos quizas no me permitan hacerlo mejor .
Mi situacion es la que sigue ....estoy tratando de hacer unos calculos de volumenes de 16 tanques diferentes,yo con jtext introdusco las lecturas de cada tanque y mediante las misma ecuacion calculo su contenido,yo quiero hacer una subrrutina de calculo que bien se puede llamar calcular: y cuando introdusca los datos necesarios me lleve a la misma subrrutina para no tener que repetirla se que se hace con continue y break pero no me funciona,disculpemen si no me se explicar,es lo mismo que hacer el goto pero en java que no lo tiene,y de paso como puedo con el teclado hacer que al oprimir la tecla enter del mismo se realice el calculo ,a modo de aclaracion estoy trabajando con net beans y estoy haciendo una interface grafica para introducir y ver los resultados y con un jbotton hago el calculo,muchisimas gracias por el tiempo Teddy

Imagen de mathemathician

Respuesta

Quiero decirte que el goto no se usa en muchos lenguajes. No se aconceja su uso por ser una mala práctica de programación que induce a muchos errores. Por otra parte, el continue se utiliza por ejemplo en un for, y sirve para pasar a la iteración siguiente. El break se utiliza también por ejemplo en un for y sirve para terminarlo. Estas dos instrucciones no tienen nada que ver con lo que tú deseas hacer. Tienes algo de desorden en tus ideas. Para ordenarte un poco haz lo siguiente. Primero, escribe la interfaz gráfica para que el usuario introduzca los valores y la interfaz para mostrar los resultados. Escribe el código que haga el cálculo de los volumenes y por último trata de juntar esas partes. Si tienes algún código escribelo aquí para que alguien te pueda ayudar. Saludos.

Imagen de ezamudio

Goto is bad, m'kay?

Ya lo dijo mathematician... goto no tiene razón de existir en casi ningún lenguaje. Por lo que veo, has hecho un poco de programación o tienes algunas nociones, por lo que mencionas de subrutinas. Java es un lenguaje orientado a objetos, no hay subrutinas; hay clases que contienen métodos, que pueden ser estáticos o de instancia (lo normal). Las clases son las definiciones de los objetos, y normalmente puedes crear varias instancias de una clase. Cada instancia tiene su propio estado interno; las variables internas que definas en la clase, cada instancia tiene su copia.

No necesitas goto en Java (aunque existe, por alguna extraña razón) porque cualquier problema que tengas con goto se puede resolver definiendo un método que reciba parámetros e invocándolo en el punto donde pondrías el goto.

Imagen de benek

Goto

En realidad "goto" no existe en Java, simplemente se dejó como palabra reservada pero no tiene funcionalidad. Supongo que para que no se pongan creativos los desarrolladores y le pongan goto a algún método o clase.

Imagen de ezamudio

Simulado

Lo puedes simular con labels y break/continue.

Imagen de teddy

JAVA NO USA GOTO,PERO NESECITO ALGO PARECIDO AL GOTO...

Hola mil gracias a todos ,de una forma ,me han dado una opinion al respecto que entiendo desde el principio en lo poco que se, respecto del goto y java ,como ya dije caballeros no tengo grandes conocimientos y no tengo el tiempo suficiente ni la edad para empesar de nuevo por eso pedi de favor un pequeño ejemplo pues lo que hago lo hago por mi iniciativa de querer aprender y ser util en lo que hago a diario ,EZAMUDIO se ha acercado bastante a mi nesecidad ,pero no ha podido facilitar el demo donde se vea el uso de los label and break -continue,sinceramente me da pena poner el codico que hice pues es lo unico que he hecho
en mi vida en programacion y le doy las gracias a los foros ,y a netbeands pues me facilito hacer lo que nunca imagine.de todas formas mil gracias de corazon a todos lo que me dedicaron su opinion y veo que es un foro lleno de profecionales y gente dispuesta a ayudar . Teddy

Imagen de cfpmx

Hola teddy, Si realmente

Hola teddy,

Si realmente estás empezando y lo que quieres es aprender, ¿No sería más fácil empezar con ejemplos sencillos?, es decir, primero compilar una clase, después declararle atributos, después declarar algunos métodos y poco a poco subirle complejidad. Si es así podría proporcionarte algunos ejemplos de ese tipo o recomendarte algún material. En la forma que especificaste tu duda, no suena algo como para empezar a aprender a programar. Bueno, esta es mi muy humilde opinión.

Atentamente, cfpmx

Imagen de teddy

hi cfpmx,mira de verdad es

hi cfpmx,mira de verdad es para empezar a aprender a programar sinceramente te puedes confundir por mi mal enfoque ,pues de verdad quiero aprender y si me puedes recomendar algo te lo agradesco a lo que he podido hacer le doy las gracias a netbeans y a un pequeño backgraund de fortran 4 que tuve y algo de microcontroladores que se ,pero en algo muy similar a basic asi que lo que me oriente estoy open ,me gusta o me es mas facil de ejemplos resuelto aprender si lo puedes enviar seria mejor para mi,muchas gracias por tu time teddy

Re: Hacer saltos de programas -goto-

pues de verdad quiero aprender y si me puedes recomendar algo te lo agradesco a lo que he podido hacer le doy las gracias a netbeans y a un pequeño backgraund de fortran 4 que tuve y algo de microcontroladores que se ,pero en algo muy similar a basic asi que lo que me oriente estoy open

Aprender a programar en el lenguaje Java es muy sencillo, siempre y cuando hagas algo: ¡olvídate de lo que sabes de programación!

Ya no se programa con saltos. Bueno, en realidad el compilador de Java genera el código con los saltos necesarios. Déjame tomar un ejemplo en Algol, no en Fortran, pero así viene en el libro "Structured Programming" de Dijkstra y Hoare:

 

Es obvio entonces que preguntes cómo se utilizan   y  , que efectivamente, son sentencias  . De hecho, Java tiene otras sentencias   como   o  . Pues bien, en el tiempo que dejaste de programar, se popularizaron los procedimientos, que son secuencias de instrucciones agrupadas en un bloques que se ejecutan de principio a fin. Cuando se termina de ejecutar el bloque de instrucciones, automáticamente el flujo se regresa al sitio en donde se realizó la invocación (o llamada). No más números a los cuales brincar, aunque esto dio origen a otro dogma que dice que todo procedimiento debe tener un solo punto de salida.

Otro punto importante a considerar, es que en Java, de manera natural se pueden juntar en nuna especie de mazacote los datos y el flujo de control del programa (procedimientos o comportamientos). No le llamaré mazacote, se le llama en varios textos "encapsulamiento", es decir, la combinación en una sola abstracción de datos y comportamiento. Así que ¡no hay flujo de datos tampoco!

Por último, hay otro animal interesante: las señales. Son un evento que al ser disparado, modifica de manera permamente el flujo de control (ejecución) de un programa. Estas cosas que pareciesen surgir de la nada, se utilizan mucho en Java en forma de excepciones.

Es tarde y mañana manejo en carretera. Ojalá y alguien pudiera ayudar con un ejemplo de código para determinar el área de un triángulo.

1. Una clase llamada Rectángulo, con las propiedades "base" y "altura" (se requieren getters y setters), así como un método calcularSuperficie
2. Una clase llamada Main, con un método main que cree una instancia de Rectángulo, inicialice la base y la altura y luego imprima la superficie.

Saludos

Javier Castañón

PD. Edsger Dijkstra dijo que los goto eran dañinos en una carta a una revista (Communications of the ACM Volume 11/Number 3/March, 1968), aunque él mismo en un libro cuyo coautor es ni más ni menos que el venerable C.A.R. Hoare llamado "Structured Programming" (1972, Academic Press), los utilizan porque reconocen su utilidad. Inclusive Donald Knuth en un "paper" denominado "Structured Programming with go to Statements" (Computing Surveys, Vol 6, No. 4, December 1974) sale en defensa de los gotos (edit: más bien explica cómo usarlos adecuadamente). Tengo los PDFs para el que le gane el morbo.

Edit: A pesar de las "apologías" del goto, los autores respectivos coinciden que su uso habría que reducirlo al mínimo. El Lenguaje de programación Java lo ha hecho ya. ¡Yo también prefiero los programas con el menor número de gotos!

Imagen de teddy

goto from teddy

Mira Javier, no tengo palabras como agradecer tu respuesta, quiero decirte que la misma , esta llena de un profundo conocimiento sobre el tema y aun mas para mi, me lleno de optimismo y me va hacer pensar positivo para poder llegar a aprender java,una vez mas mil gracias por tu tiempo y por la brillante respuesta...desde las playas de Palm Teddy.

Imagen de ezamudio

No necesitas GOTO

Para lo que necesitas hacer, no necesitas GOTO. Puedes definir varios métodos en una clase. Has programado en C o algun otro lenguaje donde puedes defnir varias funciones? eso es lo que BASIC trataba de cubrir con GOTO y GOSUB. En un   puedes definir un bloque de código completo que solamente se ejecuta si se cumple la condición. Si quieres aprender Java, dile adiós a goto, olvídate de programar de esa forma, lo que tienes que aceptar primero es que es un paradigma distinto. Ejemplo:

 

Me parece que no has captado bien el flujo de un programa, es decir cómo se va ejecutando el código. En esta clase por ejemplo, cuando invocas el método calcula(), se va a invocar el método capturaEntero() y luego se multiplica por pi, se guarda en la variable a, la cual luego se compara con 2 y si tiene ese valor, se ejecuta cierto código (dejé el bloque vacío pero ahi puede ir cualquier cantidad de llamadas a métodos, etc) y luego se continua con lo que sigue del bloque del if, que ya nada más es devolver el valor. Si en el if pones llamadas a otros métodos, se van a ejecutar y luego se continua con el flujo normal. Es decir no se pierde el flujo porque llames a un método en otra clase, siempre se ejecuta el método y posteriormente se regresa al punto donde se invocó para ejecutar la siguiente instrucción. Para eso está el stack de ejecución.

Imagen de teddy

NO MAS GOTO PUES YA APRENDI........

Muchas gracias ezamudio muy claro todo de esa forma creo que me es mas facil viendo y entendiendo lo que ya esta hecho ,muy bien todo y una vez mas gracias por todo creo que estoy mejorando con java netbeans.....desde las playas de Palm Teddy