De acordo com as Leis 12.965/2014 e 13.709/2018, que regulam o uso da Internet e o tratamento de dados pessoais no Brasil, ao me inscrever na newsletter do portal DICAS-L, autorizo o envio de notificações por e-mail ou outros meios e declaro estar ciente e concordar com seus Termos de Uso e Política de Privacidade.
Colaboração: Ricardo Takemura
Data de Publicação: 11 de março de 2016
Para quem fez informática: alguém se lembra de algumas aulas sobre redução de expressões lógicas? Sabia que dá para aplicar no código-fonte de uma aplicação?
Por exemplo, se eu tenho a condição:
if (((x == 0) || (y == 0)) && ((x == 0) || (z == 0))) { ... }
Eu posso reduzi-la pela equivalência:
(A OR B) AND (A OR C) -> A OR (B AND C)
Assim, eu posso simplificar o código da seguinte maneira:
if ((x == 0) || ((y == 0) && (z == 0))) { ... }
A mesma coisa, eu poderia fazer com outras expressões:
(A AND B) OR (A AND C) -> A AND (B OR C) (A AND B) AND (A AND C) -> A AND B AND C (A OR B) OR (A OR C) -> A OR B OR C
O legal, é que vale para aquelas expressões mais "complicadas" (ou mais "cabeças", como alguns falam :P ) :
NOT A OR NOT B -> NOT (A AND B) NOT A AND NOT B -> NOT (A OR B) (NOT A AND B) OR (NOT B AND A) -> A XOR B (NOT A OR B) AND (NOT B OR A) -> NOT (A XOR B)
Vamos pegar a última expressão acima:
if (((!(a > b)) || (c < d)) && ((!(c < d)) || (a > b))) { ... }
Aplicando:
(NOT A OR B) AND (NOT B OR A) -> NOT (A XOR B)
Temos:
if (!((a > b) ^ (c < d))) { ... }
Será que isso ajuda alguém? :)
This policy contains information about your privacy. By posting, you are declaring that you understand this policy:
This policy is subject to change at any time and without notice.
These terms and conditions contain rules about posting comments. By submitting a comment, you are declaring that you agree with these rules:
Failure to comply with these rules may result in being banned from submitting further comments.
These terms and conditions are subject to change at any time and without notice.
Comentários