Considere os conectivos lógicos vistos na lógica proposicional para negação ( ¬ ), conjunção (
) e disjunção (
). Mostre, com exemplos, expressões booleanas usadas no contexto de uso de commandos (atribuição, decisão, etc.) em linguagens de programação, ressaltando a representação sintática dos conectivos lógicos em expressões de cada uma das 3 linguagens de programação: C, Java (ou Harskel) e Python. Apresente
exemplos, em cada linguagem, para cada caso, descrevendo instruções que contenham tais expressões booleanas, mostrando as avaliações delas, em termos de valores lógicos verdadeiro (1) ou falso (0).
Passo 1
O enunciado pede que eu mostre, com exemplos, expressões booleanas que usam os conectivos lógicos negação, conjunção e disjunção — isto é,
,
e
— no contexto de comandos de linguagens de programação (atribuição, decisão, etc.). Precisa também ressaltar a representação sintática desses conectivos em três linguagens: C, Java (ou Haskell) e Python. Para cada caso (negação, conjunção e disjunção) devo apresentar
exemplos em cada linguagem (logo,
exemplos ×
linguagens ×
conectivos =
exemplos no total), descrevendo instruções que contenham tais expressões booleanas e mostrando a avaliação delas em termos de valores lógicos verdadeiro (
) ou falso (
).
Informações relevantes fornecidas ou assumidas:
- Conectivos lógicos a tratar: negação
, conjunção , disjunção . - Linguagens: C, Java (uso Java nos exemplos), Python.
- Para cada conectivo em cada linguagem: apresentar
exemplos com instruções (atribuição/if/etc.) e mostrar a avaliação (resultado booleano) em termos de (verdadeiro) ou (falso). - Mostrar sintaxe do conectivo em cada linguagem (por exemplo:
!,&&,||em C/Java;not,and,orem Python).
Passo 2
Mini-aula rápida e prática sobre o que os conectivos significam (para solidificar a intuição antes de ver código):
- Negação (
): inverte o valor lógico. Se uma proposição vale então vale ; se vale então vale .
Verdadeiro/Falso:, . - Conjunção (
): é o “E”. A expressão é verdadeira apenas quando e são ambos verdadeiros. Tabela:
- Disjunção (
): é o “OU” inclusivo. A expressão é verdadeira se pelo menos uma entre e for verdadeira. Tabela:
Dica prática: em programação, muitas vezes construímos
e
como comparações (ex.:
,
) e depois combinamos com os conectivos.
Passo 3
Sintaxe dos conectivos nas linguagens pedidas (resumo rápido):
- Negação
: - C/Java: uso de
!para negar uma expressão booleana (ex.:!cond). - Python: uso de
not(ex.:not cond).
- C/Java: uso de
- Conjunção
: - C/Java: uso de
&&(ex.:cond1 && cond2). - Python: uso de
and(ex.:cond1 and cond2).
- C/Java: uso de
- Disjunção
: - C/Java: uso de
||(ex.:cond1 || cond2). - Python: uso de
or(ex.:cond1 or cond2).
- C/Java: uso de
Observação rápida: em C, valores numéricos também podem ser usados como condição (zero = falso, não-zero = verdadeiro); em Java e Python é mais comum usar diretamente valores booleanos ou expressões de comparação (em Java,
if requer boolean explícito).Passo 4
Negação (
) — explicação curta e exemplos
- Semântica:
é verdadeiro quando é falso, e vice-versa. - Vou dar
exemplos em cada linguagem. Para cada exemplo descrevo as variáveis iniciais, a instrução, e a avaliação passo a passo até chegar em ou .
C — exemplos de negação:
- Exemplo C-neg1:
- Variáveis iniciais:
int a = 0;(em lógica:significa falso). - Instrução:
if (!a) { /* ramo */ } - Avaliação: em C,
aé falso porque. Então é verdadeiro. Em símbolos: . - Resultado final da expressão
: .
- Exemplo C-neg2:
- Variáveis iniciais:
int b = 5;(qualquer não-zero é verdadeiro). - Instrução:
if (!b) { /* ramo */ } else { /* outro ramo */ } - Avaliação:
é verdadeirosince . Então é falso. Em símbolos: (aqui interpretamos como na lógica). - Resultado final da expressão
: .
Java — exemplos de negação:
- Exemplo Java-neg1:
- Variáveis iniciais:
boolean flag = false;(logo). - Instrução:
if (!flag) System.out.println("vai entrar"); - Avaliação:
. Em termos numéricos: . - Resultado: expressão
!flag=.
- Exemplo Java-neg2:
- Variáveis iniciais:
boolean cond = (x > 0);e suponhax = 3(logo). - Instrução:
if (!cond) ... - Avaliação:
. Em termos numéricos: . - Resultado: expressão
!cond=.
Python — exemplos de negação:
- Exemplo Py-neg1:
- Variáveis iniciais:
x = 0(em condições,0é falso). - Instrução:
if not x: print("entra") - Avaliação:
not x=not 0=True. Em números:. - Resultado:
not x=.
- Exemplo Py-neg2:
- Variáveis iniciais:
s = "hello"(string não-vazia é verdadeira). - Instrução:
if not s: ... else: ... - Avaliação:
sé truthy (verdadeiro), logonot séFalse. Em números:. - Resultado:
not s=.
Passo 5
Conjunção (
) — explicação curta e exemplos
- Semântica:
é somente se ambos e são . Caso contrário é . - Mostrar
exemplos por linguagem.
C — exemplos de conjunção:
- Exemplo C-and1:
- Variáveis:
int x = 4, y = 2; - Expressões:
x > 0ey > 0. Em símbolos:, . Aqui , . - Instrução:
if (x > 0 && y > 0) ... - Avaliação:
. - Resultado da expressão
x > 0 && y > 0:.
- Exemplo C-and2:
- Variáveis:
int a = 3, b = -1; - Expressões:
é (pois ), é (pois é falso). - Instrução:
if (a < 5 && b > 0) ... - Avaliação:
. - Resultado: expressão
a < 5 && b > 0=.
Java — exemplos de conjunção:
- Exemplo Java-and1:
- Variáveis:
int a = 10, b = 2; - Testes:
a % b == 0(verifica divisibilidade):porque é divisível por . a > 0é. - Instrução:
if (a % b == 0 && a > 0) ... - Avaliação:
. - Resultado: expressão =
.
- Exemplo Java-and2:
- Variáveis:
boolean loggedIn = true; int attempts = 5; - Testes:
, é (pois é falso). - Instrução:
if (loggedIn && attempts < 3) ... - Avaliação:
. - Resultado: expressão =
.
Python — exemplos de conjunção:
- Exemplo Py-and1:
- Variáveis:
a = 7; b = 3 - Testes:
a > béTrue(), b >= 1éTrue(). - Instrução:
if a > b and b >= 1: ... - Avaliação:
. - Resultado:
a > b and b >= 1=.
- Exemplo Py-and2:
- Variáveis:
x = 0; y = 10 - Testes:
x != 0éFalse(), y > 0éTrue(). - Instrução:
if x != 0 and y > 0: ... - Avaliação:
. - Resultado:
x != 0 and y > 0=.
Passo 6
Disjunção (
) — explicação curta e exemplos
- Semântica:
é se pelo menos um entre ou é ; é somente quando ambos são . - Novamente,
exemplos por linguagem.
C — exemplos de disjunção:
- Exemplo C-or1:
- Variáveis:
int hour = 8; int weekend = 0; - Testes:
é ( ), é . - Instrução:
if (hour < 9 || weekend == 1) ... - Avaliação:
. - Resultado: expressão =
.
- Exemplo C-or2:
- Variáveis:
int a = 0, b = 0; - Testes:
é , é . - Instrução:
if (a != 0 || b > 0) ... - Avaliação:
. - Resultado: expressão =
.
Java — exemplos de disjunção:
- Exemplo Java-or1:
- Variáveis:
boolean hasKey = false; boolean admin = true; - Testes:
, . - Instrução:
if (hasKey || admin) ... - Avaliação:
. - Resultado: expressão =
.
- Exemplo Java-or2:
- Variáveis:
int x = -5; - Testes:
é , é . - Instrução:
if (x > 0 || x == 0) ... - Avaliação:
. - Resultado: expressão =
.
Python — exemplos de disjunção:
- Exemplo Py-or1:
- Variáveis:
name = "" ; default_name = "guest" - Testes:
nameé string vazia (falsy →), default_nameé truthy (). - Instrução:
user = name or default_name - Avaliação:
name or default_nameavalia paradefault_nameporquenameé falso; em booleano:. - Resultado booleano da expressão lógica subjacente =
(o valor verdadeiro corresponde a default_namecomo valor resultante).
- Exemplo Py-or2:
- Variáveis:
a = 0; b = False - Testes:
aé falsy (), béFalse(). - Instrução:
if a or b: ... - Avaliação:
. - Resultado: expressão =
.
Passo 7
Observações pedagógicas finais (como aplicar isso na prova):
- Passo-a-passo para avaliar uma expressão composta:
- Calcule o valor lógico de cada comparação/variável simples (ex.:
dá ou ). - Aplique a prioridade dos operadores (em geral,
!/nottem maior precedência, depois&&/and, depois||/or; parênteses forçam avaliação). - Use as tabelas de verdade acima para combinar subresultados até o resultado final.
- Calcule o valor lógico de cada comparação/variável simples (ex.:
- Em provas, escreva explicitamente os valores intermédios (
ou , ou ), e então mostre a aplicação das regras (ex.: ). Isso deixa claro o raciocínio e evita erros. - Lembre-se da diferença sintática entre linguagens:
!,&&,||em C/Java;not,and,orem Python.
Resposta
C-neg1: .
C-neg2: .
Java-neg1: .
Java-neg2: .
Py-neg1: .
Py-neg2: .
C-and1: .
C-and2: .
Java-and1: .
Java-and2: .
Py-and1: .
Py-and2: .
C-or1: .
C-or2: .
Java-or1: .
Java-or2: .
Py-or1: .
Py-or2: .
!a com a = 0 avalia para
C-neg2:
!b com b = 5 avalia para
Java-neg1:
!flag com flag = false avalia para
Java-neg2:
!cond com cond = (x>0) e x=3 avalia para
Py-neg1:
not x com x = 0 avalia para
Py-neg2:
not s com s = "hello" avalia para
C-and1:
x > 0 && y > 0 com x=4,y=2 avalia para
C-and2:
a < 5 && b > 0 com a=3,b=-1 avalia para
Java-and1:
a % b == 0 && a > 0 com a=10,b=2 avalia para
Java-and2:
loggedIn && attempts < 3 com loggedIn=true,attempts=5 avalia para
Py-and1:
a > b and b >= 1 com a=7,b=3 avalia para
Py-and2:
x != 0 and y > 0 com x=0,y=10 avalia para
C-or1:
hour < 9 || weekend == 1 com hour=8,weekend=0 avalia para
C-or2:
a != 0 || b > 0 com a=0,b=0 avalia para
Java-or1:
hasKey || admin com hasKey=false,admin=true avalia para
Java-or2:
x > 0 || x == 0 com x=-5 avalia para
Py-or1:
name or default_name com name="" , default_name="guest" tem booleano equivalente
Py-or2:
a or b com a=0,b=False avalia para