Baixe o app para aproveitar ainda mais
Prévia do material em texto
25/04/2020 Versão para impressão - Estrutura de Repetição Condicional https://conteudo.catolica.edu.br/conteudos/nbt_cursos/algoritmos_programacao/tema-06/index.html?print=1&access_token=eyJ0eXAiOiJKV1Qi… 1/17 Estrutura de Repetição Condicional 25/04/2020 Versão para impressão - Estrutura de Repetição Condicional https://conteudo.catolica.edu.br/conteudos/nbt_cursos/algoritmos_programacao/tema-06/index.html?print=1&access_token=eyJ0eXAiOiJKV1Qi… 2/17 ©2018 Copyright ©Católica EAD. Ensino a distância (EAD) com a qualidade da Universidade Católica de Brasília Apresentação Fonte: https://goo.gl/wMFpbm Nesta aula você dará continuidade aos estudos sobre repetição, mas do segundo tipo: a repetição condicional. Vamos lá!!! https://goo.gl/wMFpbm 25/04/2020 Versão para impressão - Estrutura de Repetição Condicional https://conteudo.catolica.edu.br/conteudos/nbt_cursos/algoritmos_programacao/tema-06/index.html?print=1&access_token=eyJ0eXAiOiJKV1Qi… 3/17 ©2018 Copyright ©Católica EAD. Ensino a distância (EAD) com a qualidade da Universidade Católica de Brasília Conteúdo Repetição Condicional Você se lembra do quartel com o sargento Garcia (conhece o Zorro?) e o soldado Ryan que discutimos na aula passada? Lembra-se das duas perguntas do soltado ao sargento para poder cumprir a ordem de correr em volta do quartel? A segunda era: Até quando, senhor?! E uma possível resposta do sargento poderia ser: Até eu mandar parar, soldado! Na aula passada, já comentamos que nesse caso temos uma condição para parar a repetição que seria o sargento dizer que o soldado pode parar de dar voltas. Vamos continuar com essa história. Para o soldado saber se pode ou não parar, ele deveria perguntar ao sargento. E essa pergunta deveria ser feita a cada volta (repetição). A questão é: quando fazer essa pergunta pela primeira vez? Logo depois da primeira volta OU antes mesmo de iniciar a primeira volta? Provavelmente, você disse que logo depois da primeira volta. Afinal, parece não fazer sentido perguntar antes da primeira volta, pois nesse caso a resposta do sargento poderia ser sim, indicando que o soldado poderia parar e com isso o soldado não daria nem mesmo a primeira volta. Contudo, nós temos os dois casos de repetição e essa é justamente a diferença entre elas, o momento em que fazemos a pergunta, ou seja, em que a condição é avaliada. Em uma situação, a condição é avaliada antes da repetição (mesmo antes da primeira) e na outra situação, a condição é avaliada depois da repetição. A brincadeira com essa história foi para dizer que existem duas repetições condicionais: Ambas repetem, no máximo, N vezes. Onde N significa que não sabemos quantas vezes a repetição pode ocorrer, podendo ocorrer para sempre, o que seria um erro chamado de loop infinito! 1. A condição vem no início e por isso repete, no mínimo, 0 (zero) vezes. 2. A condição vem no final e por isso repete, no mínimo, 1 (uma) vez. 25/04/2020 Versão para impressão - Estrutura de Repetição Condicional https://conteudo.catolica.edu.br/conteudos/nbt_cursos/algoritmos_programacao/tema-06/index.html?print=1&access_token=eyJ0eXAiOiJKV1Qi… 4/17 Como acabamos de falar, existem duas repetições condicionais. Assim, existem também dois comandos de repetição condicional que veremos na sequência. Comando ENQUANTO O comando enquanto permite a execução de um conjunto de comandos pertencentes ao seu bloco de repetição, sendo este executado a partir de um teste condicional. Enquanto este teste resultar verdadeiro, a repetição é executada continuamente, sendo encerrada somente quando a condição resultar falso. Ele executa, no mínimo, 0 (zero) e, no máximo, N vezes. O comando enquanto funciona da seguinte forma: Primeiramente, avalia a condição, antes de iniciar o bloco de repetição. Caso o resultado desse teste lógico seja verdadeiro, todo o bloco de repetição é executado até o fimEnquanto. Chegando ao fimEnquanto, o fluxo de execução retorna para o enquanto e o teste condicional é refeito. Quando o teste resultar falso, o bloco de repetição é saltado e o fluxo de execução prossegue a partir do primeiro comando após o fimEnquanto. A sintaxe do comando enquanto é: Lembra-se do último algoritmo que fizemos na aula passada? Aquele da média? A seguir ele é apresentado, porém agora com o comando de repetição enquanto. enquanto (<condição>) faca <Comando(s)> fimEnquanto 25/04/2020 Versão para impressão - Estrutura de Repetição Condicional https://conteudo.catolica.edu.br/conteudos/nbt_cursos/algoritmos_programacao/tema-06/index.html?print=1&access_token=eyJ0eXAiOiJKV1Qi… 5/17 Seria demorado testar com 50. Assim, o exemplo está organizado considerando uma turma de 5 alunos. A essa altura, já é desnecessário dizer para você testar o algoritmo, debugar e explorar possibilidades fazendo modificações. Lembre-se de que a prática é essencial para aprimorar sua capacidade de desenvolver bons algoritmos. Comando FACA...ENQUANTO O comando faca...enquanto tem função bem parecida com a do comando enquanto. A diferença é que ele executa, no mínim, 1 (uma), e não zero vezes! O número máximo de repetições é igual, ou seja, N vezes. Para Refletir Qual das duas implementações é mais eficiente. Essa ou a anterior com o comando para? Por quê? 25/04/2020 Versão para impressão - Estrutura de Repetição Condicional https://conteudo.catolica.edu.br/conteudos/nbt_cursos/algoritmos_programacao/tema-06/index.html?print=1&access_token=eyJ0eXAiOiJKV1Qi… 6/17 No comando faca...enquanto o teste condicional fica depois do bloco de comandos. Com isso, o bloco será executado, no mínimo, uma vez, independente do resultado do teste condicional que só será realizado após a execução do bloco. A sintaxe do comando faca...enquanto é: Veja a seguir um algoritmo que usa o comando faca...enquanto para fazer a mesma coisa que os algoritmos anteriores, que usavam os comandos para e enquanto. Lembre-se: teste, debugue e explore! faca <Comando(s)> enquanto (<condição>); 25/04/2020 Versão para impressão - Estrutura de Repetição Condicional https://conteudo.catolica.edu.br/conteudos/nbt_cursos/algoritmos_programacao/tema-06/index.html?print=1&access_token=eyJ0eXAiOiJKV1Qi… 7/17 Formas de Controle da Repetição A forma como a quantidade de repetições executadas pelos comandos de repetição condicional é controlada pode ser classificada como: Definido pelo programador – quando há uma variável auxiliar que conta quantas vezes será executado o bloco de comandos até atingir determinado valor. Definido pelo usuário – quando a repetição depende de uma ação do usuário (ou do ambiente). O primeiro caso é como fizemos nos exemplos acima. Na verdade, não é uma situação na qual a repetição condicional deva ser utilizada. Nesse caso, o melhor é utilizar a repetição controlada que possui todos os mecanismos para isso. Já que sabemos previamente a quantidade de vezes que a repetição ocorrerá, não se pode dizer que é uma repetição que necessita de uma condição para a repetição. O segundo caso sim, como depende de algo informado pelo usuário, não temos como prever a quantidade de vezes que ocorrerá, já que não fazemos ideia de qual será o valor informado pelo usuário. Por exemplo, imagine o problema da média que estamos trabalhando desde a última aula, mas imagine que não sabemos a quantidade de estudantes que temos na sala de aula e precisamos calcular a média da turma, independentemente da quantidade de estudantes. Temos algumas alternativas para fazer isso, veja uma: Para Refletir Você estudou três comandos que fazem a mesma coisa, calcularem a média de uma turma com 50 (ou 5) alunos. Contudo, às vezes, pode ser necessário adaptar esse algoritmo para turmas com tamanho diferente, por exemplo, 30. Seria possível usar uma constante no lugar do valor 50? Seria um bom caso de uso de constante? 25/04/2020 Versão para impressão - Estrutura de Repetição Condicional https://conteudo.catolica.edu.br/conteudos/nbt_cursos/algoritmos_programacao/tema-06/index.html?print=1&access_token=eyJ0eXAiOiJKV1Qi…8/17 A parte mais interessante do algoritmo acima, obviamente, é como fizemos para controlar a repetição que pode ocorrer N vezes, onde essa quantidade de vezes depende da vontade do usuário. No caso do algoritmo acima, após a entrada da nota, perguntamos se o usuário deseja informar a nota de outro estudante. A resposta do usuário (armazenada na variável resposta) é a condição de saída da repetição. Como utilizamos o comando faca...enquanto, a repetição ocorre, no mínimo, 1 vez. Contudo, há outras coisas interessantes como, por exemplo, o uso da variável aluno como contador (inicializada com 0 (zero) e incrementada de 1 em 1) para contar a quantidade de notas/estudantes que foram digitadas. Este contador é utilizado no cálculo da média, pois pegamos a soma das notas e dividimos por ele. Outra solução para calcularmos a média da turma, independentemente da quantidade de estudantes, é apresentada a seguir: 25/04/2020 Versão para impressão - Estrutura de Repetição Condicional https://conteudo.catolica.edu.br/conteudos/nbt_cursos/algoritmos_programacao/tema-06/index.html?print=1&access_token=eyJ0eXAiOiJKV1Qi… 9/17 Nesse algoritmo, o controle da repetição não é feito como uma nova pergunta (se o usuário deseja informar a nota de outro estudante), mas aproveitando uma entrada já existente (da nota) para funcionar como condição de saída. Nesse caso, a condição de saída é a nota ser negativa. Algo interessante é que, nesse caso, quando for digitada uma nota negativa, ela não deve ser somada ou contada. Então, deve haver um comando se para somente somar e contar quando a nota digitada não for negativa. Análise e Projeto Para Refletir Teríamos alguma outra solução para fazer esse algoritmo sendo que, a priori, não se sabe o número de estudantes da turma? Alguma proposta usando o comando para? 25/04/2020 Versão para impressão - Estrutura de Repetição Condicional https://conteudo.catolica.edu.br/conteudos/nbt_cursos/algoritmos_programacao/tema-06/index.html?print=1&access_token=eyJ0eXAiOiJKV1… 10/17 Você se lembra do texto introdutório da Unidade I, no qual falamos de eleição? Bem, voltemos ao assunto. Que tal implementarmos um algoritmo para uma eleição? Vamos usar esse algoritmo como exemplo para fazermos a análise e descobrir quando usar cada um dos dois tipos de repetição e os três comandos de repetição. Fonte: https://goo.gl/UW4ufL Nosso problema poderia ser implementar um algoritmo que recebesse o voto para prefeito de todos os eleitores de uma cidade e informasse o nome do vencedor. Essa cidade tem três candidatos com os números: 12 – Adamastor. 23 – Benedito. 45 – Camélia. O eleitor deveria digitar o número do candidato em que deseja votar ou 0 (zero) para encerrar a entrada de dados e com isso encerrar o algoritmo. É importante observar que pode haver empate. Vamos à análise: Saída: nome do prefeito eleito OU empate! Entrada: número do candidato (12, 23, 45 ou 0). Processamento: Durante a repetição: contar os votos; Depois da repetição: verificar quem foi o eleito OU se houve empate. Não vamos desprezar nosso tradicional esquema. Então, aí vai: https://goo.gl/UW4ufL 25/04/2020 Versão para impressão - Estrutura de Repetição Condicional https://conteudo.catolica.edu.br/conteudos/nbt_cursos/algoritmos_programacao/tema-06/index.html?print=1&access_token=eyJ0eXAiOiJKV1… 11/17 Após identificar o que se repete no algoritmo, devemos nos perguntar: essa repetição acontece "tantas" vezes? Onde é possível estabelecer um valor para esse "tantas", como 50 vezes, 20 vezes, etc. Se sim, é uma típica repetição controlada que será implementada pelo comando para. Se não, será uma repetição condicional. Aí a pergunta será outra: essa repetição acontece, no mínimo, 0 (zero) ou 1 vez? Se a resposta for 0, será implementada pelo comando enquanto, se for 1, será implementada pelo comando faca...enquanto. No nosso caso, não temos como dizer quantas vezes a repetição ocorrerá, então é um caso de repetição condicional, onde a condição é "ser digitado zero". A questão é: no mínimo quantas vezes? Veja o esquema que fizemos e pense na condição de parada da repetição. A condição de parada é "ter sido digitado zero" e a entrada do voto está dentro da repetição? Então, mesmo que na primeira vez seja digitado 0 (zero), isso já ocorreu dentro da primeira repetição. Então, a repetição ocorre, no mínimo, 1 (uma) vez! Vamos ao algoritmo. Vou apresentar em partes. Primeiro a repetição: Nada de muito especial: vários comandos escreva para orientar a entrada do usuário; um comando escolha para selecionar o voto; um contador de voto para cada candidato. 25/04/2020 Versão para impressão - Estrutura de Repetição Condicional https://conteudo.catolica.edu.br/conteudos/nbt_cursos/algoritmos_programacao/tema-06/index.html?print=1&access_token=eyJ0eXAiOiJKV1… 12/17 Se utilizamos um contador, esse precisa ser inicializado. A segunda parte é a declaração e inicialização das variáveis. Observe: A terceira parte é a decisão do vencedor, ou empate, e saída: Veja que usei três comandos se para isso. Cada um verifica se um determinado candidato foi eleito, ou seja, se ele teve mais votos que um e se ele teve mais votos que o outro. Como os três comandos se estão aninhados, não sendo eleito o primeiro, não sendo eleito o segundo e não sendo eleito o terceiro, é porque houve empate! A quarta e última parte é a síntese. Observe: Espero que tenha acompanhado a ideia e as partes do algoritmo que propusemos. Já sabe o que deve fazer agora, não é? É isso aí: junte os exemplos anteriores para virar um algoritmo completo. Teste, debugue e explore! Validação de Entrada 25/04/2020 Versão para impressão - Estrutura de Repetição Condicional https://conteudo.catolica.edu.br/conteudos/nbt_cursos/algoritmos_programacao/tema-06/index.html?print=1&access_token=eyJ0eXAiOiJKV1… 13/17 Um uso muito comum para os comandos de repetição condicional é validar a entrada do usuário. Como assim? Impedir que o usuário informe um valor inválido. Por exemplo, se ele tentar informar um valor inválido para sua idade, o algoritmo diria que o valor é inválido e pediria novamente para ele informar a idade. A questão é: se a idade é do usuário, como dizer que a idade que ele informou é realmente a idade dele. Isso não é possível saber, mas o objetivo é dizer que o valor que ele informou, quando for o caso, é um valor inválido para uma idade. Por exemplo, ninguém atualmente vive 150 anos, então toda idade deve ser inferior a essa. Não existem idades negativas, nem mesmo Benjamin Button . Veja um algoritmo que utiliza uma repetição condicional para fazer a validação de entrada da idade: Nessa aula você estudou sobre a repetição condicional e, com isso, encerramos nossa discussão sobre repetição. Acabamos também com a parte básica da programação. Agora você já é um programador completo! Parabéns! Por várias vezes, insistimos na importância de você testar, debugar, explorar, implementar, programar, etc. É que esta é a única maneira para aprender a programar. Não existe ninguém que tenha aprendido a programar sem programar. Todos são capazes de aprender a programar. Mas a prática é que fará a diferença entre um programador medíocre e um bom programador. Para algumas pessoas, pode ser mais difícil e para outras mais fácil programar. No entanto, para todos, o caminho é o mesmo: programar e programar! 25/04/2020 Versão para impressão - Estrutura de Repetição Condicional https://conteudo.catolica.edu.br/conteudos/nbt_cursos/algoritmos_programacao/tema-06/index.html?print=1&access_token=eyJ0eXAiOiJKV1… 14/17 ©2018 Copyright ©Católica EAD. Ensino a distância (EAD) com a qualidade da Universidade Católica de Brasília Na Prática "Prezado(a) estudante, Esta seção é composta por atividades que objetivam consolidar a sua aprendizagem quanto aos conteúdos estudados e discutidos. Caso alguma dessas atividades seja avaliativa, seu (sua) professor (a) indicará no Plano de Ensino e lhe orientará quanto aos critérios e formas de apresentaçãoe de envio." Bom Trabalho! Faça um algoritmo que leia o sexo de uma pessoa informado por "m" ou "f", verifique e imprima por extenso: masculino ou feminino. Seu algoritmo deve validar a entrada, somente permitindo a digitação de valores válidos. Uma empresa deseja aumentar seus preços em 20%. Faça um algoritmo que leia o código e o preço de custo de cada produto e calcule o novo preço. Calcule também a média dos preços com e sem aumento. Mostre o código e o novo preço de cada produto após a digitação desse e, no final, as médias. A entrada de dados deve terminar quando for lido um código de produto negativo. Atividade 01 Atividade 02 25/04/2020 Versão para impressão - Estrutura de Repetição Condicional https://conteudo.catolica.edu.br/conteudos/nbt_cursos/algoritmos_programacao/tema-06/index.html?print=1&access_token=eyJ0eXAiOiJKV1… 15/17 Uma pessoa deposita um valor na poupança a juro de 1,5% ao mês e deseja saber quantos meses deverá aguardar para que o valor atinja o montante de R$ 10.000,00. Faça um algoritmo que receba o valor inicial e informe o número de meses necessários. Observe que o valor inicialmente depositado pode ser superior a R$ 10.000,00. Atividade 03 25/04/2020 Versão para impressão - Estrutura de Repetição Condicional https://conteudo.catolica.edu.br/conteudos/nbt_cursos/algoritmos_programacao/tema-06/index.html?print=1&access_token=eyJ0eXAiOiJKV1… 16/17 ©2018 Copyright ©Católica EAD. Ensino a distância (EAD) com a qualidade da Universidade Católica de Brasília Saiba Mais Para ampliar o seu conhecimento a respeito desse assunto, veja abaixo a(s) sugestão(ões) do professor: Para reforçar os conteúdos de repetição condicional, assista ao vídeo "Estruturas de Repetição 1 - Curso de Algoritmos", do professor Gustavo Guanabara. Leia também o conteúdo sobre "Estruturas de Repetição", da Universidade Federal do Rio Grande do Norte. Para reforçar os conteúdos de repetição condicional, leia o conteúdo sobre "Comandos de repetição", de Paulo Sérgio de Moraes da Unicamp. https://www.youtube.com/watch?v=U5PnCt58Q68 http://www.dca.ufrn.br/~lmarcos/courses/DCA800/pdf/algoritmos_parte2.pdf https://ipiaetec.files.wordpress.com/2011/03/logica.pdf 25/04/2020 Versão para impressão - Estrutura de Repetição Condicional https://conteudo.catolica.edu.br/conteudos/nbt_cursos/algoritmos_programacao/tema-06/index.html?print=1&access_token=eyJ0eXAiOiJKV1… 17/17 ©2018 Copyright ©Católica EAD. Ensino a distância (EAD) com a qualidade da Universidade Católica de Brasília Referências ASCENCIO, A. F. G.; CAMPOS, E. A. V. de. Fundamentos da programação de computadores: algoritmos, Pascal e C/C++. São Paulo: PRENTICE HALL, 2003. 355 p. CAMARAO, C. Programação de computadores em Java. Rio de Janeiro: LTC, 2003. 241 p. FARRER, H. Algoritmos estruturados. 3. ed. Rio de Janeiro: LTC, 1999. 284 p. FORBELLONE, A. L. V.; EBERSPÄCHER, H. F. Lógica de programação: a construção de algoritmos e estrutura de dados. 2. ed. São Paulo: Makron Books, 2000. 195 p. GARCIA, Carolina. Antes das urnas eletrônicas, eleições em cédula de papel tinham clima de guerra. In: Último Segundo. 2014. Disponível em: <http://ultimosegundo.ig.com.br/politica/2014-09-21/antes-das-urnas-eletronicas- eleicoes-em-cedula-de-papel-tinham-clima-de-guerra.html>. Acesso em: 29 jun. 2016. MANZANO, J. A. N. G.; OLIVEIRA, J. F. de. Algoritmos: lógica para desenvolvimento de programação. 4. ed. São Paulo: Érica, 2000. 265 p. REVISTA BRASÍLIA. TSE comemora apuração com recorde mundial na divulgação do resultado das eleições 2010. 2010. Disponível em: <http://revistabrasilia.com.br/noticia/tse-comemora-apuracao-com-recorde-mundial- na-divulgacao-do-resultado-das-eleicoes-2010.html>. Acesso em: 29 jun. 2016. RISSOLI, V. R. V.; C. FILHO, E. G.; MARTINS, J. P. Desenvolvimento do ambiente virtual de apoio a aprendizagem em ciência da computação. In: IV Congresso de Iniciação Científica, 2003, Ribeirão Preto–SP: Brasil. ANAIS. Ribeirão Preto–SP: Brasil. Universidade de Ribeirão Preto, 2003. v. IV. p. 18. SALVETTI, D. D.; BARBOSA, L. M. Algoritmos. São Paulo: Makron Books, 1997. 274 p.
Compartilhar