Baixe o app para aproveitar ainda mais
Esta é uma pré-visualização de arquivo. Entre para ver o arquivo original
Estruturas de controle Aula nº 08 Repetição controlada por sentinela Estruturas de controle aninhadas * * *-25 Repetição controlada por sentinela 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. Aula nº 08 - Estruturas de Controle (sentinela) * * *-25 Repetição controlada por sentinela 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. Aula nº 08 - Estruturas de Controle (sentinela) * * *-25 Repetição controlada por sentinela Estudo de caso 2 Desenvolva um programa que calcule a média da turma, para um número arbitrário de notas. Aula nº 08 - Estruturas de Controle (sentinela) * * *-25 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; Repetição controlada por sentinela Estudo de caso 2 Aula nº 08 - Estruturas de Controle (sentinela) * * *-25 Desenvolva um programa que calcule a média da turma, para um número arbitrário de notas. Repetição controlada por sentinela Estudo de caso 2 Aula nº 08 - Estruturas de Controle (sentinela) * * *-25 -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. Aula nº 08 - Estruturas de Controle (sentinela) * * *-25 Refinamento top-down 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 Aula nº 08 - Estruturas de Controle (sentinela) * * *-25 Estudo de caso 2 Repetição controlada por sentinela Refinamento Cada refinamento, como o topo, é uma especificação completa do algoritmo: Fase de processamento Fase de finalização Fase de inicialização Inicializar variáveis Receber os dados, somar e contar as notas Calcular e imprimir a média da turma Aula nº 08 - Estruturas de Controle (sentinela) * * *-25 Repetição controlada por sentinela Inicialize total com zero; Inicialize contador com zero; Inicializar variáveis 0 0 Aula nº 08 - Estruturas de Controle (sentinela) * * *-25 Repetição controlada por sentinela Receba como entrada a primeira nota; (possivelmente a sentinela) 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) Receber os dados, somar e contar as notas Aula nº 08 - Estruturas de Controle (sentinela) * * *-25 Imagine que você tem uma pilha de provas com as notas. Em baixo da pilha, está uma prova com a nota -1. -1 7 8 6 8 7 9 Aula nº 08 - Estruturas de Controle (sentinela) * * *-25 -1 7 8 6 8 7 9 0 0 Aula nº 08 - Estruturas de Controle (sentinela) * * *-25 -1 7 8 6 8 7 9 0 0 Receba como entrada a primeira nota; (possivelmente a sentinela) Aula nº 08 - Estruturas de Controle (sentinela) * * *-25 -1 7 8 6 8 7 9 0 0 Receba como entrada a primeira nota; (possivelmente a sentinela) Enquanto usuário ainda não digitou sentinela: Não é sentinela ! Aula nº 08 - Estruturas de Controle (sentinela) * * *-25 -1 7 8 6 8 7 9 9 0 Receba como entrada a primeira nota; (possivelmente a sentinela) Enquanto usuário ainda não digitou sentinela: Some esta nota ao total corrente; Não é sentinela ! Aula nº 08 - Estruturas de Controle (sentinela) * * *-25 -1 7 8 6 8 7 9 1 Receba como entrada a primeira nota; (possivelmente a sentinela) Enquanto usuário ainda não digitou sentinela: Some esta nota ao total corrente; Some um ao contador de notas; Não é sentinela ! 9 Aula nº 08 - Estruturas de Controle (sentinela) * * *-25 -1 7 8 6 8 7 9 1 Receba como entrada a primeira nota; (possivelmente a sentinela) 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) Não é sentinela ! 9 Aula nº 08 - Estruturas de Controle (sentinela) * * *-25 -1 7 8 6 8 7 2 Receba como entrada a primeira nota; (possivelmente a sentinela) 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) Não é sentinela ! 16 Aula nº 08 - Estruturas de Controle (sentinela) * * *-25 -1 7 8 6 8 3 Receba como entrada a primeira nota; (possivelmente a sentinela) 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) Não é sentinela ! 24 Aula nº 08 - Estruturas de Controle (sentinela) * * *-25 -1 7 8 6 4 Receba como entrada a primeira nota; (possivelmente a sentinela) 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) Não é sentinela ! 30 Aula nº 08 - Estruturas de Controle (sentinela) * * *-25 -1 7 8 5 Receba como entrada a primeira nota; (possivelmente a sentinela) 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) Não é sentinela ! 38 Aula nº 08 - Estruturas de Controle (sentinela) * * *-25 -1 7 6 Receba como entrada a primeira nota; (possivelmente a sentinela) 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) Não é sentinela ! 45 Aula nº 08 - Estruturas de Controle (sentinela) * * *-25 6 Receba como entrada a primeira nota; (possivelmente a sentinela) 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) 45 Seninela ! Fim do laço ! Aula nº 08 - Estruturas de Controle (sentinela) * * *-25 Repetição controlada por sentinela Se o contador não é igual a zero: Atribua à média o valor do total dividido pelo contador; Imprima a média; Senão Imprima “Nenhuma nota foi fornecida”. Calcular e imprimir a média da turma 7 Aula nº 08 - Estruturas de Controle (sentinela) * * *-25 20/08/2007 *-24 Inicialize total com zero; Inicialize contador com zero; Receba como entrada a primeira nota; 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; Se o contador não é igual a zero: Atribua à média, total dividido pelo contador Imprima a média Senão Imprima “Nenhuma nota foi fornecida” Aula nº 08 - Estruturas de Controle (sentinela) * * *-25 Estudo de caso 3 Estruturas de controle aninhadas 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 Aula nº 08 - Estruturas de Controle (sentinela) * * *-25 Estudo de caso 3 Estruturas de controle aninhadas 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” Aula nº 08 - Estruturas de Controle (sentinela) * * *-25 Observações: 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. Aula nº 08 - Estruturas de Controle (sentinela) * * *-25 Topo Analise os resultados do exame e decida se o preço deve ser aumentado. Aula nº 08 - Estruturas de Controle (sentinela) * * *-25 Refinamento 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. Aula nº 08 - Estruturas de Controle (sentinela) * * *-25 Inicialize as variáveis. Inicialize contador de estudantes com 0. Inicialize contador de aprovações com 0; Inicialize contador de reprovações com 0; cont = 0; contAP = 0; contRP = 0; Aula nº 08 - Estruturas de Controle (sentinela) * * *-25 *-24 Receba os 10 resultados como entrada e conte as aprovações e reprovações. Enquanto o contador de estudantes for menor que 10: Leia o próximo resultado; Se o estudante foi aprovado Some um a aprovações; senão Some um a reprovações; Some um ao contador de estudantes. Enquanto cont < 10: Leia próx resultado; Se (resultado == 1) contAP=contAP+1; senão contRP=contRP+1; cont = cont+1; Aula nº 08 - Estruturas de Controle (sentinela) * * *-25 Imprima um resumo dos resultados e decida se o preço deve ser aumentado Imprima o número de aprovações; Imprima o número de reprovações; Se o número de aprovações for maior que 8 Imprima ”Aumente o preço do curso”; Fim. Imprima contAP; Imprima contRP; Se contAP > 8 Imprima ”Aumente o preço do curso”; Aula nº 08 - Estruturas de Controle (sentinela) * * *-25 *-24 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 cont = 0; contAP = 0; contRP = 0; Imprima contAP; Imprima contRP; Se contAP > 8 Imprima ”Aumente o preço do curso”; Enquanto cont < 10: Leia próx resultado; Se (resultado == 1) contAP=contAP+1; senão contRP=contRP+1; cont = cont+1; Aula nº 08 - Estruturas de Controle (sentinela) * * *-25 Operadores de Atribuição c = c + 2 ; c += 2 ; x = x – 3 ; x -= 3 ; w = w * 8 ; w *= 8 ; y = y/5 ; y /= 5 ; a = a % 4 ; a %= 4 ; Aula nº 08 - Estruturas de Controle (sentinela) * * *-25 Operadores de incremento e decremento ++a pré-incremento a++ pós-incremento --a pré-decremento a-- pós-decremento Aula nº 08 - Estruturas de Controle (sentinela) *
Compartilhar