Buscar

Versão para impressão - Estrutura de Repetição Condicional

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.

Continue navegando