Estruturas de Seleção Parte I Seleção Simples e Composta Prof. João Henrique Kleinschmidt Material elaborado pelos professores de PI
Objetivos Reconhecer a necessidade do uso de estruturas de seleção (decisão) Aprender a utilizar operadores relacionais Aprender a sintaxe da Estrutura de Seleção Simples SE-ENTÃO na linguagem PORTUGOL Aprender a sintaxe da Estrutura de Seleção Composta SE-ENTÃO-SENÃO na linguagem PORTUGOL Aprender a representação de seleção simples e composta na forma de fluxograma
Objetivos Aprender a resolver problemas que requeiram o uso de ESTRUTURAS DE SELEÇÃO com a aplicação da Técnica de Interpretação de Enunciados
Relembrando...
Estrutura Sequencial Todos os problemas (exemplos) que tratamos até o momento foram resolvidos com estruturas sequenciais Uma estrutura sequencial é um conjunto de comandos que serão executados em uma sequência linear, de cima para baixo Os comandos serão executados na mesma ordem em que foram escritos C1 C2... C n
Um novo Problema (Estudo de Caso)
Problema Escreva um algoritmo para calcular a média de um aluno a partir de duas notas. O programa deve exibir a média e também uma mensagem informando se o aluno foi aprovado ou reprovado. Sabese que o aluno é reprovado se sua média é inferior a 6. SAÍDA: Quais os resultados que o algoritmo deve fornecer?
Problema Escreva um algoritmo para calcular a média de um aluno a partir de duas notas. O programa deve exibir a média e também uma mensagem informando se o aluno foi aprovado ou reprovado. Sabe-se que o aluno é reprovado se sua média é inferior a 6. SAÍDA: média e mensagem (Aprovado ou Reprovado) ENTRADA: Quais os insumos necessários para se obter a saída?
Problema Bacharelado em Ciência e Tecnologia Escreva um algoritmo para calcular a média de um aluno a partir de duas notas. O programa deve exibir a média e também uma mensagem informando se o aluno foi aprovado ou reprovado. Sabese que o aluno é reprovado se sua média é inferior a 6. SAÍDA: média e mensagem (Aprovado ou Reprovado) ENTRADA: duas notas (n1 e n2) PROCESSAMENTO: Como transformar os insumos na saída?
Problema Escreva um algoritmo para calcular a média de um aluno a partir de duas notas. O programa deve exibir a média e também uma mensagem informando se o aluno foi aprovado ou reprovado. Sabese que o aluno é reprovado se sua média é inferior a 6. SAÍDA: média e mensagem (Aprovado ou Reprovado) ENTRADA: duas notas (n1 e n2) PROCESSAMENTO: Media = (n1 + n2) / 2 Como verificar se foi aprovado ou reprovado?
ESTRUTURAS DE Desvios Condicionais ou de Seleção
Desvio Condicional Um desvio condicional é usado para decidir se um conjunto de instruções deve, ou não, ser realizado verdadeiro <condição> Comandos... falso Necessário sempre que os programas encontrem sequências alternativas de ações, dependendo do valor de determinada condição F L U X O G R A M A
Condição Uma Condição é formulada com o uso de Operadores Relacionais Os símbolos dos OPERADORES RELACIONAIS são: igual = diferente <> ou!= Maior > Maior ou igual >= Menor < Menor ou igual <= IGUAL ==
Seleção Simples
Desvio Condicional Simples (Seleção Simples) No desvio condicional simples uma condição é avaliada e, se o resultado for verdadeiro, um bloco de instruções é executado F L U X O G R A M A Pseudocódigo se <condição> então <instruções> fimse
Desvio Condicional Simples (Seleção Simples) EXEMPLO 1 café = amargo? falso verdadeiro Adoçar o café F L U X O G R A M A
Desvio Condicional Simples (Seleção Simples) EXEMPLO 2 idade > 15 falso verdadeiro Imprimir Já Pode Votar F L U X O G R A M A
Desvio Condicional Simples (Seleção Simples) Exemplo: Se a média das notas do aluno for maior ou igual a 6, imprimir Aprovado Pseudocódigo media >=6 verdadeiro Imprimir Aprovado se <condição> então <instruções> fimse SINTAXE PORTUGOL se ( media >= 6) { falso } escreva( Aprovado ) Obs. 1 : No PORTUGOL o então é omitido Obs. 2.: No PORTUGOL o a condição deve estar entre parênteses
Seleção Simples - Solução Entrada de Dados Processamento E Saída de Dados
Seleção Simples - Solução Como imprimir Reprovado (caso não seja Aprovado )?
Seleção Composta
Desvio Condicional Composta (Seleção Composta) No desvio condicional composto, uma condição é avaliada e: se o resultado for verdadeiro, um bloco de instruções A é executado. Caso contrário, outro bloco de instruções B será executado Media >=6 verdadeiro BLOCO A Imprimir Aprovado BLOCO B falso Imprimir Reprovado
Desvio Condicional Composta (Seleção Composta) Pseudocódigo se (<condição> ) então <instruções> senão <instruções> fimse
Desvio Condicional Composta (Seleção Composta) Exemplo: Se a média das notas do aluno for maior ou igual a 6, imprimir Aprovado. Caso contrário, imprimir Reprovado Pseudocódigo se (media >= 6) então escreva ( Aprovado ) senão escreva ( Reprovado ) fimse SINTAXE PORTUGOL se ( media >= 6 ) { escreva( Aprovado ) } senao { escreva( Reprovado ) }
Seleção Composta - Solução
Uma Seleção Composta X Duas Seleções Simples
Uma Seleção Composta X Duas Seleções Simples Pseudocódigo se (media >= 6) então escreva ( Aprovado ) senão escreva ( Reprovado ) fimse Pseudocódigo se (media >= 6) então escreva ( Aprovado ) fimse se (media < 6) então escreva ( Reprovado ) fimse ATENÇÃO: Porque a solução com DUAS seleções SIMPLES parece computacionalmente pior?
Uma Seleção Composta X Duas Seleções Simples SINTAXE PORTUGOL se ( media >= 6 ) { escreva( Aprovado ) senao { escreva( Reprovado ) } SINTAXE PORTUGOL se ( media >= 6 ) { escreva( Aprovado ) } se ( media < 6 ) { escreva( Reprovado ) } ATENÇÃO: Na solução com DUAS seleções simples, mesmo que o primeiro teste seja VERDADEIRO, o segundo teste de condição também será feito
Uma Seleção Composta X Duas Seleções Simples SINTAXE PORTUGOL se ( media >= 6 ) { escreva( Aprovado ) senao { escreva( Reprovado ) } SINTAXE PORTUGOL se ( media >= 6 ) { escreva( Aprovado ) } se ( media < 6 ) { escreva( Reprovado ) } ATENÇÃO: A tendência é querer usar DUAS seleções SIMPLES (porque a lógica parece mais natural). Mas recomenda-se usar SELEÇÃO COMPOSTA, nessa situação.
Sobre Organização do Programa
Qual solução parece mais legível? SOLUÇÃO A SOLUÇÃO B
Qual solução parece mais legível? Note que na SOLUÇÃO B a cada início { de BLOCO há um pequeno deslocamento do código pra direita. Isso chama-se INDENTAR SOLUÇÃO A SOLUÇÃO B
Boas Práticas na Organização do Programa indentação (recuo) é um neologismo derivado da palavra em inglês indentation. Também encontram-se as formas identação e endentação é um termo aplicado ao código fonte de um programa para indicar que os elementos hierarquicamente dispostos têm o mesmo avanço relativamente à posição (x,0). A maioria das linguagens não ligam para a formatação, ou seja, funciona de qualquer jeito. Mas para um ser humano ler o código é sempre bom deixar o código organizado. Já a linguagem PYTHON liga para a endentação, pois é a indentação que define os blocos. Não existem início e fim
A : NÃO Indentado Indentar, Identar ou Endentar 1. Note que no ENDENTADO a cada início { de BLOCO há um pequeno deslocamento do código pra direita 2. No entao deslocam-se as instruções dentro dele para a direita. O mesmo ocorre no senão B : Indentado
Um novo Problema (Estudo de Caso)
Exercício Escreva um programa para calcular o peso ideal de uma pessoa, utilizando as seguintes fórmulas: Para homens: (72.7 * altura) 58 Para mulheres: (62.1 * altura) 44.7 SAÍDA: Quais os resultados que o algoritmo deve fornecer?
Discussão da Solução Escreva um programa para calcular o peso ideal de uma pessoa, utilizando as seguintes fórmulas: Para homens: (72.7 * altura) 58 Para mulheres: (62.1 * altura) 44.7 SAÍDA: PesoIdeal ENTRADA: Quais os insumos necessários para se obter a saída? altura e sexo
Discussão da Solução SAÍDA:PesoIdeal Escreva um programa para calcular o peso ideal de uma pessoa, utilizando as seguintes fórmulas: Para homens: (72.7 * altura) 58 Para mulheres: (62.1 * altura) 44.7 ENTRADA: altura e sexo PROCESSAMENTO: Como transformar os insumos na saída?
Discussão da Solução SAÍDA: PesoIdeal Bacharelado em Ciência e Tecnologia Escreva um programa para calcular o peso ideal de uma pessoa, utilizando as seguintes fórmulas: Para homens: (72.7 * altura) 58 Para mulheres: (62.1 * altura) 44.7 ENTRADA: altura e sexo PROCESSAMENTO: se sexo = M então PesoIdeal = (72.7 * altura) 58 senão PesoIdeal = (62.1 * altura) 44.7
Discussão da Solução Bacharelado em Ciência e Tecnologia Escreva um programa para calcular o peso ideal de uma pessoa, utilizando as seguintes fórmulas: Para homens: (72.7 * altura) 58 Para mulheres: (62.1 * altura) 44.7 SAÍDA: PesoIdeal ENTRADA: altura e sexo PROCESSAMENTO: se sexo = M então PesoIdeal = (72.7 * altura) 58 senão PesoIdeal = (62.1 * altura) 44.7
Solução em PORTUGOL
Solução em PORTUGOL Incremente o programa, mostrando uma mensagem de alerta caso a pessoa esteja ACIMA DO PESO IDEAL São necessárias outras informações para emitir essa mensagem de alerta?
Solução Incrementada em PORTUGOL... mensagem de alerta caso a pessoa esteja ACIMA DO PESO IDEAL
COISAS PARA NÃO ESQUECER RESUMINDO...
Coisas para não esquecer: Problemas que envolvam decisão podem ser tratados com ESTRUTURAS DE SELEÇÃO (ou condição) Uma Condição é formulada com o uso de Operadores Relacionais Os símbolos dos OPERADORES RELACIONAIS são: igual = diferente <> ou!= Maior > Maior ou igual >= Menor < Menor ou igual <= No PORTUGOL o símbolo de = É ==
Coisas para não esquecer: A estrutura de SELEÇÃO COMPOSTA tem a seguinte sintaxe em PORTUGOL se ( media >= 6 ) { } senao { } SINTAXE PORTUGOL escreva( Aprovado ) escreva( Reprovado )
AGORA É PRATICAR!!!
Estruturas de Seleção Parte II Seleção Simples e Composta EXEMPLOS E EXERCÍCIOS
Objetivos Aprender a utilizar operadores lógicos e condição composta Resolver problemas que requeiram o uso de ESTRUTURAS DE SELEÇÃO (simples e compostas) com a aplicação da Técnica de Interpretação de Enunciados
Um novo Problema (Estudo de Caso)
Problema Escreva um algoritmo para informar se um aluno foi aprovado ou reprovado. Sabe-se que para ser aprovado o aluno deve ter média aritmética maior ou igual a 6 (duas provas) e não pode ter mais do que 12 faltas. SAÍDA: Quais os resultados que o algoritmo deve fornecer?
Problema Bacharelado em Ciência e Tecnologia Escreva um algoritmo para informar se um aluno foi aprovado ou reprovado. Sabe-se que para ser aprovado o aluno deve ter média aritmética maior ou igual a 6 (duas provas) e não pode ter mais do que 12 faltas. SAÍDA: mensagem (Aprovado ou Reprovado) ENTRADA: Quais os insumos necessários para se obter a saída?
Problema Escreva um algoritmo para informar se um aluno foi aprovado ou reprovado. Sabe-se que para ser aprovado o aluno deve ter média aritmética maior ou igual a 6 (duas provas) e não pode ter mais do que 12 faltas. SAÍDA: mensagem (Aprovado ou Reprovado) ENTRADA: duas notas (nota1 e nota2) e número de faltas (faltas) PROCESSAMENTO: Como transformar os insumos na saída?
Problema... Sabe-se que para ser aprovado o aluno deve ter média aritmética maior ou igual a 6 (duas provas) e não pode ter mais do que 12 faltas. SAÍDA: mensagem (Aprovado ou Reprovado) ENTRADA: nota1, nota2, faltas PROCESSAMENTO: Media = (nota1 + nota2) / 2 se media >=6 Efaltas <=12 então Mensagem: APROVADO senão Mensagem: REPROVADO CONDIÇÃO COMPOSTA
Condição COMPOSTA Uma Condição Composta é formulada com o uso de Operadores Relacionais e OPERADORES LÓGICOS Os símbolos dos OPERADORES RELACIONAIS são: ==,!=, >, <, >=, <= Uma Condição composta envolve diversas condições conectadas por OPERADORES LÓGICOS Os OPERADORES LÓGICOS são: E, OU, NÃO
Condição COMPOSTA Bacharelado em Ciência e Tecnologia Os símbolos dos OPERADORES LÓGICOS são: E O resultado será verdadeiro somente se a avaliação de todas as condições forem verdadeiras OU O resultado será falso somente se a avaliação de todas as condições forem falsos NÃO Inverte o resultado da expressão lógica (ou condição) EXEMPLO NO PORTUGOL: se (média >= 6 e faltas <=12) { escreva ( Aprovado ) } senao { escreva ( Reprovado ) } ATENÇÃO: No PORTUGOL os parênteses são obrigatórios. O e, ou devem estar em caracter MINÚSCULO
Condição COMPOSTA
Condição COMPOSTA - exemplo Para x=10, y= a e z = -1 qual o resultado lógico das seguintes sentenças? (x > 5 e y = a ) (x > 5 ou y = b ) (x > 5 e y = b ) (x > 5 e y = a ) ou (z > 0) não (x > 5 e y = b ) e (z < 0) resultado = verdadeiro resultado = verdadeiro resultado = falso resultado = verdadeiro resultado = verdadeiro
Um novo Problema (Estudo de Caso)
Exercício Escreva um programa que calcule a idade de uma pessoa a partir do seu ano de nascimento. O programa deve mostrar na tela a idade e também as seguintes mensagens, quando for o caso: Já pode votar (se tiver 16 anos ou mais) Já pode solicitar a Carteira de Habilitação (se tiver 18 anos ou mais) SAÍDA: Quais os resultados que o algoritmo deve fornecer?
Discussão da Solução Escreva um programa que calcule a idade de uma pessoa a partir do seu ano de nascimento. O programa deve mostrar na tela a idade e também as seguintes mensagens, quando for o caso: Já pode votar (se tiver 16 anos ou mais) Já pode solicitar a Carteira de Habilitação (se tiver 18 anos ou mais) SAÍDA: Idade, Mensagens (Votar / Carteira de Habilitação) ENTRADA: Quais os insumos necessários para se obter a saída?
Discussão da Solução Escreva um programa que calcule a idade de uma pessoa a partir do seu ano de nascimento. O programa deve mostrar na tela a idade e também as seguintes mensagens, quando for o caso: Já pode votar (se tiver 16 anos ou mais) Já pode solicitar a Carteira de Habilitação (se tiver 18 anos ou mais) SAÍDA: Idade, Mensagens (Votar / Carteira de Habilitação) ENTRADA: Quais os insumos necessários para se obter a saída? Ano de nascimento (anonascimento) Ano atual (anoatual)
Discussão da Solução Escreva um programa que calcule a idade de uma pessoa a partir do seu ano de nascimento. O programa deve mostrar na tela a idade e também as seguintes mensagens, quando for o caso: Já pode votar (se tiver 16 anos ou mais) Já pode solicitar a Carteira de Habilitação (se tiver 18 anos ou mais) SAÍDA: Idade, Mensagens (Votar / Carteira de Habilitação) ENTRADA: anonascimento, anoatual PROCESSAMENTO: Como transformar os insumos na saída?
Discussão da Solução... mostrar na tela a idade e também as seguintes mensagens, : Já pode votar (se tiver 16 anos ou mais) Já pode solicitar a Carteira de Habilitação (se tiver 18 anos ou mais) SAÍDA: Idade, Mensagens (Votar / Carteira de Habilitação) ENTRADA: anonasc, anoatual PROCESSAMENTO: Idade = AnoAtual - AnoNascimento se idade >= 16 então Mostre Já Pode Votar fimse se idade >= 18 então Mostre Já pode Solicitar a Carteira de Habilitação fimse
Discussão da Solução... mostrar na tela a idade e também as seguintes mensagens, : Já pode votar (se tiver 16 anos ou mais) Já pode solicitar a Carteira de Habilitação (se tiver 18 anos ou mais) SAÍDA: Idade, Mensagens (Votar / Carteira de Habilitação) ENTRADA: anonasc, anoatual PROCESSAMENTO: Idade = AnoAtual - AnoNascimento se idade >= 16 então Mostre Já Pode Votar fimse se idade >= 18 então Mostre Já pode Solicitar a Carteira de Habilitação fimse REFLITA: Porque nesse problema NÃO se recomenda o uso do SENÃO?
Um novo Problema (Estudo de Caso)
Exercício Escreva um programa que calcule o valor que deve ser pago por um produto considerando o seu preço normal de etiqueta e a escolha de condição de pagamento de acordo com um dos seguintes códigos: CÓDIGO CONDIÇÃO DE PAGAMENTO SAÍDA: Quais os resultados que o algoritmo deve fornecer? DESCONTO 1 A VISTA 10% outro OUTRA Sem desconto Se o comprador tiver mais que 60 anos, deve-se conceder mais 5% de desconto, independente da condição de pagamento
Exercício Bacharelado em Ciência e Tecnologia Escreva um programa que calcule o valor que deve ser pago por um produto considerando o seu preço normal de etiqueta e a escolha de condição de pagamento de acordo com um dos seguintes códigos: CÓDIGO CONDIÇÃO DE PAGAMENTO SAÍDA: Quais os resultados que o algoritmo deve fornecer? DESCONTO 1 A VISTA 10% outro OUTRA Sem desconto Se o comprador tiver mais que 60 anos, deve-se conceder mais 5% de desconto, independente da condição de pagamento
Discussão da Solução SAÍDA: valor a ser pago (valorapagar) Escreva um programa que calcule o valor que deve ser pago por um produto considerando o seu preço normal de etiqueta e a escolha de condição de pagamento de acordo com um dos seguintes códigos: CÓDIGO CONDIÇÃO DE PAGAMENTO ENTRADA: Quais os insumos necessários para se obter a saída? DESCONTO 1 A VISTA 10% outro OUTRA Sem desconto Se o comprador tiver mais que 60 anos, deve-se conceder mais 5% de desconto, independente da condição de pagamento
Discussão da Solução... calcule o valor que deve ser pago por um produto considerando o seu preço normal de etiqueta e a escolha de condição de pagamento... CÓDIGO CONDIÇÃO DE PAGAMENTO DESCONTO 1 A VISTA 10% outro OUTRA Sem desconto Se o comprador tiver mais que 60 anos, deve-se conceder mais 5% de desconto, independente da condição de pagamento SAÍDA: valorapagar ENTRADA: Quais os insumos necessários para se obter a saída? Preço normal (preconormal) Condição de Pagamento (condpagto) idade
Discussão da Solução... calcule o valor que deve ser pago por um produto considerando o seu preço normal de etiqueta e a escolha de condição de pagamento... CÓDIGO CONDIÇÃO DE PAGAMENTO DESCONTO 1 A VISTA 10% outro OUTRA Sem desconto Se o comprador tiver mais que 60 anos, deve-se conceder mais 5% de desconto, independente da condição de pagamento SAÍDA: valorapagar ENTRADA: preconormal, condpagto, idade PROCESSAMENTO: Como transformar os insumos na saída?
Discussão da Solução CÓDIGO CONDIÇÃO DE PAGAMENTO DESCONTO 1 A VISTA 10% outro OUTRA Sem desconto Se o comprador tiver mais que 60 anos, deve-se conceder mais 5% de desconto, independente da condição de pagamento SAÍDA: valorapagar ENTRADA: preconormal, condpagto, idade PROCESSAMENTO: se condpagto = 1 então valorapagar = preconormal * 0.90 senão valorapagar = preconormal fimse se idade > 60 então valorapagar = valorapagar * 0.95 fimse
Um novo Problema (Estudo de Caso)
Exercício Escreva um algoritmo que solicite a digitação das medidas dos 3 lados de um suposto triângulo (A, B, C) e informe se esses 3 lados formam ou não um triângulo TRIÂNGULO: É uma figura geométrica de 3 lados, em que cada lado é menor do que a soma dos outros dois SAÍDA: Quais os resultados que o algoritmo deve fornecer?
Exercício Escreva um algoritmo que solicite a digitação das medidas dos 3 lados de um suposto triângulo (A, B, C) e informe se esses 3 lados formam ou não um triângulo TRIÂNGULO: É uma figura geométrica de 3 lados, em que cada lado é menor do que a soma dos outros dois SAÍDA: Quais os resultados que o algoritmo deve fornecer?
Discussão da Solução Escreva um algoritmo que solicite a digitação das medidas dos 3 lados de um suposto triângulo (A, B, C) e informe se esses 3 lados formam ou não um triângulo TRIÂNGULO: É uma figura geométrica de 3 lados, em que cada lado é menor do que a soma dos outros dois SAÍDA : É triângulo ou Não é Triângulo ENTRADA: Quais os insumos necessários para se obter a saída? os 3 lados (A, B, C)
Discussão da Solução Escreva um algoritmo que solicite a digitação das medidas dos 3 lados de um suposto triângulo (A, B, C) e informe se esses 3 lados formam ou não um triângulo TRIÂNGULO: É uma figura geométrica de 3 lados, em que cada lado é menor do que a soma dos outros dois SAÍDA : É triângulo ou Não é Triângulo ENTRADA: os 3 lados (A, B, C) PROCESSAMENTO: Como transformar os insumos na saída?
Discussão da Solução Escreva um algoritmo que solicite a digitação das medidas dos 3 lados de um suposto triângulo (A, B, C) e informe se esses 3 lados formam ou não um triângulo TRIÂNGULO: É uma figura geométrica de 3 lados, em que cada lado é menor do que a soma dos outros dois SAÍDA : É triângulo ou Não é Triângulo ENTRADA: os 3 lados (A, B, C) PROCESSAMENTO: Se ( A < B+C ) E ( B < A+C ) E ( C < A+B ) Então Mostre As medidas dos lados formam um triângulo Senão Mostre As medidas dos lados NÃO formam um triângulo
AGORA É PRATICAR!!!