Operadores Lógicos e Tabela Verdade
Prof. Iuri Sônego Cardoso
Programação / Lógica de Programação
Conteúdo
• Introdução;
• Operadores Lógicos;
• Expressões e Prioridades;
• Tabela Verdade;
Prof. Iuri Sônego Cardoso
Introdução
• Vimos até aqui operadores aritméticos e relacionais.
o + - * / %
o == <= >= < > !=
Prof. Iuri Sônego Cardoso
Introdução
• Estes operadores operam com dados dos tipos numéricos (int e float) e caracteres (char).
• Existem operadores que operam com dados do tipo lógico (int) e servem para unir condições.
Prof. Iuri Sônego Cardoso
Operadores Lógicos
Prof. Iuri Sônego Cardoso
Operadores Lógicos
• São operadores que conectam duas sentenças lógicas.
• Operam com operandos do tipo lógico.
• Resultam em um valor lógico (1 ou 0).
Prof. Iuri Sônego Cardoso
Operadores Lógicos
• IMPORTANTE: Os operadores lógicos possuem
Prof. Iuri Sônego Cardoso
Operação Operador Prioridade Exemplo Resultado Não
(Negação) ! 1 ! X Oposto do valor de X
E
(Conjunção) && 2 X && Y
1 (verdadeiro) somente quando X e Y tiverem o valor 1 (verdadeiro). Caso um deles tenha o valor 0 (falso) resulta no valor 0 (falso).
Ou
(Disjunção) || 3 X || Y
1 (verdadeiro) nos casos em que pelo menos um dos operandos (X ou Y) tenha valor 1 (verdadeiro). Caso ambos tenham valor 0 (falso) resulta em 0(falso).
Operadores Lógicos
• Operador ! (NÃO lógico)
o Tabela Verdade
o A expressão !A lê-se como “não A”.
Prof. Iuri Sônego Cardoso
A !A
1 0
0 1
Operadores Lógicos
• Operador && (E lógico)
o Tabela Verdade
o Expressão A && B lê-se “A e B”.
Prof. Iuri Sônego Cardoso
A B A && B
1 1 1
1 0 0
0 1 0
0 0 0
Operadores Lógicos
• Exemplo com operador || (OU lógico)
o Tabela Verdade
o Expressão A || B lê-se “A ou B”.
Prof. Iuri Sônego Cardoso
A B A || B
1 1 1
1 0 1
0 1 1
0 0 0
Operadores Lógicos
• Exemplo com operador ! (não)
o Afirmativa: Vou para praia quando não chover
o Expressão: vouParaPraia = ! chovendo
o Tabela Verdade
Prof. Iuri Sônego Cardoso
chovendo vouParaPraia Significado
1 0 Não vou para praia (porque está chovendo).
0 1 Vou para praia (porque não está chovendo).
#include <stdio.h>
main() {
int chovendo, vouParaPraia;
printf("Digite se esta chovendo (1=sim, 0=nao): ");
scanf("%d", &chovendo);
vouParaPraia = ! chovendo;
printf("\nIrei para praia (0=falso, 1=verdadeiro): %d", vouParaPraia);
Prof. Iuri Sônego Cardoso }
Operadores Lógicos
• Exemplo com operador && (e)
o Afirmativa: Vou para praia se for dia de sol e tiver dinheiro
o Expressão: vouParaPraia = diaDeSol && tiverDinheiro o Tabela Verdade
Prof. Iuri Sônego Cardoso
diaDeSol tiverDinheiro vouParaPraia Significado
1 1 1 Vou para praia (porque é dia de sol
e tenho dinheiro).
1 0 0 Não vou para praia (porque não
tenho dinheiro).
0 1 0 Não vou para praia (porque não é
dia de sol).
#include <stdio.h>
main() {
int diaDeSol, tiverDinheiro, vouParaPraia;
char respDiaDeSol, respTiverDinheiro;
printf("É dia de sol? (s=sim, n=nao): ");
scanf("%c", &respDiaDeSol);
fflush(stdin);
printf("Tenho dinheiro? (S=sim, n=nao): ");
scanf("%c", &respTiverDinheiro);
fflush(stdin);
diaDeSol = respDiaDeSol == 'S';
tiverDinheiro = respTiverDinheiro == 'S';
vouParaPraia = diaDeSol && tiverDinheiro;
if (vouParaPraia) {
printf("\nVou para praia.");
Prof. Iuri Sônego Cardoso
Operadores Lógicos
• Exemplo com operador || (ou)
o Afirmativa: Vou para praia se eu estiver de férias ou for feriado
o Expressão: vouParaPraia = ferias || feriado o Tabela Verdade
Prof. Iuri Sônego Cardoso
ferias feriado vouParaPraia Significado
1 1 1 Vou para praia (porque estou de
férias e também é feriado).
1 0 1 Vou para praia (porque estou de
férias).
0 1 1 Vou para praia (porque é feriado).
Exercícios
• Exercício 1
Professor: Iuri Sônego Cardoso
Expressões e Prioridades
Prof. Iuri Sônego Cardoso
Expressões e Prioridades
Prioridade Operador(es) Exemplo(s) Grupo 1 ( )
funções
(X + Y) pow(X,Y)
Parênteses e funções. OBS: toda função pode ser tratada como um parênteses.
2 !
- +
! X + Y - Z
Operadores unários (um operando), tanto aritméticos quanto lógico.
3 * / % X * Y X / Y
Operadores Aritméticos de multiplicação e divisão.
4 +
-
X + Y W - Z
Operadores Aritméticos de adição e subtração.
5 == != > X == Y Operadores Relacionais
Prof. Iuri Sônego Cardoso
Expressões e Prioridades
Prioridade de Execução
1º ( ) funções 5 º == != > >= < <=
2º + - ! (unários) 6º &&
3º * / % 7º ||
4º + - (adição e subtração)
Prof. Iuri Sônego Cardoso
X = pow( 5 + abs(-5 - 1) , 2 ) + 1 > 10 && 6 > -6 X = pow( 5 + abs(-6) , 2 ) + 1 > 10 && 6 > -6
X = pow( 5 + 6 , 2 ) + 1 > 10 && 6 > -6 X = pow( 11 , 2 ) + 1 > 10 && 6 > -6
X = 121 + 1 > 10 && 6 > -6 X = 122 > 10 && 6 > -6
X = 1 && 6 > -6 X = 1 && 1
#include <stdio.h>
main() {
int diaDeSol, tiverDinheiro, vouParaPraia;
char respDiaDeSol, respTiverDinheiro;
printf("É dia de sol? (s=sim, n=nao): ");
scanf("%c", &respDiaDeSol);
fflush(stdin);
printf("Tenho dinheiro? (S=sim, n=nao): ");
scanf("%c", &respTiverDinheiro);
fflush(stdin);
diaDeSol = respDiaDeSol == 's';
tiverDinheiro = respTiverDinheiro == 's';
vouParaPraia = diaDeSol && tiverDinheiro;
if (vouParaPraia) {
printf("\nVou para praia.");
Prof. Iuri Sônego Cardoso
#include <stdio.h>
main() {
char respDiaDeSol, respTiverDinheiro;
printf("É dia de sol? (s=sim, n=nao): ");
scanf("%c", &respDiaDeSol);
fflush(stdin);
printf("Tenho dinheiro? (S=sim, n=nao): ");
scanf("%c", &respTiverDinheiro);
fflush(stdin);
if (respDiaDeSol == 's' && respTiverDinheiro == 's') { printf("\nVou para praia.");
}
else {
printf("\nNão vou para praia.");
Prof. Iuri Sônego Cardoso
Exercícios
• Exercício 2
Professor: Iuri Sônego Cardoso
Tabela Verdade
Professor: Iuri Sônego Cardoso
Tabela Verdade
• Tabelas Verdade são elaboradas considerando-se o número de variáveis de uma expressão;
• Todas as combinações possíveis de valores lógicos de uma expressão são dispostas em uma tabela verdade.
Professor: Iuri Sônego Cardoso
Tabela Verdade
• O número de linhas de uma tabela verdade é sempre igual ao número de combinações de valores possíveis entre as variáveis;
• O número de combinações possíveis é calculado pela fórmula:
C = 2n
o n: número de variáveis;
o c: número de combinações possíveis.
Professor: Iuri Sônego Cardoso
Tabela Verdade
• Tabela Verdade de expressão 3 variáveis:
o S = X || Y && Z
Professor: Iuri Sônego Cardoso
X Y Z S 0 0 0 0 0 0 1 0 0 1 0 0 0 1 1 1 1 0 0 1 1 0 1 1
Tabela Verdade
• Tabela Verdade de expressão 4 variáveis:
o S = !W && X || Y && Z
Professor: Iuri Sônego Cardoso
W X Y Z S 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 0 1 1 1 0 1 0 0 1 0 1 0 1 1 0 1 1 0 1 0 1 1 1 1
W X Y Z S 1 0 0 0 0 1 0 0 1 0 1 0 1 0 0 1 0 1 1 1 1 1 0 0 0 1 1 0 1 0 1 1 1 0 0 1 1 1 1 1
Tabela Verdade
• C = 2n
o Quando n = 1, C = 2
o Quando n = 2, c = 4
o Quando n = 3, c = 8
o Quando n = 4, c = 16
o Quando n = 5, c = 32
Professor: Iuri Sônego Cardoso
Tabela Verdade
• Variáveis repetidas em uma expressão são consideradas apenas uma vez.
o S = ! X || X && Y
o 2 variáveis diferentes: X e Y.
o C = 2n = 4
Professor: Iuri Sônego Cardoso X Y S
0 0 1 0 1 1 1 0 0
Exercícios
• Exercício 3
Professor: Iuri Sônego Cardoso
Considerações Finais
• Operadores Lógicos;
• Expressões e Prioridades;
• Tabela Verdade.
Prof. Iuri Sônego Cardoso
Bibliografia
• LOPES, A.; GARCIA, G. Introdução à programação: 500 algoritmos resolvidos. 15 ed. Rio de Janeiro: Campus, 2002.
• MEDINA, Marco; FERTIG, Cristina. Algoritmos e Programação: Teoria e Prática. 1 ed, São Paulo, Novatec, 2005. ISBN 857522073X.
• ARAÚJO, Everton Coimbra de. Algoritmos: fundamento e prática. 3.
ed. ampl. e atual Florianópolis: Visual Books, 2007. 414 p. ISBN 8575022091.
Prof. Iuri Sônego Cardoso
Iuri Sônego Cardoso iuri.cardoso@ifsc.edu.br
Prof. Iuri Sônego Cardoso