turma: matemática professor: andré luiz da costa carvalho e-mail: andre@icomp.ufam.edu.br iec037...

Post on 18-Apr-2015

113 Views

Category:

Documents

6 Downloads

Preview:

Click to see full reader

TRANSCRIPT

Turma: Matemática

Professor: André Luiz da Costa Carvalho

E-mail: andre@icomp.ufam.edu.br

IEC037Introdução à Programação de

ComputadoresAula 06 – Operadores Lógicos

Problema Inicial

Três jogadores (A, B, C) lançam dados. Ganha aquele que tirar a face com maior número.

Como determinar quem ganhou? Ou se houve empate?

Processo de resolução de problemas algorítmicos

Fim

Início

1

Definir as entradas e as saídas2

Projetar o algoritmo3

Converter o algoritmo em linguagem de programação4

Testar solução5

Decompor

Refinarpasso a passo

Identificar o problema

Problema Inicial:: Identificar o problema

Existem diversas possibilidades de vitória, empate entre dois jogadores e empate entre os três jogadores a se considerar.

Para não se perder na árvore de decisão, vamos considerar um cenário mais simples, onde os dados lançados pelos jogadores nunca empatam.

Problema Inicial Simplificado:: Árvore de decisão

J1 > J2

J1 > J3

J1 ganhou

J3 ganhou

J2 > J3

J2 ganhou

J3 ganhou

V F

V F V F

De volta ao Problema Inicial:: Árvore de decisão parcial

J1 == J2

J3 > J1

Empate J3 ganhou

J2 == J3

J1 > J2

Empate J1 ganhou

J1 == J3

J2 > J1

Empate J2 ganhou

Árvore simplificada

Como saber se houve empate?

V F

F V

F V

F V

V F

V F

De volta ao Problema Inicial:: Árvore de decisão completa

J1 == J2

J3 > J1

Empate J3 ganhou

J2 == J3

J1 > J2

Empate J1 ganhou

J1 == J3

J2 > J1

Empate J2 ganhou

J1 > J2

J1 > J3

J1 ganhou

J3 ganhou

J2 > J3

J2 ganhou

J3 ganhou

V F

F V

F V

F V

F V F V

V F

V F

F V

De volta ao Problema Inicial:: Testar Solução

J1 = 1, J2 = 2, J3 = 3J1 = 6, J2 = 5, J3 = 4J1 = 6, J2 = 5, J3 = 5J1 = 5, J2 = 5, J3 = 5J1 = 4, J2 = 5, J3 = 5

J1 == J2

J3 > J1

Empate J3 ganhou

J2 == J3

J1 > J2

Empate J1 ganhou

J1 == J3

J2 > J1

Empate J2 ganhou

J1 > J2

J1 > J3

J1 ganhou

J3 ganhou

J2 > J3

J2 ganhou

J3 ganhou

V F

F V

F V

F V

F V F V

V F

V F

F V

Problema 1

Duas pessoas jogam pedra, papel, tesoura. Como determinar quem ganhou?

Tipos de operadores

Operadores

Aritméticos

Relacionais

Lógicos

Comparando Operadores:: Entrada e saída

Resultado

OperadoraritméticoOperando1 Operando2

número número

número

OperadoresAritméticos

Resultado

OperadorrelacionalOperando1 Operando2

número número

Verdadeiro/falso

OperadoresRelacionais

Resultado

OperadorlógicoOperando1 Operando2

Verdadeiro/falso Verdadeiro/falso

Verdadeiro/falso

OperadoresLógicos

Operadores Lógicos

Operadores lógicos (ou booleanos) são utilizados para a efetuar avaliações entre valores lógicos (Verdadeiro ou Falso).

Operador Operação ExemplosNÃO Negação NÃO (COR == “azul”)

E Conjunção (ladoA == ladoB) E (ladoB == ladoC)

OU Disjunção (ladoA == ladoB) OU (ladoB == ladoC) OU (ladoA == ladoC)

Verifica se triângulo é equilátero.

Verifica se triângulo é isósceles.

Possui um único operando.

Operadores Lógicos:: Tabelas Verdade

Conjunto de todas as possibilidades de resultados de cada operador lógico.

A B (A) E (B)F F FF V FV F FV V V

A B (A) OU (B)F F FF V VV F VV V V

A NÃO (A)F VV F

Precedência entre operadores

Prioridade Operador lógico1 NÃO2 E3 OU

Prioridade Operador1 Parênteses mais internos2 Operadores aritméticos3 Operadores relacionais4 Operadores lógicos

Da esquerda para a direita

Juntando todos os operadores:: Exemplos

Exemplo A2 < 5 E 15/3 == 5

Exemplo BF OU 20 // (18/3) != (21/3) % 4

5

2 < 5 E 5 == 5V

V E V

V

V

6 7

F OU 20 // 6 != 7 % 433

F OU 3 != 3F

F OU FF

Problema 2

Quais valores de X, Y e Z fazem a expressão abaixo ser verdadeira?

A. X = F, Y = V, Z = FB. X = V, Y = V, Z = FC. X = F, Y = F, Z = FD. X = V, Y = V, Z = V

NÃO ( X E Y ) E ( NÃO Y OU Z )

Problema 3

Dados três valores X, Y e Z, verifique: Se eles podem ser os comprimentos dos lados de um

triângulo. Caso positivo, se o triângulo é equilátero, isósceles ou

escaleno.

Processo de resolução de problemas algorítmicos

Fim

Início

1

Definir as entradas e as saídas2

Projetar o algoritmo3

Converter o algoritmo em linguagem de programação4

Testar solução5

Decompor

Refinarpasso a passo

Identificar o problema

Problema 3:: Identificar o problema

Propriedade básica de um triângulo: O comprimento de cada lado de um triângulo é menor

do que a soma dos comprimento dos demais lados.

Triângulo cujos os lados têm

comprimentos iguais.

Equilátero

Triângulo que tem dois lados

com comprimentos

iguais.

Isósceles

Triângulo que tem os três lados com

comprimentos diferentes.

Escaleno

Problema 3:: Definir Entradas e Saídas

Grandeza Unidade de medida Faixa de valores

Entradas

Saídas

Grandeza Unidade de medida Faixa de valores

Entradas

X m > 0

Y m > 0

Z m > 0

Saídas mensagem ---“Não é triângulo”,

“Triângulo equilátero”,“Triângulo isósceles”,“Triângulo escaleno”

Problema 3:: Árvore de decisão

(X < Y + Z) E (Y < Z + X) E (Z < X + Y)

(X == Y) E (Y == Z)Não é

triângulo

F

Equilátero

V

V F

(X == Y) OU (Y == Z) OU (Z == X)

Isósceles Escaleno

V F

Condições:: Como NÃO montar (1)

(X == Y) resulta em V/F. A comparação == ocorre

entre dois operando aritméticos, mas o resultado de (X==Y) é lógico, não podendo ser comparado com Z.

Compare os valores dois a dois.

Junte os resultados de cada comparação – cujo resultado é V ou F – através de operadores lógicos:

Por que não é assim? Como deveria ser montada?

X == Y == Z

(X == Y) E (Y == Z)

Condições:: Como NÃO montar (2)

Cada comparação gera um valor lógico.

Mas a condição deve resultar em um único valor lógico.

Diversos valores lógicos são consolidados por operadores lógicos (e não por vírgulas).

Compare os valores dois a dois.

Junte os resultados de cada comparação através de operadores lógicos:

Por que não é assim? Como deveria ser montada?

X == Y, Y == Z, Z == X

(X == Y) OU (Y == Z) OU (Z == X)

Problema 3:: Solução

V

F

fim

C2

Equilátero

F

V

início

X, Y, Z

Não é triângulo

C1

(X < Y + Z) E (Y < Z + X) E (Z < X + Y)C1

(X == Y) E (Y == Z)C2

(X == Y) OU (Y == Z) OU (Z == X)C3

V

F

Escaleno

C3

Isósceles

Problema 3:: Testar Solução

V

F

fim

C2

Equilátero

F

V

início

X, Y, Z

Não é triângulo

C1

(X < Y + Z) E (Y < Z + X) E (Z < X + Y)C1

(X == Y) E (Y == Z)C2

(X == Y) OU (Y == Z) OU (Z == X)C3

V

F

Escaleno

C3

Isósceles

X = 1, Y = 2, Z = 3X = 4, Y = 4, Z = 4X = 3, Y = 2, Z = 3X = 3, Y = 4, Z = 5

Voltando ao Problema 1

Duas pessoas jogam pedra, papel, tesoura. Como determinar quem ganhou?

Voltando ao Problema 1:: Identificando o problema

Se J1 == J2 Empate

J1 ganha quando: (J1 == Pedra E J2 == Tesoura) OU (J1 == Papel E J2 == Pedra) OU (J1 == Tesoura E J2 == Papel)

J2 ganha caso contrário

Voltando ao Problema 1:: Solução Final

V

F

Empate

fim

Jogador 2 ganhou

C1

Jogador 1 ganhou

V

F

início

Sortear J1, J2

J1 == J2

(J1 == Pedra E J2 == Tesoura) OU(J1 == Papel E J2 == Pedra) OU(J1 == Tesoura E J2 == Papel)

C1

Voltando ao Problema 1:: Testando Solução

V

F

Empate

fim

Jogador 2 ganhou

C1

Jogador 1 ganhou

V

F

início

Sortear J1, J2

J1 == J2

(J1 == Pedra E J2 == Tesoura) OU(J1 == Papel E J2 == Pedra) OU(J1 == Tesoura E J2 == Papel)

C1

J1 J2

Problema 1 pode ficar mais interessante?

Como determinar o vencedor no jogo Pedra, Papel, Tesoura, Lagarto, Spock?

Problema 4

Sejam A, B, C três números inteiros quaisquer. Escreva um fluxograma para arrumá-los em ordem

decrescente.

Problema 4:: Identificar o problema

São dados três números quaisquer A, B, C. Eles devem ser arrumados em ordem decrescente. Pode-se considerar que a saída seja

N1 ≥ N2 ≥ N3 Agora, o problema se resume a atribuir:

A

BC

N1N2

N3

Problema 4:: Definir Entradas e Saídas

Grandeza Unidade de medida Faixa de valores

Entradas

Saídas

Grandeza Unidade de medida Faixa de valores

Entradas A, B, C --- Inteiros, qualquer ordem

Saídas N1, N2, N3 --- Inteiros, ordem decrescente

Problema 4:: Árvore de decisão

A > B

C > N1

N1 = AN2 = B

V F

N1 = BN2 = A

V F

N3 = N2N2 = N1N1 = C

C > N2

N3 = N2N2 = C

V F

N3 = C

Problema 4:: Solução

V

F

fim

C > N1

N3 = N2N2 = N1N1 = C

N1, N2, N3

V

F

início

A, B, C

N1 = AN2 = B

A > BV

F

N3 = C

C > N2

N3 = N2N2 = C

N1 = BN2 = A

1

1

Problema 4:: Teste

V

F

fim

C > N1

N3 = N2N2 = N1N1 = C

N1, N2, N3

V

F

início

A, B, C

N1 = AN2 = B

A > BV

F

N3 = C

C > N2

N3 = N2N2 = C

N1 = BN2 = A

1

1A = 1, B = 2, C = 3A = 4, B = 4, C = 4A = 1, B = 4, C = 3A = 3, B = 5, C = 5

Estrutura Condicional deSeleção Múltipla

Utilizada em situações onde há necessidade de se testar uma mesma variável (ou expressão) que pode assumir diversos valores.

Executa ações diferentes para valores (casos) diferentes.

início

ler signo

fim

áries?V Ganhará na

loteriaF

touro?

gêmeos?

Não saia de casa hoje!

Sorte no amor

F

F

V

V

tente de novo

Problema 5

A alíquota de imposto de renda é determinada de acordo com a faixa de renda mensal.

Escreva um algoritmo que determine a alíquota de imposto que uma pessoa deve pagar com base na renda mensal informada.

Faixa de renda mensal AlíquotaAté R$ 1.499,15 IsentoDe R$ 1.499,16 até R$ 2.246,75 7,5%De R$ 2.246,76 até R$ 2.995,70 15%De R$ 2.995,71 até R$ 3.743,19 22,5%acima de R$ 3.743,19 27,5%

Problema 5:: Definir Entradas e Saídas

Grandeza Unidade de medida Faixa de valores

Entradas

Saídas

Grandeza Unidade de medida Faixa de valores

Entradas Renda R$ ≥ 0

Saídas Alíquota % ≥ 0

Problema 5:: Solução

início

R

R ≤ 1499,15 V A = 0F

R ≤ 2264,75

R ≤ 2995,70

A = 7,5

A = 15

F

F

V

V

R ≤ 3743,19 A = 22,5F

Vfim

1

1

A

A = 27,5

Problema 6

A partir da renda mensal, como determinar o valor do imposto de renda devido?

Importante: as alíquotas são aplicadas de forma progressiva.

Problema 6:: Definir Entradas e Saídas

Grandeza Unidade de medida Faixa de valores

Entradas

Saídas

Grandeza Unidade de medida Faixa de valores

Entradas Renda R$ ≥ 0

Saídas Imposto R$ ≥ 0

Problema 6:: Projeto do Algoritmo

O que é o cálculo progressivo? Uma pessoa que recebe R$ 1.500 mensais não pagará

imposto de 7,5% sobre os R$ 1.500, mas sim sobre a diferença (1500,00 – 1499,15 = 0,85).

Da mesma maneira, quem recebe R$ 2.500 pagará: 7,5% de (2264,75 – 1499,15) 15% de (2500 – 2264,75)

E assim por diante...

Problema 6:: Projeto do Algoritmo

