Jump to content
Sign in to follow this  
deathseeker25

Luís Damas e a utilização da instrução goto

Recommended Posts

deathseeker25

Boas,

Estava aqui a pensar como resolver alguns problemas do meu Codificador em Linguagem Matemática e lembrei-me de recorrer á instrução goto, de forma a poder resolvê-los.

Ora, abri o livro "Linguagem C" de Luís Damas na página 474 para recordar toda a sintaxe da instrução goto, quando me deparo com uma série de observações um pouco estranhas do autor.

Até vou fazer um quote do texto que me espantou um pouco:

goto

Esta instrução deveria ser a ultima a ser apresentada neste livro e deveria vir escrita com aquelas letrinhas muito pequeninas que normalmente aparecem nos contractos.

A razão é esta. O goto só deve ser utilizado em situações de erro grave, em que é necessário fazer um salto incondicional para um label que terá que estar colocado algures no programa.

Infelizmente, muitos programadores começaram por programar em linguagens, como o BASIC ou o COBOL, em que o goto é utilizado macissamente.

A instrução goto e o seu label terão que estar colocados dentro da mesma função, podendo não estar no mesmo bloco.

Se vocês, habitualmente, programa com a instrução goto ou se no final da leitura deste livro ainda sente vontade de programar com o goto, então não diga a ninguem que o leu !!! E já agora risque a palavra programador do seu cartão de apresentação.

Ora, eu cortei ali o exemplo que o autor dava da utilização do goto visto que não interessa para o assunto.

Agora pergunto: porque é que a utilização o goto só devia se rutilizada em casa extremo? É que utilizar um comando como o goto é algo que pode ajudar e muito o programador a resolver certos problemas.

Claro que não seria utilizada macissamente. Uma ou duas vezes, talvez até por falta de imaginação do programador por vários factores, penso que o goto deve ser utilizado.

Se discordam da minha opinião, expliquem-me então o porque da não utilização do goto.

Cumps

Share this post


Link to post
Share on other sites
neon_prannock

A utilização de Labels e Gotos deve ser evitada ao máximo, só deve ser utilizada quando a linguagem não permite nenhum outro tipo de solução e mesmo assim com moderação.

Aqui estão os principais inconvenientes da utilização destes:

  • ➔ A quebra na estrutura do código: a utilização de um goto leva a que a leitura do código "salte" para outra zona totalmente diferente do código, quebrando totalmente a leitura deste, tornando o código muito mais difícil de compreender. Esta é chamada a programação "spagetti"!
    ➔ O facto de possibilitar a saída no meio de ciclos e funções pode levar a erros inesperados e difíceis de interpretar, tornando o programa mais difícil de depurar (retirar os erros).
    ➔ Embora na maioria das linguagens seja possível determinar o nome destas, o nome nunca pode ser muito específico, por isso é outro factor que dificulta a leitura do código.
    ➔ A utilização destes leva a uma atitude "perguiçosa" do programador, já que este passa a evitar estruturar e a pensar no código convenientemente.

Por essas razões é que deve ser evitado o uso de Labels e Gotos.

Share this post


Link to post
Share on other sites
vbmaster

'És berdade'

o goto que eu tanto gosto de usar em vb (aí nunca notei nenhum problema em os usar) é muito pouco aconselhável e eu próprio já notei isso nos meus programas em c++ (nesta ultima linguagem passo bem sem eles).

Realmente o autor tem uma maneira engraçada de transmitir a informação....só este exerto gostei.

Share this post


Link to post
Share on other sites
deathseeker25

Vendo dessa forma dá para perceber então o porque de toda esta festa no discurso do Luís Damas. Para os utilizadores, o programa ter ou não gotos é indiferente, mas para os programadores que lêm o código ter gotos dá dores de cabeça.

Num excerto bem pequenino de código (meu caso) não há problema porque facilmente se identifica o goto. No entanto, criam-se maus hábitos de programação.

Se for num programa de dimensão elevada, eu não quero imaginar.

Cumps

Share this post


Link to post
Share on other sites
David Pintassilgo

Ora ai está uma grande verdade!

Eu proprio me encaixo prefeitamente no exemplo. Comecando a trabalhar em BASIC apanhei o virus dos goto's

A utilização destes leva a uma atitude "perguiçosa" do programador, já que este passa a evitar estruturar e a pensar no código convenientemente.

é isso mesmo!!! eu já só uso goto mesmo por uma questão de preguiça de fazer as coisas como deve de ser, ainda não me consegui livrar complectamente do vicio, mas já não o uso com regularidade.


cool stuffs to check.

http://blog.zxcoders.com//

Share this post


Link to post
Share on other sites
David Pintassilgo
Para quê usar o goto quando existe o switch()...case?

Exacto! O 'problema' é que o goto é usado de uma forma mais rápida/practica para quem está a comecar a programar e não tem conhecimentos suficientes e dai para a frente vai ficando o 'vicio'!


cool stuffs to check.

http://blog.zxcoders.com//

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this  

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.