TÉCNICAS DE PROGRAMAÇÃO 1 OPERADORES RELACIONAIS E EXPRESSÕES BOOLEANAS 2015.2 Morganna Carmem Diniz Estrutura de Controle - SeleçãoRevisão Seleção – Esta estrutura define o ponto de bifurcação onde cada via conduz a um processamento distinto. O formato de seleção da instrução de dois ramos é se <condição> então <bloco 1> senão <bloco 2> Estrutura de Controle - SeleçãoRevisão O formato de seleção da instrução se <condição> então <bloco 1> senão <bloco 2> se a <condição> for verdadeira é executado o <bloco 1> se a <condição> for falsa é executado o <bloco 2> V Condição F bloco 2 bloco 1 ação z Exemplo Uma <condição> é expressa utilizando-se os operadores de relação <, >, =, ≥, ≤ e ≠ A expressão que se obtém relacionando-se entre si variáveis e ou constantes por meio de operadores de relação chama-se expressão booleana. Uma expressão booleana assume somente dois valores mutuamente exclusivos true (verdadeiro) false (falso) Definições básicas- Operadores Aritméticos e Relacionais Tipo de dados Inteiro Elemento: número inteiros com sem sinal operações notação relações notação Adição + menor < Subtração - maior > Multiplicação * igual = diferente ≠ menor ou igual <= maior ou igual >= quociente inteiro / (ou DIV) resto da divisão %(ou MOD) Definições básicas- Operadores Aritméticos e Relacionais Tipo de dados Real Elemento: número racionais com ou sem sinal operações notação relações notação adição + menor < subtração - maior > multiplicação * igual = quociente inteiro / ( ou Div) diferente ≠ menor ou igual <= maior ou igual >= Exercício - Condicional 1. Dado três números inteiros (a, b e c) , onde os dois primeiros definem o limite inferior e superior do intervalo, verificar se o terceiro número (c) está dentro do intervalo definido anteriormente (a,b). Análise do Problema: Entrada: 50, 100, 64 Saída 64 está dentro do intervalo entre 50 e 100 Entrada: 35, 60, 14 Saída 14 está fora do intervalo entre 35 e 60 Exercício Esboço entrada de dados (a, b, c) Verificar se c é maior que a e menor que b saída do resultado ( se c está no intervalo entre a e b) Exercício Esboço entrada de dados (a, b, c) Verificar se c é maior que a e menor que b No passo acima podemos pensar na seguinte combinação de condicionais: Verificar se c é maior que a então Verificar se c menor que b então imprimir ( c, “está no intervalo entre” , a, “e”, b) senão imprimir ( c, “não está no intervalo entre” , a, “e”, b) senão imprimir ( c, “não está no intervalo entre” , a, “e”, b) saída do resultado ( se c está no intervalo entre a e b) Exercício - Condicional Dado três números inteiros (a, b e c) , onde os dois primeiros definem o limite inferior e superior do intervalo, verificar se o terceiro número (c) está dentro do intervalo definido anteriormente (a,b). ContidoNoIntervalo(){ leia(a,b,c); se (c > a ) então se (c < b) então imprima (c,”está no intervalo entre”,a,“e”,b); senão imprima (c,” não está no intervalo entre”,a,“e”,b); senão imprima (c,” não está no intervalo entre”,a,“e”,b); } Exercício - Condicional ContidoNoIntervalo(){ leia(a,b,c); se (c > a ) então se (c < b) então imprima (c,”está entre”,a,“e”,b); no intervalo senão imprima (c,” não está intervalo entre”,a,“e”,b); no senão imprima (c,” não está intervalo entre”,a,“e”,b); } no Podemos ver que temos repetidos duas vezes a instrução para imprimir que : c não entre a e b Exercício - Condicional ContidoNoIntervalo(){ leia(a,b,c); se (c > a ) então se (c < b) então imprima (c,”está no intervalo entre”,a,“e”,b); senão imprima (c,” não está intervalo entre”,a,“e”,b); no senão imprima (c,” não está intervalo entre”,a,“e”,b); } no Será que podemos unir os dois testes dos condicionais em um único condicional? Exercício - Condicional ContidoNoIntervalo(){ leia(a,b,c); se (c > a ) então se (c < b) então imprima (c,”está no intervalo entre”,a,“e”,b); senão imprima (c,” não está intervalo entre”,a,“e”,b); no senão imprima (c,” não está intervalo entre”,a,“e”,b); } Será que podemos unir os dois testes dos condicionais em um único condicional? no Resposta: SIM! Utilizando o operador Booleano “e” Condição - Expressão Booleana Tipo de dados Booleano (lógico) Elemento : os valores lógicos true (verdadeiro) e false (falso) Constantes: T e F que representam os valores true e false, respectivamente operações negação notação não conjunção e disjunção ou Essas operações são binárias. São avaliadas a condição da direta e da esquerda do operador para avaliar o valor resultante da aplicação do operador. Condição - Expressão Booleana Tipo de dados Booleano (lógico) Tabela Verdade os valores lógicos true (verdadeiro) e false (falso) constantes T e F que representam os valores true e false, respectivamente Dado as condições a e b e o resultado das suas avaliações, vamos analisar o resultado da aplicação dos operadores: a b não a aeb a ou b F F T F F F T T F T T F F F T T T F T T Condição - Expressão Booleana Exemplo: Sejam a = 34, b =100, c = 47 Condição 1 : c > a avaliação da Condição1: Verdadeiro ( T) Condição 2 : c < b avaliação da Condição2: Verdadeiro ( T) Pela tabela Condição1 e Condição2 = T e T Resultado da avaliação : Verdadeiro (T) Exercício – CondicionalVoltando ao Exemplo Dado três números inteiros (a, b e c) , onde os dois primeiros definem o limite inferior e superior do intervalo, verificar se o terceiro número (c) está dentro do intervalo definido anteriormente (a, b). Análise do Problema: Entrada: 50, 100, 64 Saída 64 está dentro do intervalo entre 50 e 100 Entrada: 35, 60, 14 Saída 14 está fora do intervalo entre 35 e 60 Exercício – CondicionalVoltando ao Exemplo ContidoNoIntervalo(){ leia(a,b,c); se (c > a ) então se (c < b) então imprima (c,”está no intervalo entre”,a,“e”,b); senão imprima (c,” não está intervalo entre”,a,“e”,b); no senão imprima (c,” não está intervalo entre”,a,“e”,b); } Será que podemos unir os dois testes dos condicionais em um único condicional? no Resposta: SIM! Utilizando o operador Booleano “e” Exercício – Condicional – Novo algoritmo ContidoNoIntervalo(){ leia(a,b,c); se ((c > a ) e (c < b) )então imprima (c,”está no intervalo entre”,a,“e”,b); senão imprima (c,” não está intervalo entre”,a,“e”,b); } no Exercício Lembre-se no exercício fazer A análise do problema; A definição do objetivo; As especificações da entrada e saída; e A descrição do algoritmo em pseudo-código. Exercício: intervalo Dados um número n e quatro outros, a, b, c e d, correspondentes, respectivamente, às extremidades dos intervalos [a,b] e [c,d], sendo a < b, c < d e a < c • determinar se n pertence somente ao intervalo [a,b] ou somente ao intervalo [c,d] ou, se n pertence a ambos ou se n não pertence a nenhum dos dois • em cada caso imprimir uma mensagem conveniente • os números são reais. Quais as situações possíveis? Referências D.D Salvetti e L.M. Barbosa, Algoritmos, Pearson Makron Books, 1998. Notas de aulas do curso presencial de Técnicas de Programação1 - UNIRIO - Desenvolvidos pelas professoras: Geiza Maria Hamazaki da Silva e Adriana C. F Alvim – primeiro semestre de 2011.