Baixe o app para aproveitar ainda mais
Esta é uma pré-visualização de arquivo. Entre para ver o arquivo original
Repetição Controlada por Sentinela Estruturas de Controle Aninhadas Algoritmos e Programação I - Cátia Khouri & Fábio Moura 1 Repetição controlada por sentinela 6/14/2012 Linguagem de Programação I - Estruturas de Controle 2 Uma estrutura de repetição pode ser controlada através de um contador Como no exemplo na aula passada Também pode ser controlada por uma sentinela De acordo com essa técnica, um valor impossível é apresentado como o último dado a ser processado Por exemplo, se serão processadas notas de alunos, uma sentinela seria uma nota negativa Se serão processados números de matrícula, uma sentinela seria zero 2 Estudo de caso 2 Repetição controlada por sentinela 6/14/2012 Linguagem de Programação I - Estruturas de Controle 3 Desenvolva um programa que calcule a média da turma, para um número arbitrário de notas Imagine que você tem uma relação das notas a serem processadas, mas Você não sabe a quantidade delas Acrescente uma nota fictícia no final da relação Por exemplo, acrescente a nota -1 3 Estudo de caso 2 Repetição controlada por sentinela 6/14/2012 Linguagem de Programação I - Estruturas de Controle 4 -1 7 8 6 8 7 9 O operador irá digitar as notas uma a uma Quando for digitada a nota “-1”, significará que não há mais notas a serem digitadas (“entradas”), então o programa passará para outra fase. 4 Refinamento top-down 6/14/2012 Linguagem de Programação I - Estruturas de Controle 5 Desenvolva um programa que calcule a média da turma, para um número arbitrário de notas Topo: Determine a média da turma Função global do programa 5 Refinamento top-down 6/14/2012 Linguagem de Programação I - Estruturas de Controle 6 Refinamento Cada refinamento, como o topo, é uma especificação completa do algoritmo: Fase de inicialização Fase de processamento Fase de finalização Inicializar variáveis Receber os dados, somar e contar as notas Calcular e imprimir a média da turma 6 Repetição controlada por sentinela 6/14/2012 Linguagem de Programação I - Estruturas de Controle 7 Inicializar variáveis Inicialize total com zero Inicialize contador com zero total contador 0 0 Memória 7 Repetição controlada por sentinela 6/14/2012 Linguagem de Programação I - Estruturas de Controle 8 Receber os dados, somar e contar as notas Receba como entrada a primeira nota (possivelmente a sentinela) Enquanto ainda não digitou a sentinela Some a nota ao total corrente Some 1 ao contador de notas Receba como entrada a próxima nota (possivelmente a sentinela) 8 Repetição controlada por sentinela 6/14/2012 Linguagem de Programação I - Estruturas de Controle 9 -1 Imagine que você tem uma pilha de provas com as notas Em baixo da pilha, está uma prova com a nota -1 7 8 6 8 7 9 9 Repetição controlada por sentinela 6/14/2012 Linguagem de Programação I - Estruturas de Controle 10 total nota xxx contador Enquanto usuário ainda não digitou sentinela: Some esta nota ao total corrente; Some um ao contador de notas; Receba como entrada a próxima nota; (possivelmente a sentinela) Receba como entrada a primeira nota (possivelmente a sentinela) -1 7 8 6 8 7 9 0 0 9 9 1 7 16 2 8 24 3 6 30 4 8 38 5 7 45 6 -1 Não é sentinela ! Não é sentinela ! Não é sentinela ! Não é sentinela ! Não é sentinela ! Não é sentinela ! Sentinela ! Fim do laço ! 10 Repetição controlada por sentinela 6/14/2012 Linguagem de Programação I - Estruturas de Controle 11 Calcular e imprimir a média da turma Se contador não é igual a zero Atribua à média o valor total dividido pelo contador Imprima a média Se não Imprima “Nenhuma nota foi fornecida” total 45 contador 6 Memória nota -1 media 7 11 6/14/2012 Linguagem de Programação I - Estruturas de Controle 12 Inicialize total com zero Inicialize contador com zero Receba como entrada a primeira nota Enquanto usuário ainda não digitou a sentinela Some a nota ao total corrente Some 1 ao contador de notas Receba como entrada a próxima nota Se o contador não é igual a zero Atribua à média, total dividido pelo contador Imprima a média Se não Imprima “Nenhuma nota foi fornecida” 12 Estudo de caso 3 Estruturas de controle aninhadas 6/14/2012 Linguagem de Programação I - Estruturas de Controle 13 Uma escola oferece um curso de Inglês para 10 estudantes que vão prestar exame para o Mestrado da USP Após a realização do exame você recebe uma lista com o nome de cada aluno com o código ao lado: 1 - se o estudante foi aprovado 2 - se o estudante foi reprovado 13 Estudo de caso 3 Estruturas de controle aninhadas 6/14/2012 Linguagem de Programação I - Estruturas de Controle 14 Faça um programa que conte quantos estudantes foram aprovados e quantos reprovados. Se o número de aprovados for maior do que 8, imprima a mensagem: “Aumente o preço do curso!” 14 Observações 6/14/2012 Linguagem de Programação I - Estruturas de Controle 15 Serão processados 10 resultados laço controlado por contador Além do contador para controle do laço serão usados mais dois contadores: um para contar o número de aprovados; e outro para o número de reprovados Deve-se testar se mais de 8 foram aprovados 15 Topo 6/14/2012 Linguagem de Programação I - Estruturas de Controle 16 Analise os resultados do exame e decida se o preço deve ser aumentado 16 Refinamento 6/14/2012 Linguagem de Programação I - Estruturas de Controle 17 Inicialize as variáveis Receba os 10 resultados como entrada e conte as aprovações e reprovações Imprima um resumo dos resultados e decida se o preço deve ser aumentado 17 Inicialize as variáveis 6/14/2012 Linguagem de Programação I - Estruturas de Controle 18 Inicialize contador de estudantes com zero Inicialize contador de aprovações com zero Inicialize contador de reprovações com zero cntEst = 0 cntAprov = 0 cntReprov = 0 18 Receba os 10 resultados como entrada e conte as aprovações e reprovações 6/14/2012 Linguagem de Programação I - Estruturas de Controle 19 Enquanto o contador de estudantes for menor que 10 Leia o próximo resultado Some 1 a aprovações Se não Some 1 a reprovações Se o estudante for aprovado Some 1 ao contador de estudantes Enquanto cntEst < 10: Leia próximo resultado Se resultado == 1: cntAprov=cntAprov+1 Senão: cntReprov=cntReprov+1 cntEst = cntEst+1 19 Imprima um resumo dos resultados e decida se o preço deve ser aumentado 6/14/2012 Linguagem de Programação I - Estruturas de Controle 20 Imprima o número de aprovações Imprima o número de reprovações Imprima “Aumente o preço do curso!” Se o número de aprovações for maior que oito Imprima “Número de aprovações: ”, cntAprov Imprima “Número de reprovações: ”, cntReprov Se cntAprov >= 8: Imprima “Aumente o preço do curso!” 20 6/14/2012 Linguagem de Programação I - Estruturas de Controle 21 Inicialize as variáveis cntEst = 0 cntAprov = 0 cntReprov = 0 Receba os 10 resultados como entrada e conte as aprovações e reprovações Enquanto cntEst < 10: Leia próximo resultado Se resultado == 1: cntAprov = cntAprov + 1 Senão: cntReprov = cntReprov + 1 cntEst = cntEst + 1 Imprima um resumo dos resultados e decida se o preço deve ser aumentado Imprima “Número de aprovações: ”, cntAprov Imprima “Número de reprovações: ”, cntReprov Se cntAprov >= 8: Imprima “Aumente o preço do curso!” 21 Operadores de atribuição 6/14/2012 Linguagem de Programação I - Estruturas de Controle 22 c = c + 2 x = x – 3 w = w * 8 y = y/5 a = a % 4 c += 2 x -= 3 w *= 8 y /= 5 a %= 4 22 Exercícios 6/14/2012 Linguagem de Programação I - Estruturas de Controle 23 Escreva programas em Python para: Pedir três números inteiros ao usuário, mostrar o menor e o maior número Pedir dois números inteiros ao usuário, mostrar se o primeiro número é ou não um múltiplo do segundo Pedir um número de cinco dígitos ao usuário e imprimi-lo na vertical. Exemplo: Digite um número de 5 dígitos: 45623 4 5 6 2 3 23 Exercícios (cont.) 6/14/2012 Linguagem de Programação I - Estruturas de Controle 24 Pedir uma nota ao usuário; a nota deve estar necessariamente entre 0.0 e 10.0, caso contrário deverá ser emitida uma mensagem de erro e solicitada uma nova nota; imprimir “Aprovado” para nota maior ou igual a 7.0 e “Reprovado” para nota menor que 7.0 Modifique o programa anterior, de forma que seja impresso o conceito do aluno de acordo com os seguintes critérios: nota [9, 10] = “A” nota [8, 9[ = “B” nota [7, 8[ = “C” nota [5, 7[ = “D” nota [0, 5[ = “E” Solicitar o salário base e o número de horas trabalhadas pelo funcionário; se o número de horas for menor ou igual a 40, o salário deverá ser igual ao salário base; caso contrário, o salário deverá ser igual ao salário base mais o número de horas extras vezes o valor da hora trabalhada com acréscimo de 25%; mostrar o valor final do salário 24 Exercícios (cont.) 6/14/2012 Linguagem de Programação I - Estruturas de Controle 25 Modificar o programa anterior para pedir o salário base da empresa e o número de horas trabalhadas por cada um de seus 10 funcionários; no final mostrar o valor total da folha de pagamento da empresa Imprimir os números primos menores que 1000 25
Compartilhar