• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

deathseeker25

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

9 mensagens neste tópico

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

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

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.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

'É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.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

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

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

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.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

por acaso nunca usei nada disso... nem tinha conhecimento disso... :roll:

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
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'!

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora