Introdução à Programação: uma Abordagem Funcional Programação I Engenharia de Computação Prof.ª Claudia Boeres 2009/1 Expressões Lógicas e o tipo Boolean • importante para a tomada de decisão; • tipo boolean: tipo de dados para representar a satisfação ou não de uma condição; • George Boole: estudou e formalizou operações com estes tipos de valores. Proposições Lógicas sentenças matemáticas: afirmações elementos matemáticos; O número três é par O número cinco é maior que zero sobre Proposições lógicas: afirmações elementos do cotidiano. Hoje está chovendo Maria é irmã de José sobre uma proposição lógica é verdadeira ou falsa Sentenças fechadas e abertas Sentenças fechadas: todos os componentes da sentença estão explicitados, podendo ser avaliada imediatamente, conferindo o que elas afirmam com o mundo ao qual elas se referem; 7 + 3 < 20 Sentenças abertas: alguns componentes da sentença não estão devidamente explicitados. Para avaliá-la é preciso instanciar esses componentes x>5 Sentenças compostas Formada a partir das proposições lógicas simples Hoje é domingo e faz sol 3 > 2 e 3 < 10 Flamengo não é o melhor time do Rio de Janeiro Avaliação de sentenças compostas Como se avalia esse tipo de sentença? Hoje faz sol e eu vou à praia Nesta manhã Joãozinho não vai à escola Amanhã choverá ou ficará nublado Tabelas de verdade e Palavras lógicas: e, ou e não p V V F F q V F V F peq V F F F ou p q V V F F V F V F p ou q V V V F nã p não p o V F F V O tipo de dados boolean Formado pelas constantes True e False e as operações lógicas aval :: <sentença> {True, False} Operadores Lógicos Operador lógico Operação lógica (Haskell) e ou não && || not Operadores relacionais operador significado == igualdade /= Diferença < Menor Menor ou <= igual > Maior Maior ou >= igual exemplo (2 + 3) == (8 – 3) 5 /= (4 * 2 -3) (2 + 3) < 6 (2 * 3) <= 6 (4 + 2) > (2 * 3) (8 – 3 * 2) >= (15 div 3) resultado True False True True False False Qual é a resposta da avaliação das expressões abaixo? > 3 < 5 && 7 > 2 > (3 + 5) == 8 && 30 /= 24 && 10 > 4 > not (7 > 8) || 4^2 == 16 && 50.5 <= 100 Definição de funções booleanas Funções booleanas: o contradomínio destas funções consiste no conjunto {True, False} Exemplos: Verificar se um número é ímpar: impar x = mod x 2 /= 0 Verificar se um número pertence ao intervalo [0,1]: intervalo0-1 x = x >= 0 && x <= 1 Mais exemplos Verificar se um número está dentro do intervalo [a,b], com a < b; Verificar se um número é maior que o outro; Verificar se um ponto pertence ao primeiro quadrante do plano cartesiano Hierarquia dos operadores relacionais e lógicos Operadores aritméticos: todos estão no mesmo nível de hierarquia, que está abaixo dos operadores aritméticos e de funções e primitivas; Operadores lógicos && e ||: estão abaixo dos operadores aritméticos e o operador && tem precedência sobre ||; O operador not tem prioridade idêntica a qualquer outra primitiva do Haskell; Se a expressão possui operadores no mesmo nível de hierarquia, são avaliados da esquerda para a direita. Exemplos > 3+4 > 7 False :: Bool > 3>4 && 5 < 9 || 3 ==3 True :: Bool Exercício Faça uma função que verifique se um ponto P (x, y) pertence ao círculo de raio r e centro Q (x1, y1). P (x,y) r Q (x1,y1)