Mudanças entre as edições de "Operadores Logicos"
(→Operador 'E') |
|||
(18 revisões intermediárias pelo mesmo usuário não estão sendo mostradas) | |||
Linha 1: | Linha 1: | ||
− | + | As estruturas de programação, como a [[Estruturas_de_Seleção | estrutura de seleção]] e a [[Estruturas_de_Repetição | estrutura de repetição]] podem mudar o comportamento de um código. Dependendo de como o código está montado essas estruturas permitem a execução (ou repetição) de parte do código apenas em determinadas situações. O que vai decidir se o código dentro daquela estrutura deve ser executado (como em estruturas de seleção) ou se deve ser repetido (como em estruturas de repetição) é seu parâmetro lógico. | |
− | Os operadores lógicos | + | Os parâmetros lógicos podem ser verdadeiros ou falsos, se forem verdadeiros a condição é cumprida e o código dentro da estrutura é executado (ou repetido, dependendo da estrutura), se não, aquela área do código é ignorada ou redirecionada. |
+ | |||
+ | Por exemplo: | ||
+ | |||
+ | [[Estruturas_de_Seleção | Estrutura de seleção]] | ||
+ | <pre> | ||
+ | SE chovendo ENTÃO | ||
+ | ESCREVA("Melhor levar um guarda-chuva"); | ||
+ | |||
+ | </pre> | ||
+ | |||
+ | [[Estruturas_de_Repetição | Estrutura de repetição]] | ||
+ | <pre> | ||
+ | ENQUANTO chovendo FAÇA | ||
+ | ESCREVA("Não vou sair de casa, ainda está chovendo"); | ||
+ | |||
+ | ESCREVA("Finalmente parou de chover!"); | ||
+ | </pre> | ||
+ | |||
+ | Os exemplos acima possuem em seu parâmetro uma variável que pode ser verdadeira ou falsa, porem, os parâmetros lógicos também podem ser construídos como expressões aritméticas. | ||
+ | |||
+ | Por exemplo: | ||
+ | <pre> | ||
+ | SE idade MENOR QUE 18 ENTÃO | ||
+ | ESCREVA("Você é menor de idade!"); | ||
+ | </pre> | ||
+ | |||
+ | <pre> | ||
+ | SE preço MAIOR OU IGUAL QUE 10 ENTÃO | ||
+ | ESCREVA("Isso é bem caro!"); | ||
+ | </pre> | ||
+ | |||
+ | <pre> | ||
+ | SE minhaIdade DIFERENTE QUE suaIdade ENTÃO | ||
+ | ESCREVA("Não temos a mesma idade!"); | ||
+ | </pre> | ||
+ | |||
+ | Apesar de toda flexibilidade no código que os parâmetros lógicos possibilitam, é fácil se perder usando-os e criando um código confuso e difícil de entender. | ||
+ | Por exemplo: | ||
+ | |||
+ | <pre> | ||
+ | SE(sol) ENTÃO | ||
+ | SE (calor) ENTÃO | ||
+ | ESCREVA("Maria vai ao parque! :) "); | ||
+ | </pre> | ||
+ | |||
+ | <pre> | ||
+ | SE(preço <= 10) ENTÃO | ||
+ | ESCREVA("eu posso comprar isso") | ||
+ | SE NÃO | ||
+ | SE(dinheiro > 10) ENTÃO | ||
+ | escreva("eu posso comprar isso") | ||
+ | </pre> | ||
+ | |||
+ | Para isso possuímos operadores lógicos: | ||
== Operador 'E' == | == Operador 'E' == | ||
− | |||
O operador 'E', também chamado de conjunção, funciona como a palavra 'e', fornecendo a intercessão entre dois elementos. Para a condição ser cumprida os dois elementos precisam ser verdadeiros. | O operador 'E', também chamado de conjunção, funciona como a palavra 'e', fornecendo a intercessão entre dois elementos. Para a condição ser cumprida os dois elementos precisam ser verdadeiros. | ||
Por exemplo: "Maria vai ao parque se estiver sol e calor", nesse exemplo Maria vai ao parque apenas se as duas condições forem cumpridas, se houver sol mas não estiver calor ou se não houver sol mas estiver calor Maria não vai ao parque. | Por exemplo: "Maria vai ao parque se estiver sol e calor", nesse exemplo Maria vai ao parque apenas se as duas condições forem cumpridas, se houver sol mas não estiver calor ou se não houver sol mas estiver calor Maria não vai ao parque. | ||
Linha 20: | Linha 73: | ||
<pre> | <pre> | ||
− | + | Pseudocódigo | |
+ | |||
+ | SE(sol E calor) ENTÃO | ||
+ | ESCREVA("Maria vai ao parque! :) "); | ||
+ | SE NÃO | ||
+ | ESCREVA("Maria não vai ao parque! :( "); | ||
+ | |||
+ | ________________________ | ||
+ | |||
+ | Linguagem C | ||
+ | |||
+ | if(sol && calor){ | ||
+ | printf("Maria vai ao parque! :) "); | ||
+ | }else{ | ||
+ | printf("Maria não vai ao parque! :( "); | ||
+ | } | ||
+ | ________________________ | ||
+ | |||
+ | C++ | ||
+ | |||
+ | if(sol && calor){ | ||
+ | cout << "Maria vai ao parque! :) "; | ||
+ | }else{ | ||
+ | cout << "Maria não vai ao parque! :( "; | ||
+ | } | ||
+ | ________________________ | ||
+ | |||
+ | Python | ||
+ | |||
+ | if sol and calor: | ||
+ | print('Maria vai ao parque! :) ') | ||
+ | else: | ||
+ | print('Maria não vai ao parque! :( ') | ||
</pre> | </pre> | ||
==Operador 'OU'== | ==Operador 'OU'== | ||
− | // | + | |
+ | Diferente do operador lógico 'E' que necessita que ambos os parâmetros lógicos sejam verdadeiros para a condição ser cumprida, o operador 'OU' precisa que apenas um deles seja verdadeiro. Esse operador lógico só será falso quando ambos os parâmetros lógicos forem falsos. | ||
+ | |||
+ | <table border="1" cellpadding="2"> | ||
+ | <caption>A tarefa foi feita?</caption> | ||
+ | <tr><th> Eu fiz <th> Você fez <th> A tarefa foi feita? | ||
+ | <tr><th>Sim<td>Sim<td>Sim | ||
+ | <tr><th>Sim<td>Não<td>Sim | ||
+ | <tr><th>Não<td>Sim<td>Sim | ||
+ | <tr><th>Não<td>Não<td>Não | ||
+ | </table> | ||
<pre> | <pre> | ||
− | + | Pseudocódigo | |
+ | |||
+ | SE(euFiz OU voceFez) ENTÃO | ||
+ | ESCREVA("A tarefa foi feita"); | ||
+ | SE NÃO | ||
+ | ESCREVA("A tarefa não foi feita"); | ||
+ | |||
+ | ________________________ | ||
+ | |||
+ | Linguagem C | ||
+ | |||
+ | if(euFiz || voceFez){ | ||
+ | printf("A tarefa foi feita"); | ||
+ | }else{ | ||
+ | printf("A tarefa não foi feita"); | ||
+ | } | ||
+ | ________________________ | ||
+ | |||
+ | C++ | ||
+ | |||
+ | if(euFiz || voceFez){ | ||
+ | cout << "A tarefa foi feita"; | ||
+ | }else{ | ||
+ | cout << "A tarefa não foi feita"; | ||
+ | } | ||
+ | ________________________ | ||
+ | |||
+ | Python | ||
+ | |||
+ | if euFiz or voceFez: | ||
+ | print('A tarefa foi feita') | ||
+ | else: | ||
+ | print('A tarefa não foi feita') | ||
</pre> | </pre> | ||
+ | |||
==Operador 'NÃO'== | ==Operador 'NÃO'== | ||
+ | Diferente dos outros operadores já citados esse operador necessita apenas de um parâmetro lógico para funcionar. A função desse operador é alterar a leitura do parâmetro lógico para seu valor inverso, se esse parâmetro possuir o valor 'verdadeiro', com esse operador, será se lido o valor 'falso', e se o parâmetro possuir o valor 'falso' será lido o valor 'verdadeiro'. | ||
+ | Algumas das representações mais classicas do símbolo de negação são: ~, !, NOT, e ¬ | ||
+ | |||
+ | <table border="1" cellpadding="2"> | ||
+ | <caption>Maria vai ao parque?</caption> | ||
+ | <tr><th> Valor <th> ~Valor | ||
+ | <tr><th>Sim<td>Não | ||
+ | <tr><th>Não<td>Sim | ||
+ | </table> | ||
+ | |||
+ | <pre> | ||
+ | Pseudocódigo | ||
+ | |||
+ | SE(~sol) ENTÃO | ||
+ | ESCREVA("Está escuro"); | ||
+ | |||
+ | ________________________ | ||
+ | |||
+ | Linguagem C | ||
+ | |||
+ | if(!sol){ | ||
+ | printf("Está escuro"); | ||
+ | } | ||
+ | ________________________ | ||
+ | |||
+ | C++ | ||
+ | |||
+ | if(!sol){ | ||
+ | cout << "Está escuro"; | ||
+ | } | ||
+ | ________________________ | ||
+ | |||
+ | Python | ||
+ | |||
+ | if not sol: | ||
+ | print('Está escuro') | ||
+ | |||
+ | </pre> | ||
+ | |||
− | + | ==Combinação de operadores== | |
+ | Além de toda flexibilidade que os operadores lógicos nos trazem, existem uma outra propriedade que nos permite ir além, a combinação de operadores. Quando usamos um operador para retirar um valor de um ou dois parâmetros lógicos (port ex: está sol *e* calor) essa expressão retornará um parâmetro lógico, verdadeiro ou falso, com isso em mente podemos combinar operadores para analises mais complexas. | ||
<pre> | <pre> | ||
− | + | SE chovendo E !guardachuva ENTÃO | |
+ | ESCREVA("Não posso sair, vou me molhar") | ||
</pre> | </pre> | ||
+ | |||
+ | |||
+ | <pre> | ||
+ | SE sol E calor E fimDeSemana ENTÃO | ||
+ | ESCREVA("Hoje podemos ir à praia!") | ||
+ | </pre> | ||
+ | |||
+ | |||
+ | <br> | ||
+ | |||
+ | |||
+ | === Problemas === | ||
+ | |||
+ | * [https://www.urionlinejudge.com.br/judge/pt/problems/view/1794 1794 - Lavanderia] |
Edição atual tal como às 09h27min de 29 de junho de 2020
As estruturas de programação, como a estrutura de seleção e a estrutura de repetição podem mudar o comportamento de um código. Dependendo de como o código está montado essas estruturas permitem a execução (ou repetição) de parte do código apenas em determinadas situações. O que vai decidir se o código dentro daquela estrutura deve ser executado (como em estruturas de seleção) ou se deve ser repetido (como em estruturas de repetição) é seu parâmetro lógico.
Os parâmetros lógicos podem ser verdadeiros ou falsos, se forem verdadeiros a condição é cumprida e o código dentro da estrutura é executado (ou repetido, dependendo da estrutura), se não, aquela área do código é ignorada ou redirecionada.
Por exemplo:
SE chovendo ENTÃO ESCREVA("Melhor levar um guarda-chuva");
ENQUANTO chovendo FAÇA ESCREVA("Não vou sair de casa, ainda está chovendo"); ESCREVA("Finalmente parou de chover!");
Os exemplos acima possuem em seu parâmetro uma variável que pode ser verdadeira ou falsa, porem, os parâmetros lógicos também podem ser construídos como expressões aritméticas.
Por exemplo:
SE idade MENOR QUE 18 ENTÃO ESCREVA("Você é menor de idade!");
SE preço MAIOR OU IGUAL QUE 10 ENTÃO ESCREVA("Isso é bem caro!");
SE minhaIdade DIFERENTE QUE suaIdade ENTÃO ESCREVA("Não temos a mesma idade!");
Apesar de toda flexibilidade no código que os parâmetros lógicos possibilitam, é fácil se perder usando-os e criando um código confuso e difícil de entender. Por exemplo:
SE(sol) ENTÃO SE (calor) ENTÃO ESCREVA("Maria vai ao parque! :) ");
SE(preço <= 10) ENTÃO ESCREVA("eu posso comprar isso") SE NÃO SE(dinheiro > 10) ENTÃO escreva("eu posso comprar isso")
Para isso possuímos operadores lógicos:
Operador 'E'
O operador 'E', também chamado de conjunção, funciona como a palavra 'e', fornecendo a intercessão entre dois elementos. Para a condição ser cumprida os dois elementos precisam ser verdadeiros. Por exemplo: "Maria vai ao parque se estiver sol e calor", nesse exemplo Maria vai ao parque apenas se as duas condições forem cumpridas, se houver sol mas não estiver calor ou se não houver sol mas estiver calor Maria não vai ao parque.
//TABELA VERDADE
Sol | Calor | Ela vai ao parque? |
---|---|---|
Sim | Sim | Sim |
Sim | Não | Não |
Não | Sim | Não |
Não | Não | Não |
Pseudocódigo SE(sol E calor) ENTÃO ESCREVA("Maria vai ao parque! :) "); SE NÃO ESCREVA("Maria não vai ao parque! :( "); ________________________ Linguagem C if(sol && calor){ printf("Maria vai ao parque! :) "); }else{ printf("Maria não vai ao parque! :( "); } ________________________ C++ if(sol && calor){ cout << "Maria vai ao parque! :) "; }else{ cout << "Maria não vai ao parque! :( "; } ________________________ Python if sol and calor: print('Maria vai ao parque! :) ') else: print('Maria não vai ao parque! :( ')
Operador 'OU'
Diferente do operador lógico 'E' que necessita que ambos os parâmetros lógicos sejam verdadeiros para a condição ser cumprida, o operador 'OU' precisa que apenas um deles seja verdadeiro. Esse operador lógico só será falso quando ambos os parâmetros lógicos forem falsos.
Eu fiz | Você fez | A tarefa foi feita? |
---|---|---|
Sim | Sim | Sim |
Sim | Não | Sim |
Não | Sim | Sim |
Não | Não | Não |
Pseudocódigo SE(euFiz OU voceFez) ENTÃO ESCREVA("A tarefa foi feita"); SE NÃO ESCREVA("A tarefa não foi feita"); ________________________ Linguagem C if(euFiz || voceFez){ printf("A tarefa foi feita"); }else{ printf("A tarefa não foi feita"); } ________________________ C++ if(euFiz || voceFez){ cout << "A tarefa foi feita"; }else{ cout << "A tarefa não foi feita"; } ________________________ Python if euFiz or voceFez: print('A tarefa foi feita') else: print('A tarefa não foi feita')
Operador 'NÃO'
Diferente dos outros operadores já citados esse operador necessita apenas de um parâmetro lógico para funcionar. A função desse operador é alterar a leitura do parâmetro lógico para seu valor inverso, se esse parâmetro possuir o valor 'verdadeiro', com esse operador, será se lido o valor 'falso', e se o parâmetro possuir o valor 'falso' será lido o valor 'verdadeiro'. Algumas das representações mais classicas do símbolo de negação são: ~, !, NOT, e ¬
Valor | ~Valor |
---|---|
Sim | Não |
Não | Sim |
Pseudocódigo SE(~sol) ENTÃO ESCREVA("Está escuro"); ________________________ Linguagem C if(!sol){ printf("Está escuro"); } ________________________ C++ if(!sol){ cout << "Está escuro"; } ________________________ Python if not sol: print('Está escuro')
Combinação de operadores
Além de toda flexibilidade que os operadores lógicos nos trazem, existem uma outra propriedade que nos permite ir além, a combinação de operadores. Quando usamos um operador para retirar um valor de um ou dois parâmetros lógicos (port ex: está sol *e* calor) essa expressão retornará um parâmetro lógico, verdadeiro ou falso, com isso em mente podemos combinar operadores para analises mais complexas.
SE chovendo E !guardachuva ENTÃO ESCREVA("Não posso sair, vou me molhar")
SE sol E calor E fimDeSemana ENTÃO ESCREVA("Hoje podemos ir à praia!")