Estruturas de Controle Condicional PROGRAMAÇÃO I (COM06842) LÓGICA E TÉCNICA DE PROGRAMAÇÃO (COM06039) F REDDY B RASILEIRO www.inf.ufes.br/~fbrasileiro [email protected] Conteúdo 5. Estruturas de controle 1. Estruturas Sequenciais e Condicionais PROGRAMAÇÃO I (COM06842) / LÓGICA E TÉCNICA DE PROGRAMAÇÃO (COM06039) 2 Estruturas Sequenciais ... <Comando 1> <Comando 2> <Comando 1> <Comando 3> ... <Comando 2> <Comando 3> 3 Estruturas de Controle • Quando o fluxo de instruções depende de uma ou mais condições ◦ Expressões lógicas (verdadeiro ou falso) • Estruturas ◦ Se ◦ Caso 4 Se-Então(-Senão) Opção 1: Opção 2: se condição então se condição então bloco de comandos 1; bloco de comandos 1; fim-se; senão bloco de comandos 2; fim-se; Exemplo: Exemplo: se MEDIA < 7.0 então se MEDIA < 7.0 então escreva (‘reprovado’); escreva (‘reprovado’); fim-se; senão escreva (‘aprovado’); fim-se; 5 Se-Então(-Senão) .V. .V. ? ? .F. .F. PROGRAMAÇÃO I (COM06842) / LÓGICA E TÉCNICA DE PROGRAMAÇÃO (COM06039) 6 Exemplo 1 Início N1, N2 MEDIA aaa (N1 + N2) / 2 MEDIA >= 7 "Aprovado" "Reprovado" BLOCO “SE” Fim 7 Exemplo 2 Algoritmo radar Início Var velV : Real; velV Início Leia(velV); .V. Se velV > 60 Então .F. Escreva(‘Multado!’); Fim_se velV > 60 “Multado!” Fim. Fim BLOCO “SE” 8 Aninhamento se condição1 então ... senão ... se condição2 então ... fim-se; ... fim-se; se condição1 então ... se condição2 então ... fim-se; ... senão ... fim-se; se condição1 então ... senão ... se condição2 então ... senão ... fim-se; ... fim-se; se condição1 então ... se condição2 então ... senão ... fim-se; ... senão ... fim-se; PROGRAMAÇÃO I (COM06842) / LÓGICA E TÉCNICA DE PROGRAMAÇÃO (COM06039) 9 Exemplo algoritmo media; var p1, p2, p3, t, mediaParcial, pf, mediaFinal: real; inicio leia(p1, p2, p3, t); mediaParcial <- (p1 + p2 + p3 + t)/4; se mediaParcial >= 7 então escreva(‘Aprovado'); senão leia(pf); mediaFinal <- (mediaParcial + pf)/2; se mediaFinal >= 5 então escreva(‘Aprovado'); senão escreva(‘Reprovado'); fim-se; fim-se; fim. PROGRAMAÇÃO I (COM06842) / LÓGICA E TÉCNICA DE PROGRAMAÇÃO (COM06039) 10 Cuidado! Organize seu código algoritmo classificao; var idade: inteiro; inicio escreva('Informe sua idade: '); leia(idade); se idade >= 5 e idade <= 7 então escreva('Infantil A'); se idade >= 8 e idade <= 11 então escreva('Infantil B'); fim-se; fim-se; fim. PROGRAMAÇÃO I (COM06842) / LÓGICA E TÉCNICA DE PROGRAMAÇÃO (COM06039) 11 Cuidado! Organize seu código algoritmo classificao; var idade: inteiro; inicio escreva('Informe sua idade: '); leia(idade); se idade >= 5 e idade <= 7 então escreva('Infantil A'); se idade >= 8 e idade <= 11 então escreva('Infantil B'); fim-se; fim-se; fim. PROGRAMAÇÃO I (COM06842) / LÓGICA E TÉCNICA DE PROGRAMAÇÃO (COM06039) 12 Cuidado! Organize seu código algoritmo classificao; var idade: inteiro; inicio escreva('Informe sua idade: '); leia(idade); se idade >= 5 e idade <= 7 então escreva('Infantil A'); fim-se; se idade >= 8 e idade <= 11 então escreva('Infantil B'); fim-se; fim. PROGRAMAÇÃO I (COM06842) / LÓGICA E TÉCNICA DE PROGRAMAÇÃO (COM06039) 13 Exercício Elabore um algoritmo que dada a idade de um nadador classifique-o em uma das seguintes categorias: • Infantil: 0 a 11 anos • Juvenil: 12 a 17 anos • Adulto: Maiores de 18 anos Utilize o SE aninhado PROGRAMAÇÃO I (COM06842) / LÓGICA E TÉCNICA DE PROGRAMAÇÃO (COM06039) 14 Estruturas de Controle: Caso • Funciona como um encadeamento de “Se” ◦ Várias condições avaliadas para uma variável 15 Estruturas de Decisão: Caso <Condição 1> .V. <Comandos 1> .F. <Condição 2> .V. <Comandos 2> .F. <Condição n> .V. <Comandos n> .F. 16 Caso - Sintaxe Caso variavel seja Condição1: <Conjunto Condição2: <Conjunto ... CondiçãoN: <Conjunto Senão <Conjunto Fim-caso de Comandos 1> de Comandos 2> de Comandos n> de Comandos Senão> 17 Caso - Semântica • A “condição 1” é testada. • Se for VERDADEIRO, o “conjunto de comandos 1” é executado, ◦ Em seguida o programa passa para a próxima linha depois do “Fimcaso”. • Se for FALSO, a “condição 2” é avaliada e o cenário se repete. • Se nenhuma das condições for VERDADEIRA, ◦ o “conjunto de comandos senão” é executado. ◦ Não é obrigatório ter um “Senão”; 18 Exemplo Faça um algoritmo que leia o cargo e o salário de um funcionário. Os funcionários receberão aumento de acordo com o cargo: • Técnico: 50% de aumento • Gerente: 30% de aumento • Todos os outros funcionários: 10% de aumento PROGRAMAÇÃO I (COM06842) / LÓGICA E TÉCNICA DE PROGRAMAÇÃO (COM06039) 19 Exemplo Algoritmo reajuste_salario Var Salario, Novo_Sal : Real Profissao : String[20]; Início Leia Salario, Profissao caso Profissao seja ‘Técnico’: Novo_Sal <- 1.5 * Salario; ‘Gerente’: Novo_Sal <- 1.3 * Salario; Senão Novo_Sal <- 1.1 * Salario; Fim-caso Escreva(‘Salário Reaj. = ‘, Novo_Salario); Fim. 20 Exemplo Início Salario, Profissao Profissao = “Tecnico” .V. Novo_Sal <1.5 * Salario .V. Novo_Salario <- 1.3 * Salario .F. Profissao = “Gerente” .F. Novo_Salario <- 1.1 * Salario BLOCO “CASO” “Salário Reaj. = ”, Novo_Salario Fim 21 Exercício Faça um programa, utilizando a instrução escolha-caso, que receba um número real, digitado pelo usuário e mostre o menu para selecionar o tipo de cálculo que deve ser realizado: Código Tipo de Cálculo 101 Raiz quadrada 102 A metade 103 10% do número 104 O dobro • Para raiz quadrada de x, utilize sqrt(x). 22 Exercício - Resolução Algoritmo calculadora2 Var operacao: Inteiro a, resultado: Real Início Escreva(‘Informe a operação desejada e o valor: ‘); Leia(operação, valor); caso operação seja 101: resultado <- sqrt(valor); 102: resultado <- valor / 2; 103: resultado <- 0,1 * valor; 104: resultado <- valor * 2; Senão Escreva(‘Operação inválida’); Fim-caso Escreva(‘Resultado: ‘, resultado); Fim. 23