Sobre o "goto"

Sou iniciante em JAVA, por isso o tópico =)

Tipo…jah li várias coisas dizendo que o “goto” eh mt ruim, pois lerda a execução do programa, ex: Windows (cheio de goto) { pelo q li }, tmb li agora q JAVA não usa “goto”, existe algo relacionado? Pois tenho um programa em C q usa “goto”, eu gostaria de refaze-lo em JAVA, mas sinceramente não estou conseguindo =(

O código do programa eu posto amanha, em C lógico, pois não estou com ele aki…

Vlw…:

O goto é uma palavra reservada não utilizada e não foi implementada em Java, pois é considerada perigosa…

em Java o comando goto é implementado pelas palavras chave (controle de fluxo)

break e continue

que são úteis para interromper de uma só vez a execução de um laço múltiplo ou pular um determinado ponto do programa…

:wink:

goto não “lerda” a execução do programa. É ruim para a legibilidade, pois fica difícil visualizar para onde o fluxo do programa vai. Com muitos então, fica uma droga.

E o Windows não usa goto (ok, nunca vi o código… mas acho essa afirmação um absurdo).

“GOTO’s eram bastante usados na epoca do BASIC e sabemos que Bill Gates era especialista em Basic(…)
Em reportagem a InfoExame Linus Torvalds, pai do LINUX comenta esses fatos… que o codigo do Windows eh tao complicado* e mal
estruturado, que modificacoes realmente boas na estrutura do S.O. seria
impossivel, sendo mais viavel a recontrucao de um outro S.O.”

  • = isso faz parte de uma msg onde discutia o uso ou a abolição do GOTO

Mas essa é uma outra discurção, quando eu conseguir colocar o código do meu prog em C aki, agente (eu + a ajuda de vcs) tenta fazer ele em JAVA.

Vlw…:

Papai do céu castiga quem escreve programa com goto hehehee

Entao eh o seguinte, em java nao tem goto, mas vc nao pode ter uma variável com o nome goto pq eh uma palavra reservada, mesmo sem ter uso… eh mole?!? Heuheuea

Entao, mas já foi provado matematicamente q eh possivel escrever qq programa q use goto sem goto, é o principio da programação estruturada, q eh paizona da programação orientada a objetos…

Olá,

Em assembly, você não tem muito mais que desvios para programar, então muitas partes de kernel de sistemas operacionais vai ter kernel. Foi provavelmente neste ponto que Torvalds opinou, já que acho que ele não deve ter tido muito acesso ás fontes do Windows.

Foi dijkstra que publicou o famoso paper GOTO Considered Harmful. Realmente está ligado á legibilidade de código.

Basicamente, se você está usando GOTO, está programando de maneira desestruturada, propositalmene ou não. Separe seu código em subrotinas e as utilize, ao invés de ficar pulando para todos os lados :wink:

O programa a seguir está em C como previsto, eu o fiz a um bom tempo(ele simula um prompt, bem simples!!!), mas foi o único q me lembro q usava GOTO, mas enquanto eu o procurava em meus disketes pensei: era soh usar “while” com uma senha de saida… =) (ai a pergunta, o q q mudaria? Em termos de compilação e execução?), apesar de não ter testado pq por enquanto toh 100% JAVA, penso q com certeza irá funcionar, dai eu pergunto: funcionaria né? e tambem peço para que alguem transforme um codigo em C com GOTO em JAVA, jah q não consigo pensar em um agora
=(

printf ("/windows> "); B: scanf("%s",&cond); if (!strcmp(cond,"jogos")) { printf("/jogos> "); goto B; } if (!strcmp(cond,"meusdoc")) { printf("/meusdoc> "); goto B; } if (!strcmp(cond,"fotos")) { printf("/fotos> "); goto B; } if (!strcmp(cond,"mp3")) { printf("/mp3> "); goto B; } if (!strcmp(cond,"linux")) { printf("/linux> "); goto B; } if (!strcmp(cond,"windows")) { printf("/windows> "); goto B; } if (!strcmp(cond,"exit")) { printf("\nFlw\n\n"); goto I; } I: system("pause"); return (0);

ja pensou em substituir esses “goto B” por chamadas a método B()? não estou dizendo q é a resposta ou a melhor maneira, mas ja é um começo :joia: