SE você está apertado, vá ao banheiro, SE NÃO, continue fazer o que estava fazendo.
A condição testada aqui é "você está apertado?" E ela só pode assumir dois valores: "sim eu estou apertado",ou "não eu ainda não estou apertado". (Para fins didáticos, ignorem o "mais ou menos apertado" por enquanto).
Variáveis booleanas:
Uma variável booleana é aquela que só pode assumir um valor de dois: ou ela é zero, ou ela é um, ou ela é sim, ou ela é não... no fundo ou ela é verdadeira, ou então é falsa.
Uma condição a ser testada vai ser sempre booleana, mesmo que contenha uma variável real, inteira ou etc. Veja o exemplo:
x é um número inteiro qualquer;
SE x > 10, ENTÃO você multiplica x por 1,2 ; SE NÃO, você multiplica x por 5.
(Ou seja, se tivermos x = 30, ao fim desse processo x será igual à 36, no entanto se tivéssemos x=5 ao final teríamos x=25 )
Apesar de x ser um número inteiro e 10 também ser a condição "x>10" é booleana. Ou x é verdadeiramente maior que 10, ou então não é.
Átomos:
Não, não estamos falando de física ou química. Em lógica existem átomos, que são as proposições mais simples, sobre as quais você só precisa fazer um teste e que não possuem conectores. "x>10" é um átomo, você só precisa saber se x é maior que 10, não precisa testar outra coisa. "Você está apertado" também é um átomo, afinal, a unica coisa testada e se o sujeito está, ou não, apertado.
Moléculas:
A ideia aqui é a mesma da natureza: átomos se ligam e formam moléculas. Existem situações em que uma unica proposição atômica não descreve uma situação e mesmo que duas ou mais condições sejam testadas separadamente, em sequencia, o resultado obtido não será satisfatório. Veja o exemplo do segurança de uma festa:
"Por causa da legislação local, o segurança da portaria de uma festa recebe a seguinte ordem: Se a pessoa tiver 18 ou mais anos ela pode entrar, se não, se for maior de 16, poderá entrar com autorização dos pais, o resto não entra."
Se usássemos só os átomos:
1.É maior de 18? Então entra, caso o contrário não entra.
2.É maior de 16? Então entra, caso o contrário não entra.
3.Tem autorização? Entrão entra, caso o contrário não entra.
*Maior de, leia como "maior ou igual a".
Parece ok?
Alice é tem 21 anos e não tem autorização dos pais (pois não precisa).
Bianca tem 17 anos e não tem autorização dos pais.
Carolina tem 16 anos e tem autorização dos pais.
Débora tem 15 anos e não tem autorização dos pais.
Eveline tem 14 anos e tem autorização dos pais.
Pela legislação, teoricamente Alice, que é maior de 18 e Carolina, que é maior de 16 e tem a autorização deveriam poder entrar na festa.
MAS:
Alice tem 21 anos, é admitida na primeira etapa e entra, as demais são barradas, inclusive Carolina, que é menor de 18 e portanto é barrada na instrução 1.
E se fizéssemos 2-1-3?
Ai Alice, Carolina e Bianca entram, afinam a condição "2" diz para admitir maiores de 16.
E 3-2-1?
Carolina e Eveline entram, as demais são barradas, afinal ele vai admitir as que tem autorização e recusar as demais.
Ok, é bobo mas é só para exemplificar. Um espertinho poderia argumentar que é possível chegar na resposta certa dizendo:
1.É maior de 18? Então entra, caso o contrário testa 2.
2.É maior de 16? Então testa 3, caso o contrário não entra.
3.Tem autorização? Entrão entra, caso o contrário não entra.
Realmente nesse caso Alice é admitida no teste 1, Débora e Eveline são barradas no teste 2, Caroline é admitida no teste 3 enquanto Bianca é barrada no mesmo teste. Tudo isso usando apenas átomos certo?
Errado! Os testes dentro de testes dá a impressão de estarmos lidando apenas com átomos, mas o que vai definir se uma das garotas vai ser admitida na balada ou não é o conjunto das variáveis booleanas, ou seja do resultado dos testes e não o valor de um átomo.
Na verdade temos apenas um teste para definir se uma guria vai entrar ou não:
1. OU É maior de 18, OU é maior de 16 E nesse caso tem autorização? Se sim entra, se não é recusada.
Nesse caso Alice (maior de 18) e Carolina (maior de 16 e tem autorização) poderão entrar, enquanto as outras que são "menores de 18 E menores de 16, OU na exceção a esse caso sem autorização" não entram.
Conectores:
Não deixei o "E" e o "OU" destacados sem propósito. Quando unimos duas proposições atômicas para formar uma proposição molecular, precisamos usar os conectores para estabelecer uma "regra" de como a molécula será analisada.
Existem dois conectores básicos, o "E" e o "OU":
Conector "E":
O conector "E" funciona como uma intercessão de conjuntos, ou seja, só o que for verdade na interseção entre duas proposições, será verdade numa proposição molecular formada por esse conector. Vamos a um exemplo, será mais fácil compreender assim:
SE é homem E completou 18 anos, você deve procurar a junta de serviço militar mais próxima e se alistar!
A proposição a ser testada, "é homem E completou 18 anos" é uma molécula formada pelos átomos "é homem" e "completou 18 anos". A molécula, nesse caso, só será verdadeira se ambos os átomos forem verdadeiros! Veja:
Alberto é homem e completou 18 anos, como ambos os átomos são verdadeiros a molécula é verdadeira e ele deve se alistar.
Bruno é homem, mas ainda não completou 18, assim apenas o primeiro átomo é verdadeiro, a molécula no entanto é falsa e ele não deve se alistar.
Camila é mulher e completou 18, apenas o segundo átomo é verdadeiro, a molécula é falsa e ela não deve se alistar.
Denise é mulher e ainda não completou 18, ambos os átomos são falsos, a moléculas é falsa e ela não deve se alistar.
Conector "OU":
O conector "OU" funciona como uma união de conjuntos, ou seja, nas condições em que qualquer um dos átomos for verdade a molécula será verdadeira. Observem o exemplo:
SE for maior de 14 OU estiver acompanhada dos pais, a pessoa pode entrar.
Flávia tem 16 anos e veio com os pais, ambos os átomos estão corretos e ela pode entrar.
Gina tem 15 anos e veio sem os pais, o primeiro átomo é verdadeiro e isso basta para ela poder entrar.
Helena tem 12 anos e veio com os pais, o segundo átomo é verdadeiro e isso basta para ela poder entrar.
Iara no entanto tem 11 anos e veio sem os pais, pobrezinha, nenhum dos átomos é verdadeiro, a molécula é falsa e por isso ela não pode entrar.
Conector "NÃO":
O conector "NÃO", não serve para unir átomos e sim para inverter o sentido das proposições. Assim se temos uma proposição "a", NÃO "a" será verdadeira quando "a" for falsa e falsa quando "a" for verdadeira. Exemplo:
SE Abel NÃO estiver lá em cima, procure ele na padaria.
Se Abel estiver "lá em cima", a proposição atômica "Abel está lá em cima" vai ser verdadeira e portanto a molécula "Abel Não está lá em cima" vai ser falsa e o sujeito não deverá ir procurar Abel na padaria.
Ao contrário, se Abel não estiver lá em cima, o átomo vai ser falso a molécula verdadeira e o sujeito vai ter que ir procurar na padaria.
Usando conectores com moléculas:
Da mesma forma que usamos os conectores para unirmos átomos, podemos usa-los para unir átomos à moléculas ou até mesmo unirmos duas moléculas. A ideia do uso dos conectores continua a mesma, no entanto deve se estar atento à ordem das operações lógicas. Os testes devem ser feitos de "dentro" para "fora", começando pelos átomos e terminando nas moléculas mais complexas. Vamos voltar ao exemplo do segurança:
"OU é maior de 18, OU é maior de 16 E nesse caso tem autorização? SE sim entra, SE NÃO é recusada."
Temos aqui uma molécula complexa: "OU É maior de 18, OU é maior de 16 E nesse caso tem autorização ", formada pelo átomo "É maior de 18" e pela molécula "é maior de 16 E tem autorização". Essa última é formada pelos átomos "É maior de 16" e "Tem autorização".
Assim devemos primeiro resolver os átomos mais internos, ou seja:
a = "É maior de 16"
b= "Tem autorização"
SE "a" e "b" forem verdadeiros a molécula c = "é maior de 16 E tem autorização" é verdadeira, nos demais casos ela é falsa. Depois disso temos
c = "é maior de 16 E tem autorização"
d = "É maior de 18"
SE ou "c", ou "d" forem verdadeiros a molécula e = "É maior de 18" e pela molécula "é maior de 16 E tem autorização" será verdadeira.
Negação de moléculas:
O conector "NÃO" preserva sua lógica sobre moléculas, ou seja, ele vai passar o valor oposto ao resultado da mesma. Devemos atentar aqui é que os conectores também se invertem. Veja:
Para ser aceito ele deve ser "forte E inteligente".
Todos os que se enquadram, ou seja, todos que conseguem fazer a molécula "forte E inteligente" são aceitos, os que não conseguem, ou seja, os que fazem a negativa de "forte E inteligente" ser verdadeira são rejeitados.
Mas qual é a negativa de "forte E inteligente"? É "não forte, OU não inteligente". Percebam:
Ariel é forte e é inteligente.
Bernardo é forte, mas não é inteligente.
Carlos não é forte, mas é inteligente.
Douglas não é forte e não é inteligente.
Em Ariel o átomo "é forte" verdadeiro, por isso seu "não é forte" é falso, o mesmo vale para seu "não é inteligente". Como ambos os átomos são falsos a molécula "não é forte, ou não é inteligente" é falsa.
Bernardo tem o átomo "não é forte" falso, mas o "não é inteligente" é verdadeiro e isso é o suficiente para validar a proposição molecular "não forte, OU não inteligente". Com Carlos funciona de forma parecida.
Douglas tem verdadeiro em todas as suas negativas atômicas e por isso a molécula "não forte, OU não inteligente" é verdadeira.
Resumindo, quando for negar uma molécula, negue todos os seus componente e troque os conectores: onde for "E" vira "OU" e onde for "OU" vira "E".
Se houver uma negação dentro da molécula ela deverá ser excluída quando a molécula for negada. Veja o exemplo:
"Isso NÃO é verdadeiro", ou seja, "Isso é falso". A negação dessa molécula é "Isso NÃO NÃO é verdadeiro", que significa "Isso NÃO é falso", que no fim das contas é "Isso é verdadeiro".
Conector OU exclusivo:
Não falei desse conector, porque na verdade ele é uma junção de um conector "OU", um "E" e um "NÃO". Enquanto para o conector "OU" basta que uma das proposições seja verdadeira para que a proposição maior também o seja, já no "OU exclusive" apenas um dos componentes deve ser verdadeiro. Se não for nenhum, ou se forem ambos a proposição é falsa.
Veja o exemplo:
"OU o gato é macho, OU o gato é fêmea". O gato não pode ser macho e fêmea, nem pode ser nem macho nem fêmea.
O OU exclusivo é formado entre duas proposições "a" e "b", usando "(a OU b) E (não a OU não b)"
Veja:
a = verdadeiro ; b = verdadeiro
nesse caso "(a OU b)" = verdadeiro, (não a OU não b) = falso e "(a OU b) E (não a OU não b)" é falso.
a = verdadeiro ; b = falso
(a OU b) = verdadeiro ; (não a OU não b) = verdadeiro
"(a OU b) E (não a OU não b)" = verdadeiro. (o mesmo vale para a = falso ; b = verdadeiro)
a = falso ; b = falso
(a OU b) = falso
(não a OU não B) = verdadeiro
"(a OU b) E (não a OU não b)" = falso.
A negativa do "OU exclusivo" é portanto: "(não a E não B) OU (a E b)", ou seja, quando as duas forem falsas, ou duas forem verdadeiras.
Parece confuso:
Pode parecer confuso, mas não é. Na próxima postagem (pretendida para 04/09 desse ano) falaremos sobre os sinais lógicos e sobre a tabela verdade, que ajudarão muito a simplificar e resolver problemas lógicos.
Antes de fecharmos eu gostaria também de fazer duas observações:
1º Para fins didáticos eu fiz parecer que é impossível testar só proposições atômicas e que os conectores eram cruciais para casos mais elaborados. Na verdade os conectores não passam de "testes" seguidos.
"a E b" |
"a OU b" |
2º Os termos aqui foram adaptados para o aprendizado de algoritmos. Existem outros conectores como o conector condicional "SE, ENTÃO" e o bicondicional "SE E SOMENTE SE", porém não achei interessante tratar deles aqui e dessa forma. O "SE ENTÃO" estamos usando como "teste condicional" e será mais agradável trata-lo não trata-lo diretamente aqui e agora.