Introdução à Programação de Computadores Aula 06 – Operadores Lógicos

Slides:



Advertisements
Apresentações semelhantes
Introdução à Programação: uma Abordagem Funcional
Advertisements

Data: 10 a 12 de fevereiro de 2009 e
Algoritmo I Aula 05 Pseudo-Linguagem.
Marco Antonio Montebello Júnior
INTRODUÇÃO À LÓGICA DIGITAL
03/08/2011 Professor Leomir J. Borba- –
Exercicio 1 Dados três valores X, Y e Z, Faça um programa em C para verificar se eles podem ser os comprimentos dos lados de um triângulo e, se forem,verificar.
Ludwig Krippahl, 2007 Programação para as Ciências Experimentais 2006/7 Teórica 3.
ALGORÍTMOS E ESTRUTURA DE DADOS SLIDE - 2
Teste de Software Parte 3.
Programação de Computadores - 2
Estruturas de repetição
Introdução à Programação
Então, vamos lá! Qual é esse conteúdo?
Introdução à Lógica de Programação (cont.)
Estruturas de Controle
Universidade Federal do Espírito Santo Programação II Professora: Norminda Luiza.
Comandos condicionais
Lógica de Programação Módulo II
Linguagem C Estruturas de Seleção.
INTRODUÇÃO À PROGRAMAÇÃO
PRC Bruno Correa.
Lógica Matemática.
Estruturas de Controle
Introdução à Programação de Computadores
Semana 03: Comandos de desvio de fluxo. Expressões lógicas.
Professor: Juliano Lucas Gonçalves
Introdução à Programação
Aula 5 - Operadores, Expressões e Funções Matemáticas
Capítulo 3 Estruturas de Controle
Introdução à Programação de Computadores
Introdução à Programação de Computadores
Estruturas de Repetição
Estrutura de dados, pseudocódigo
FTIN Formação Técnica em Informática
Christopher Freire Souza
Universidade Federal de Alagoas – UFAL Centro de Tecnologia – CTEC
Introdução a Lógica Prof. Luiz Carlos Gabi.
Fábio de Oliveira Borges
Semana 03 Comandos de desvio de fluxo. Expressões lógicas.
Construção Tabela-verdade
Operadores Relacionais, Lógicos e comandos de condição
Introdução à Programação de Computadores
Introdução à Programação de Computadores
Introdução à Programação de Computadores Aula 08 – Variáveis em Python
Lógica de Programação/ Algoritmos Engenharia Produção 2014
Instituto Federal de Santa Catarina
Aula 6 - Estruturas de Controle
Linguagem e Ambiente Scratch
Folha de Cálculo Professor: Pedro Lopes Ano Lectivo 2010/2011.
Introdução à Programação de Computadores Aula 13 – Tabelas em Python
Como Programar? Dicas para começar a programar bem
Faculdade Talentos Humanos - FACTHUS - Algoritmo I - Rogério Rodrigues
BC-0505 Processamento da Informação
ESTRUTURAS DE CONTROLE
Igor Steinmacher, MSc. O maravilhoso mundo da Lógica de Programação.
Universidade do Estado de Santa Catarina – CCT/UDESC
Turma: Professor: Página: Ambiente virtual: IEC037 Introdução à Programação de Computadores Aula 05 – Estruturas Condicionais.
Algoritmos.
Algoritmos e Estruturas de Dados I – Estrutura Condicional Profa. Mercedes Gonzales Márquez.
PROGRAMAÇÃO II – PARTE 3 Profa. Maria Augusta Constante Puget.
ALGORITMOS E PROGRAMAÇÃO
Exercícios Faça um algoritmos para trocar uma lampada queimada.
Álgebra Booleana Faculdade Pitágoras Prof. Edwar Saliba Júnior
Colégio da Imaculada Colégio da Imaculada Curso Técnico em Informática
Programação estruturada unidade 2
Algoritmos e Estruturas de Dados I – Tipos de dados
Curso: Técnico Integrado em Informática Disciplina : Fundamentos de Lógica e Algoritmo Resumo do 1º Bimestre Profª. Katiuscia Lopes dos Santos.
IFRN Técnico em Informática para Internet Estruturas Condicionais Prof. Gilbert Azevedo.
Desvios Encadeados e Operadores Lógicos Cleone Silva
Transcrição da apresentação:

Introdução à Programação de Computadores Aula 06 – Operadores Lógicos IEC037 Introdução à Programação de Computadores Aula 06 – Operadores Lógicos Turma: Matemática Professor: André Luiz da Costa Carvalho E-mail: andre@icomp.ufam.edu.br

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? O diagrama está aqui para destacar que, no momento, serão abordadas as primeiras 3 etapas: Identificando e entendendo o problema Entradas e saídas Algoritmo

Processo de resolução de problemas algorítmicos Início 1 Identificar o problema 2 Definir as entradas e as saídas Decompor 3 Projetar o algoritmo Refinar passo a passo Este slide serve para fazer a correspondência do diagrama de resolução de problemas gerais (D1) para o diagrama de resolução de problemas algorítmicos (D2). Em D1, três passos (Identificar alternativas, Selecionar melhor solução e Listar instruções) foram fundidos em um único passo (Projetar algoritmo), em D2, como mostra o retângulo explicativo verde. Além disso, foi introduzido um passo entre Listar instruções e Avaliar a solução, em D1, gerando o passo Converter algoritmo..., em D2, como mostra o retângulo explicativo verde-água. Obs.: a cor do retângulo Projetar algoritmo é a mistura dos RGB dos retângulos Identificar alternativas, Selecionar melhor solução e Listar instruções.  Converter o algoritmo em linguagem de programação 4 5 Testar solução Fim

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. O diagrama está aqui para destacar que, no momento, serão abordadas as primeiras 3 etapas: Identificando e entendendo o problema Entradas e saídas Algoritmo

Problema Inicial Simplificado :: Árvore de decisão J1 > J2 V F J1 > J3 J2 > J3 O diagrama está aqui para destacar que, no momento, serão abordadas as primeiras 3 etapas: Identificando e entendendo o problema Entradas e saídas Algoritmo V F V F J1 ganhou J3 ganhou J2 ganhou J3 ganhou

De volta ao Problema Inicial :: Árvore de decisão parcial Como saber se houve empate? J1 == J2 V F J3 > J1 J2 == J3 F V V F Empate J3 ganhou J1 > J2 J1 == J3 F V V F Empate J1 ganhou J2 > J1 Árvore simplificada F V Empate J2 ganhou

De volta ao Problema Inicial :: Árvore de decisão completa J1 == J2 V F J3 > J1 J2 == J3 V F F V Empate J3 ganhou J1 > J2 J1 == J3 F V V F Empate J1 ganhou J2 > J1 J1 > J2 F V F V Empate J2 ganhou J1 > J3 J2 > J3 F V F V J1 ganhou J3 ganhou J2 ganhou J3 ganhou

De volta ao Problema Inicial :: Testar Solução J1 == J2 V F J3 > J1 J2 == J3 V F F V Empate J3 ganhou J1 > J2 J1 == J3 F V V F Empate J1 ganhou J2 > J1 J1 > J2 F V F V Empate J2 ganhou J1 > J3 J2 > J3 F V F V J1 = 1, J2 = 2, J3 = 3 J1 = 6, J2 = 5, J3 = 4 J1 = 6, J2 = 5, J3 = 5 J1 = 5, J2 = 5, J3 = 5 J1 = 4, J2 = 5, J3 = 5 J1 ganhou J3 ganhou J2 ganhou J3 ganhou

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 número número Operadores Aritméticos Resultado Operador aritmético Operando1 Operando2 número número número Operadores Relacionais Resultado Operador relacional Operando1 Operando2 Verdadeiro/falso Verdadeiro/falso Verdadeiro/falso Operadores Lógicos Resultado Operador lógico Operando1 Operando2 Verdadeiro/falso

Operadores Lógicos Operadores lógicos (ou booleanos) são utilizados para a efetuar avaliações entre valores lógicos (Verdadeiro ou Falso). Possui um único operando. Operador Operação Exemplos NÃ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. Definir Operadores Lógicos Verifica se triângulo é isósceles.

Operadores Lógicos :: Tabelas Verdade Conjunto de todas as possibilidades de resultados de cada operador lógico. A NÃO (A) F V A B (A) E (B) F V A B (A) OU (B) F V Tabelas Verdade

Precedência entre operadores Prioridade Operador lógico 1 NÃO 2 E 3 OU Da esquerda para a direita Prioridade Operador 1 Parênteses mais internos 2 Operadores aritméticos 3 Operadores relacionais 4 Operadores lógicos

Juntando todos os operadores :: Exemplos Exemplo A 2 < 5 E 15/3 == 5 Exemplo B F OU 20 // (18/3) != (21/3) % 4 5 6 7 2 < 5 E 5 == 5 F OU 20 // 6 != 7 % 4 V V 3 3 V E V F OU 3 != 3 V F F OU F F

Problema 2 Quais valores de X, Y e Z fazem a expressão abaixo ser verdadeira? X = F, Y = V, Z = F X = V, Y = V, Z = F X = F, Y = F, Z = F 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. O diagrama está aqui para destacar que, no momento, serão abordadas as primeiras 3 etapas: Identificando e entendendo o problema Entradas e saídas Algoritmo

Processo de resolução de problemas algorítmicos Início 1 Identificar o problema 2 Definir as entradas e as saídas Decompor 3 Projetar o algoritmo Refinar passo a passo Este slide serve para fazer a correspondência do diagrama de resolução de problemas gerais (D1) para o diagrama de resolução de problemas algorítmicos (D2). Em D1, três passos (Identificar alternativas, Selecionar melhor solução e Listar instruções) foram fundidos em um único passo (Projetar algoritmo), em D2, como mostra o retângulo explicativo verde. Além disso, foi introduzido um passo entre Listar instruções e Avaliar a solução, em D1, gerando o passo Converter algoritmo..., em D2, como mostra o retângulo explicativo verde-água. Obs.: a cor do retângulo Projetar algoritmo é a mistura dos RGB dos retângulos Identificar alternativas, Selecionar melhor solução e Listar instruções.  Converter o algoritmo em linguagem de programação 4 5 Testar solução Fim

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 X m > 0 Y Z Saídas mensagem --- “Não é triângulo”, “Triângulo equilátero”, “Triângulo isósceles”, “Triângulo escaleno”   Grandeza Unidade de medida Faixa de valores Entradas Saídas

Problema 3 :: Árvore de decisão (X < Y + Z) E (Y < Z + X) E (Z < X + Y) F V Não é triângulo (X == Y) E (Y == Z) V F Equilátero (X == Y) OU (Y == Z) OU (Z == X) V F Isósceles Escaleno

Condições :: Como NÃO montar (1) X == Y == Z Por que não é assim? Como deveria ser montada? (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:  (X == Y) E (Y == Z)

Condições :: Como NÃO montar (2) X == Y, Y == Z, Z == X Por que não é assim? Como deveria ser montada? 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:  (X == Y) OU (Y == Z) OU (Z == X)

Problema 3 :: Solução C1 C2 C3 início (X < Y + Z) E (Y < Z + X) E (Z < X + Y) C1 X, Y, Z (X == Y) E (Y == Z) C2 V C1 (X == Y) OU (Y == Z) OU (Z == X) C3 F F C2 F V C3 V Não é triângulo Equilátero Isósceles Escaleno fim

Problema 3 :: Testar Solução início (X < Y + Z) E (Y < Z + X) E (Z < X + Y) C1 X, Y, Z (X == Y) E (Y == Z) C2 V C1 (X == Y) OU (Y == Z) OU (Z == X) C3 F F C2 F V C3 V Não é triângulo Equilátero Isósceles Escaleno X = 1, Y = 2, Z = 3 X = 4, Y = 4, Z = 4 X = 3, Y = 2, Z = 3 X = 3, Y = 4, Z = 5 fim

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 (J1 == Pedra E J2 == Tesoura) OU (J1 == Papel E J2 == Pedra) OU (J1 == Tesoura E J2 == Papel) C1 início Sortear J1, J2 F J1 == J2 V F C1 V Empate Jogador 1 ganhou Jogador 2 ganhou fim

Voltando ao Problema 1 :: Testando Solução (J1 == Pedra E J2 == Tesoura) OU (J1 == Papel E J2 == Pedra) OU (J1 == Tesoura E J2 == Papel) C1 início Sortear J1, J2 F J1 == J2 J1 J2 V F C1 V Empate Jogador 1 ganhou Jogador 2 ganhou fim

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 B C N1 N2 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 V F N1 = A N2 = B N1 = B N2 = A C > N1 V F N3 = N2 N2 = N1 N1 = C C > N2 V F N3 = N2 N2 = C N3 = C

Problema 4 :: Solução início 1 A, B, C F C > N1 F V C > N2 F N3 = N2 N2 = N1 N1 = C N3 = N2 N2 = C N3 = C N1 = A N2 = B N1 = B N2 = A 1 N1, N2, N3 fim

Problema 4 :: Teste A = 1, B = 2, C = 3 A = 4, B = 4, C = 4 início 1 A, B, C F C > N1 F V C > N2 F A > B V V N3 = N2 N2 = N1 N1 = C N3 = N2 N2 = C N3 = C N1 = A N2 = B N1 = B N2 = A 1 N1, N2, N3 fim

Estrutura Condicional de Seleçã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 Ganhará na loteria áries? V F Não saia de casa hoje! touro? V Formalizar definição do comando “SELEÇÃO ... CASO” (estrutura condicional composta). F gêmeos? V Sorte no amor F tente de novo fim

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íquota Até R$ 1.499,15 Isento De 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 %

Problema 5 :: Solução início R R ≤ 1499,15 A = 0 1 R ≤ 2264,75 A = 7,5 V A = 0 1 F R ≤ 2264,75 V A = 7,5 A F R ≤ 2995,70 V A = 15 F fim R ≤ 3743,19 V A = 22,5 F A = 27,5 1

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

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 Constante R$ 1.499,15 V1 R$ 2.246,75 V2 R$ 2.995,70 V3 R$ 3.743,19 V4

Problema 6 :: Solução início R R > V1 R > V2 imp = 0 R > V3 F R > V2 imp = 0 V F R > V3 imp = 0,075*(R-V1) V F R > V4 imp = 0,075*(V2-V1) + 0,15*(R-V3) F 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) imp fim

Problema 7 Anos bissextos são definidos da seguinte forma: Anos divisíveis por 400 são bissextos. Anos divisíveis por 100, mas não por 400, não são bissextos. Anos divisíveis por 4, mas não por 100, são bissextos. 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 V F Bissexto ano % 100 == 0 V F Não bissexto ano % 4 == 0 V F Bissexto Não bissexto

Problema 7 :: Solução 1 C1 C2 C3 início ano % 400 == 0 ano F C1 ano % 4 == 0 C3 V F C2 F V C3 V Bissexto Não bissexto Bissexto Não bissexto fim

Problema 7 :: Teste da Solução 1 início ano % 400 == 0 C1 ano ano % 100 == 0 C2 F C1 ano % 4 == 0 C3 V F C2 F V C3 V Bissexto Não bissexto Bissexto Não bissexto 1900, 2000, 2014, 2016, 2100 e 2400 fim

Problema 7 :: Solução 2 ano % 400 == 0 OU Bissexto V Não bissexto F ano % 4 == 0 Bissexto: ano % 400 == 0 OU (ano % 100 ≠ 0) E (ano % 4 == 0)

Problema 7 :: Solução 2 C1 início (ano % 400 == 0) OU ((ano % 100 ≠ 0) E (ano % 4 == 0)) C1 ano V F C1 Bissexto Não bissexto fim

Problema 7 :: Teste da Solução 2 início (ano % 400 == 0) OU ((ano % 100 ≠ 0) E (ano % 4 == 0)) C1 ano V F C1 Bissexto Não bissexto 1900, 2000, 2014, 2016, 2100 e 2400 fim

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) ... -8 -7 -6 -5 -4 -3 -2 -1 1 2 3 4 5 6 7 8 (num ≥ 0) E (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 1 2 3 4 5 6 7 8 (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 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?