Bom dia pessoal,

estou em um projeto que já está com 763 linhas de códigos. Eu utilizei muitos if ' s em seqüência sem utilizar else if.

Queria saber se utilizando apenas if, if, if, if em sequencia ocupa mais memoria ram, ou se utilizar if, else if, else if, else ocupa a mesma quantidade. É uma boa prática de programação usar como estou usando? 

Att.

Exibições: 963

Responder esta

Respostas a este tópico

(programa)

(inicio)

("Dois caipiras conversando")

-Fale um número:

-Número 1;

-Se o numero = 1 então eu durmo;//zzzzzzZZzzZZzz

-Senão eu acordo;// a pessoa acorda se a condição não for verdadeira

-Se o numero = 2 então eu bato palmas;  //(n=n)não especificando uma linguagem

-Senão eu acordo;//a pessoa acorda se a condição ,mas neste caso a logica do "senão" não casa com o contexto

(fim)

Resumindo.Um código pode haver milhareres de if sem o else ,desde que sejam necessários.

O que realmente importa no código é a finalidade,memoria é um fator secundário.

(opinião pessoal)

Passou de 2 IFs aninhados, 90% de chance de tu poder usar Switch Case ou similares. Em qualquer linguagem...

Eu tentaria reduzir isso. Como desenvolvedor, sou viciado em otimização. Códigos excessivamente repetitivos e longos tendem ao erro e são difíceis de manter.

Na hora de prototipar não tem muito sentido sair otimizando coisas. Mas, como disse o Almir, vai da preferência de cada um.

Abraço

Ha diferença sim.

Quando de usa só if o uC testa todas as condições.

Quando se usa else if , ele vai testando até encontrar a primeira condição  valida, executa ela e gera uma especie de break e nao testa as outras condiçoes.

Sempre procuro deixar as condições que serão mais verdadeiras no inicio.

Estou fazendo um programa onde tenho que transmitir 256kbs de dados pela serial, sinto essa diferença, se trocar a sequencia de if else na hora de enviar o pacote, o uC demora mais pra enviar, fica mais tempo processando a interrupção de envio.

 

Como os amigos disseram, a grande diferença em utilizar apenas o IF ou o ELSE IF é que se vc colocar diversos IF's todos serão executados, mas se vc colocar ELSE IF ele será executado só se o IF anterior for falso. Se possível até colocar os IF's que vc acredita que tenha maior chance de ser executado antes dos que tem menor chance de ser executados.

Exato, evita processamento inútil testando condições que não serão válidas. 

Nem sempre você consegue substituir IFs por Swith Case.

Isso não é tanto questão de memoria ram, mas sim de processamento.

Como o Jucelei flou, 

Se você não usar else, ele var sempre testar todas as condições, mesmo que a primeira seja a correta, isso acaba usado mais processamento que o necessário, deixando o programa mais lento.

Camilo,

1 - Pode utilizar a diretiva de precompilação:

#define DWL0 0

#define DWL0 1

...etc.

2 - podes utilizar o procedimento de enumeração, através de:

enum stringValue(string1, string2, string3,...);

onde cada string representará um inteiro. (não esquecer de mapear)

3 - podes utilizar o recurso de MACRO, como se sobrescrevesse a função switch().


veja isto: http://www.codeguru.com/cpp/cpp/cpp_mfc/article.php/c4067/Switch-on...

Tudo vai depender do que se pretende como resultado final.

RSS

© 2024   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço