Estruturas sequenciais e condicionais IF61A/ IF71A - Computação 1 Prof. Leonelo Almeida Universidade Tecnológica Federal do Paraná Aula passada • Introdução à computação • Algoritmos ▫ Variáveis ▫ Operadores ▫ Expressões Agenda de hoje • Estruturas de controle ▫ Estruturas sequenciais ▫ Estruturas condicionais (ou de decisão) ▫ Estruturas de repetição Estruturas de controle • Estabelecem os passos que devem ser executados e a ordem deles • Definem se um comando deve ser executado ou não • Definem se um comando deve ser executado repetidamente Exemplo 1. Nome: obterMenorValor 2. início 3. inteiro: MenorValor, ValorLido; 4. 5. imprima(“Informe o valor.”); 6. leia (ValorLido); 7. MenorValor <- ValorLido; 8. 9. enquanto ValorLido <> -1 faça 10. se ValorLido < MenorValor então 11. MenorValor <- ValorLido; 12. fim se Usa-se “;” ao final 13. leia(ValorLido); de cada comando. 14. fim enquanto 15. 16. imprima(“O menor valor é ”, MenorValor); 17.fim Ordem de execução. Exemplo 1. Nome: obterMenorValor 2. início 3. inteiro: MenorValor, ValorLido; 4. 5. imprima(“Informe o valor.”); 6. leia (ValorLido); Não se usa “;” ao final 7. MenorValor <- ValorLido; de estruturas. 8. 9. enquanto ValorLido <> -1 faça 10. se ValorLido < MenorValor então 11. MenorValor <- ValorLido; 12. fim se Usa-se “;” ao final 13. leia(ValorLido); de cada comando. 14. fim enquanto 15. 16. imprima(“O menor valor é ”, MenorValor); 17.fim Ordem de execução. Exemplo 1. Nome: obterMenorValor 2. início 3. inteiro: MenorValor, ValorLido; 4. Esta é uma 5. imprima(“Informe o valor.”); estrutura 6. leia (ValorLido); condicional (ou 7. MenorValor <- ValorLido; de decisão) 8. 9. enquanto ValorLido <> -1 faça 10. se ValorLido < MenorValor então 11. MenorValor <- ValorLido; 12. fim se 13. leia(ValorLido); Essa atribuição 14. fim enquanto somente é executada 15. caso a condição da 16. imprima(“O menor valor é ”, MenorValor); estrutura seja 17.fim verdadeira. Exemplo 1. Nome: obterMenorValor 2. início 3. inteiro: MenorValor, ValorLido; 4. Esta é uma 5. imprima(“Informe o valor.”); estrutura de 6. leia (ValorLido); repetição 7. MenorValor <- ValorLido; 8. 9. enquanto ValorLido <> -1 faça 10. se ValorLido < MenorValor então 11. MenorValor <- ValorLido; 12. fim se 13. leia(ValorLido); 14. fim enquanto Esse bloco somente é 15. executado caso a 16. imprima(“O menor valor é condição ”, MenorValor); da estrutura 17.fim seja verdadeira. Estruturas condicionais (ou de decisão) • Podem ser usadas de diversas maneiras: ▫ Simples ▫ Composta ▫ Encadeada Homogênea Heterogênea ▫ Múltipla escolha Simples • Estrutura se ( condição for verdadeira ) então comando ou {bloco de comandos} fim se • Exemplo leia(A); se (A > 0) então imprima(“OK”); fim se Composta • Estrutura se ( condição for verdadeira ) então comando ou {bloco de comandos} senão comando ou {bloco de comandos} fim se • Exemplo leia(A); se (A > 0) então imprima(“OK”); senão imprima(“Erro”); fim se Atividade • O algoritmo a seguir calcula as raízes de uma equação do 2o. grau, sendo A,B, e C fornecidos pelo usuário : início real : A, B, C, R1, R2; imprima(“Forneça os coeficientes da equação de 2º grau”); leia(A,B,C); R1 <-(-B+(raiz(B**2 - 4*A*C)))/(2*A); R2 <-(-B-(raiz(B**2 - 4*A*C)))/(2*A); imprima(“Coef. 1: ”, R1, “Coef. 2: ”, R2); fim • Refazer o algoritmo acima de modo a imprimir mensagem de erro no caso de raiz quadrada de número negativo Encadeada • Pode ser: ▫ Homogênea ▫ Heterogênea Encadeada homogênea • Formada por condições simples se ( condição1 for V ) então se ( condição2 for V ) então ... se ( condiçãoN for V ) então comando {ou bloco de comandos}; fim se fim se Quando o comando fim se será executado? Encadeada homogênea • É equivalente a: se ( condição1 for V ) e ( condição2 for V ) e ... e ( condiçãoN for V ) então comando {ou bloco de comandos}; fim se Encadeada homogênea • Formada por condições compostas se ( condição1 for V ) então comando1 {ou bloco de comandos}; senão Quando o comandoN se ( condição2 for V ) então será executado? ... senão se ( condiçãoN for V ) então comandoN {ou bloco de comandos}; senão comandoM {ou bloco de comandos}; fim se fim se fim se Atividade • O algoritmo a seguir calcula a média final de 3 parciais fornecidas pelo usuário início real : P1, P2, P3,MF; leia(P1,P2,P3); MF <-(P1+P2+P3)/3.0; imprima(MF); se MF >= 7.0 então imprima(“Aprovado”); fim se fim • Refazer o algoritmo acima para a regra de aprovação, exame ou reprovação usada nesta universidade se <Condição1 forV> então se <Condição2 for V> então {inicio do bloco verdade A} C1; ... Cn; fim se senão se <Condição3 forV> então {inicio do bloco verdade B} C1; ... Cn; senão se <Condição4 for V> então se <Condição 5=V> então ComandoX; fim se senão Comando Y; fim se fim se fim se Encadeada heterogênea se <Condição1 forV> então se <Condição2 for V> então {inicio do bloco verdade A} C1; ... Cn; fim se senão se <Condição3 forV> então {inicio do bloco verdade B} C1; ... Cn; senão se <Condição4 for V> então se <Condição 5=V> então ComandoX; fim se senão Comando Y; fim se fim se fim se Encadeada heterogênea se <Condição1 forV> então se <Condição2 for V> então {inicio do bloco verdade A} C1; ... Cn; Quando o bloco A fim se é executado? senão se <Condição3 forV> então {inicio do bloco verdade B} C1; ... Quando o bloco B Cn; é executado? senão se <Condição4 for V> então se <Condição 5=V> então ComandoX; fim se senão Quando o Comando Y; comando X é fim se executado? fim se fim se Encadeada heterogênea Atividade • Suponha o algoritmo início lógico: A,B,C; se A então C1; senão se B então se C então C2; senão C3; C4; fim se fim se C5; fim se C6; fim Quais os comandos executados considerando-se: i. ii. iii. iv. AV; BV; CF; AF; BV; CF; AF; BV; CV; Quais valores de A, B e C para que somente o comando C6 seja executado? Atividade • Elabore um algoritmo para o cálculo do total de latas de tinta necessárias para se pintar um muro considerando-se as seguintes informações: ▫ O tamanho do muro a ser pintado é fornecido pelo usuário. ▫ 1 litro de tinta é suficiente para se pintar R m2 do muro , onde o valor de R (rendimento) também é fornecido pelo usuário ▫ 1 lata contém 5 litros de tinta ▫ O total de latas deve ser um valor inteiro Múltipla escolha • Estrutura escolha (variável): caso E1: Comando1; {ou caso E2: Comando2; {ou ... caso EM: ComandoN; {ou caso contrário: ComandoM; {ou fim escolha bloco de comandos} bloco de comandos} bloco de comandos} bloco de comandos} Múltipla escolha – exemplo 1 início caractere: op; leia(op); escolha(op) caso ‘c’ : imprima(“copiando arquivo”); caso ‘a’: imprima(“apagando arquivo”); caso ‘d’: imprima(“criando diretório”); caso ‘f’: imprima(“formatando disco”); caso contrário: imprima(“saindo do programa”); fim escolha fim Múltipla escolha – exemplo 2 início inteiro: numA, numB; leia(numA); escolha(numA) caso 10 : numB <- numA; caso 20: numB <- numA^2; caso 30: numB <- numA^3; caso contrário: imprima(“Erro”); fim escolha fim Atividade • Considere a tabela de produtos disponíveis do estoque e uma loja: Código Nome Preço (R$) Quantidade A Lâmpada 60W 1.20 7 B Lâmpada 100W 2.50 5 C Reator de partida lenta 59.00 3 D Reator de partida rápida 124.00 2 • continua no próximo slide ... Atividade O algoritmo imprime o nome e o preço total de cada produto disponível conforme o código fornecido pelo usuário: inicio caractere codigo; imprima(“Forneça o código do produto (de A a D)”); leia(codigo); se codigo = ‘A’ imprima(“Lâmpada 60 W. Valor: ”, 1.2*7); senão se codigo = ‘B’ imprima(“Lâmpada 100 W. Valor: ”, 2.5*5); senão se codigo = ‘C’ imprima(“Reator de partida lenta. Valor: ”, 59*3); senão se codigo = ‘D’ imprima(“Reator de partida rápida. Valor: ”, 124*2); senão imprima(“Produto não disponível no estoque”); fim se fim se fim se Modifique o algoritmo anterior de modo a fim se fim utilizar o comando escolha. Atividade • Construa um algoritmo que, tendo como dados de entrada o preço de um produto e o seu código, imprima a sua origem e o preço final do produto, considerando o frete para transportá-lo. Caso o código não seja nenhum dos especificados, o produto deve ser encarado como importado. • Tabela de frete no próximo slide ... Atividade Código Origem Frete 1 Centro Oeste 10% do preço 2 Norte 40% do preço 3 ou 4 Nordeste 30% do preço 5 ou 6 Sul 40% do preço 10 a 20 Sudeste 20% do preço Outros IMPORTADO 200% do preço