Para simplificar o desenho do fluxograma, vamos adotar as seguintes convenções:

Faixa de renda mensal ConstanteR$ 1.499,15 V1R$ 2.246,75 V2R$ 2.995,70 V3R$ 3.743,19 V4

Problema 6:: Solução

início

R

R > V1 V

imp = 0,075*(R-V1)

F R > V2

R > V3F

F

V

VR > V4F

V

imp = 0

imp = 0,075*(V2-V1) +

0,15*(R-V3)imp = 0,075*(V2-V1) +

0,15*(V3-V2) +0,225*(R-V4)

imp = 0,075*(V2-V1) +

0,15*(V3-V2) +0,225*(V4-V3)+

0,275*(R-V4)

fim

imp

Problema 7

Anos bissextos são definidos da seguinte forma:1. Anos divisíveis por 400 são

bissextos.2. Anos divisíveis por 100, mas não

por 400, não são bissextos.3. Anos divisíveis por 4, mas não

por 100, são bissextos.4. Todos os outros anos não são

anos bissextos. Escreva um fluxograma que

determine se um ano é bissexto ou não.

Problema 7:: Definir Entradas e Saídas

Grandeza Unidade de medida Faixa de valores

Entradas

Saídas

Grandeza Unidade de medida Faixa de valores

Entradas Ano ---

Saídas Mensagem --- {bissexto, não bissexto}

Problema 7:: Árvore de decisão

ano % 400 == 0

ano % 100 == 0Bissexto

V

Não bissexto

F

V F

ano % 4 == 0

Bissexto Não bissexto

V F

Problema 7:: Solução 1

V

F

fim

C2

Não bissexto

V

F

início

ano

Bissexto

C1

ano % 400 == 0C1

ano % 100 == 0C2

ano % 4 == 0C3

V

F

Não bissexto

C3

Bissexto

Problema 7:: Teste da Solução 1

V

F

fim

C2

Não bissexto

V

F

início

ano

Bissexto

C1

ano % 400 == 0C1

ano % 100 == 0C2

ano % 4 == 0C3

V

F

Não bissexto

C3

Bissexto

1900, 2000, 2014, 2016, 2100 e 2400

Problema 7:: Solução 2

ano % 400 == 0

ano % 100 == 0Bissexto

V

Não bissexto

F

V F

ano % 4 == 0

Bissexto Não bissexto

V F

Bissexto: ano % 400 == 0

(ano % 100 ≠ 0) E (ano % 4 == 0)

OU

Problema 7:: Solução 2

fim

Não bissexto

V F

início

ano

Bissexto

C1

(ano % 400 == 0)OU

((ano % 100 ≠ 0) E (ano % 4 == 0))

C1

Problema 7:: Teste da Solução 2

fim

Não bissexto

V F

início

ano

Bissexto

C1

(ano % 400 == 0)OU

((ano % 100 ≠ 0) E (ano % 4 == 0))

C1

1900, 2000, 2014, 2016, 2100 e 2400

Equivalência entre Expressões Booleanas

Na álgebra numérica, existem expressões equivalentes, ou seja, cujo valor é sempre o mesmo:

O mesmo ocorre com expressões booleanas:

𝑥 (𝑦+𝑧)𝑥𝑦+𝑥𝑧

num ≠ 0

NÃO (num == 0)

Equivalência entre Expressões Booleanas

(num ≠ 0) E (num ≠ 6)NÃO (num == 0 OU num == 6)

(num ≥ 0) E (num ≤ 6)(NÃO num < 0) E (NÃO num > 6)NÃO (num < 0 OU num > 6)

(num < 0) OU (num > 6)(NÃO num ≥ 0) E (NÃO num ≤ 6)NÃO (num ≥ 0 OU num ≤ 6)

... -8 -7 -6 -5 -4 -3 -2 -1 0 1 2 3 4 5 6 7 8 ...

... -8 -7 -6 -5 -4 -3 -2 -1 0 1 2 3 4 5 6 7 8 ...

... -8 -7 -6 -5 -4 -3 -2 -1 0 1 2 3 4 5 6 7 8 ...

Referências bibliográficas

Menezes, Nilo Ney Coutinho (2010). Introdução à Programação com Python. Editora Novatec.

Farrer, Harry (2011). Algoritmos Estruturados, 3ª edição. Editora LTC.

Forbellone, A. L. V.; Eberspächer, H. F. (2006) Lógica de Programação, 3ª edição. Pearson.

HETLAND, Magnus Lie (2008). Beginning Python: From Novice to Professional. Springer eBooks, 2ª edição. Disponível em: http://dx.doi.org/10.1007/978-1-4302-0634-7.

Dúvidas?

top related