Changes

Jump to navigation Jump to search
14 bytes added ,  12:37, 26 May 2016
b := false;</pre>
Dois valores constantes por si só não são muito interessantes. Para fazer coisas úteis, nós precisamos ser capazes de realizar operações significativas sobre elas.
Para tal, ''Maple'' oferece dois conjuntos de operadores booleanos para realizar operações em variáveis booleanas e literais. O primeiro conjunto consiste nos operadores ‘'''and'''’, ‘'''or'''’ e ‘'''not'''’. Em ''Maple'' também é disponibilizado os operadores '''&and''', '''&or''' e '''&not''' para operar sobre literais booleanos e variaveis variáveis com simplicidade. Eles estão disponiveis disponíveis no pacote '''logic''' da linguagem. A diferença entre os dois conjuntos esta na forma em que as expressões formadas usando eles são simplificadas, por exemplo:
<pre>true and false;
true &and false;</pre>
conduz, como podemos ver, a um erro de sintaxe. Ao invés disso, a ultima expressão deve ser escrita como
<pre>&not (&not a);</pre>
provendo nível extra com os parênntesesparênteses.
O operador booleano '''and''' é um operador binário, ele modela a semântica lógica '''and'''.
<pre>true and true;
false and true;
false and false;</pre>
Estes quatro exemplos, exaure todos os possiveis possíveis argumentos do operador '''and'''. Nos veremos que o resultado de aplicamos '''and''' para dois valores booleanos é true, precisamente quando o valor de ambos os operandos é '''true'''. Da mesma forma, o exemplo acima mostra que and é um operador comutativo. De fato, o segundo e o terceiro exemplo acima constituem uma prova deste fato.
Do mesmo modo, nós podemos mostrar que o operador '''or''' é comutativo. Seu comportamento pode ser completamente determinado pela aplicação dele sobre todos os possiveis pares de seus argumentos. (Faça isto agora!)
O operador '''not''', é um pouco diferente dos dois operadores binários '''&and''' e '''or''', no fato que '''not''' é um operador (prefixo) unário. Seu efeito é alternar entre os dois valores booleanos.
<pre>not true;
not false;</pre>
Os resultados não são muito surpreendentes.
Os operadores booleanos no Maple tem uma série de outras propriedades das quais você deve estar ciente. Ambos, '''and''' e '''or''' são operadores associativos. Por exemplo, dizer que '''and''' é um operador binário significa que sobre ele é aplicado dois argumentos de uma vez. Se nós desejarmos computar o valor de '''and''' para três valores ditos '''a''', '''b''' e '''c''', então duas expressões distintas serão formadas: '''(a and b) and c''' assim como '''a and (b and c)'''.
A propriedade associativa do operdor operador '''and''' assegura que ambas expressões mencionadas tem o mesmo valor.
Na verdade, tendo isso sido estabelecido, um argumento indutivo pode ser dado para mostrar que para qualquer sequência do tipo '''a1, a2...an''' de valores booleanos, todas as formas de colocação de parênteses nessa sequência tem o mesmo valor. O resultado disso é que parênteses podem ser descartados. O resumo de essa discussão é que as expressões do Maple, tais como
<pre>a and b and c and d;</pre>
Em outras palavras, a segunda aplicação de not desfaz o efeito da primeira.
Você pode fazer exatamente a mesma coisa com as tão faladas variantes inertes desses operadores (aquelas com o & prefixado em seus nomes). No entanto, nenhuma simplificação automática ocorrerá. Isto porque operadores booleanos inertes são usados primeiramente para trabalhar “simbolicamente” com operações booleanos; eles são operadores sobre os quais as ferramentas do pacote lógico do Maple são baseados.
Por exemplo, usando o operador inerte '''&not''', nos veremos que a expresãoexpressão<pre>&not( &not ( a ) );</pre>
Não é tão simplificado em '''a'''.
109

edits

Navigation menu