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.
Tags:
(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...
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.
Bem-vindo a
Laboratorio de Garagem (arduino, eletrônica, robotica, hacking)
© 2024 Criado por Marcelo Rodrigues. Ativado por