Página 1 de 1

Técnicas de programação

MensagemEnviado: 17 Mar 2007 08:33
por MOR_AL
Caros colegas do fórum.

Em algumas técnicas de programação, não é “elegante” usar-se a instrução “goto”. Argumentam que o programa fica mais difícil de entender e acompanhar o que acontece, no caso de uma possível correção.
Pergunto: Haveria um modo "elegante" de programar, em C da CCS, o diagrama abaixo, sem utilizarmos “goto”?
“A”, “B” e “D” são um grupo de instruções em seqüência, “C” é uma variável inteira e “E” é uma variável booleana.
Alguém tem sugestões?


Imagem

MOR_AL

MensagemEnviado: 17 Mar 2007 10:02
por ric_vas
Se a instrução D não alterar o valor de C, talvez assim:

Código: Selecionar todos
do
{
   A
   do
   {

      B
      if (C==0)
         break;
      D
   }while (E==0);
   
}
while (C==0);


Ric

MensagemEnviado: 17 Mar 2007 11:17
por Maurício
Belo algoritmo, hein, Ric?!?! :wink:

[]'s

RETI.

MensagemEnviado: 17 Mar 2007 13:04
por ric_vas
??? Tem algo errado? :?

Ric

MensagemEnviado: 17 Mar 2007 13:13
por Maurício
Muito pelo contrário!

[]'s

RETI.

MensagemEnviado: 17 Mar 2007 13:31
por MOR_AL
Olá ric_vas!

Simples "elegante" e inteligível.

Pensava que só se podia "entrar" em um loop pelo seu início.

MOR_AL

MensagemEnviado: 19 Mar 2007 21:45
por microeletronica
Muito inteligente este topico.
Bem legal mesmo.

;)
Cheers

MensagemEnviado: 21 Mar 2007 21:40
por MOR_AL
Valeu microeletronica.

MOR_AL

MensagemEnviado: 21 Mar 2007 22:36
por Renie
Olá Mor_al !

Em qualquer linguagem de alto nível, para entar em um loop controlado
(comandos do, while, for, e afins), só é possível pelo início mesmo!!!!

"Quebrar", ou seja, abandonar, terminar prematuramente um loop é outra coisa, nestes casos, o compilador coloca códigos que irão satisfazer
a condição de término do loop e desviar para o final do mesmo.

MensagemEnviado: 22 Mar 2007 09:20
por MOR_AL
Olá Renie!

Sabia que existia alguma restrição com relação a este fato.

MOR_AL

MensagemEnviado: 22 Mar 2007 09:34
por andre_luis
Olhando essa solução proposta pelo ric_vas pareceu coerente com o problema; mas aqui vai umas questões :

- será que cabe alguma otimização ?
- Será que o Simulink do Matlab geraria um código-fonte para outros casos ?

+++