Técnicas de programação

Software e Hardware para uC PIC

Moderadores: andre_luis, 51, guest2003, Renie

Técnicas de programação

Mensagempor MOR_AL » 17 Mar 2007 08:33

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
Avatar do usuário
MOR_AL
Dword
 
Mensagens: 2934
Registrado em: 19 Out 2006 09:38
Localização: Mangaratiba - RJ

Mensagempor ric_vas » 17 Mar 2007 10:02

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
ric_vas
Nibble
 
Mensagens: 93
Registrado em: 11 Out 2006 22:22
Localização: RS

Mensagempor Maurício » 17 Mar 2007 11:17

Belo algoritmo, hein, Ric?!?! :wink:

[]'s

RETI.
"Não leve a vida tão à sério, afinal, nenhum de nós sairá vivo, dela!"
Avatar do usuário
Maurício
Word
 
Mensagens: 678
Registrado em: 14 Out 2006 17:23
Localização: São Paulo - SP

Mensagempor ric_vas » 17 Mar 2007 13:04

??? Tem algo errado? :?

Ric
ric_vas
Nibble
 
Mensagens: 93
Registrado em: 11 Out 2006 22:22
Localização: RS

Mensagempor Maurício » 17 Mar 2007 13:13

Muito pelo contrário!

[]'s

RETI.
"Não leve a vida tão à sério, afinal, nenhum de nós sairá vivo, dela!"
Avatar do usuário
Maurício
Word
 
Mensagens: 678
Registrado em: 14 Out 2006 17:23
Localização: São Paulo - SP

Mensagempor MOR_AL » 17 Mar 2007 13:31

Olá ric_vas!

Simples "elegante" e inteligível.

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

MOR_AL
Avatar do usuário
MOR_AL
Dword
 
Mensagens: 2934
Registrado em: 19 Out 2006 09:38
Localização: Mangaratiba - RJ

Mensagempor microeletronica » 19 Mar 2007 21:45

Muito inteligente este topico.
Bem legal mesmo.

;)
Cheers
microeletronica
Byte
 
Mensagens: 158
Registrado em: 05 Dez 2006 18:22

Mensagempor MOR_AL » 21 Mar 2007 21:40

Valeu microeletronica.

MOR_AL
Avatar do usuário
MOR_AL
Dword
 
Mensagens: 2934
Registrado em: 19 Out 2006 09:38
Localização: Mangaratiba - RJ

Mensagempor Renie » 21 Mar 2007 22:36

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.
[]'s
Renie
-------------------------------------------------------------------------------------------------------------
Meu velho site com eletrônica praticamente parado http://www.reniemarquet.com
Nosso Blog http://artemadeiraevida.blogspot.com.br
Renie
Word
 
Mensagens: 732
Registrado em: 11 Out 2006 22:35
Localização: RJ - Niterói - Brasil

Mensagempor MOR_AL » 22 Mar 2007 09:20

Olá Renie!

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

MOR_AL
Avatar do usuário
MOR_AL
Dword
 
Mensagens: 2934
Registrado em: 19 Out 2006 09:38
Localização: Mangaratiba - RJ

Mensagempor andre_luis » 22 Mar 2007 09:34

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 ?

+++
Avatar do usuário
andre_luis
Dword
 
Mensagens: 5447
Registrado em: 11 Out 2006 18:27
Localização: Brasil - RJ


Voltar para PIC

Quem está online

Usuários navegando neste fórum: Nenhum usuário registrado e 1 visitante

cron

x