Conteúdo principal
Curso: Programação > Unidade 1
Lição 12: Repetições- Introdução aos laços de repetição While
- Usando laços while
- Mais Laços While: Um Monte de Balões
- Laços For! Um novo tipo de Estrutura de Repetição
- Desafio: Folha com Linhas
- Laços For Aninhados
- Revisão: Repetições
- Projeto: Construindo uma Casa
© 2024 Khan AcademyTermos de usoPolítica de privacidadeAviso de cookies
Revisão: Repetições
Esta é uma revisão do que vimos até aqui sobre loops.
Quando estamos escrevendo programas, geralmente queremos repetir diversas vezes o mesmo código, ou repeti-lo com alguma pequena variação de cada vez. Para evitar escrever todo esse código, podemos usar um laço. O JavaScript tem dois tipos de laços, o laço while e o laço for.
O laço while é uma maneira de repetir código até que alguma condição seja falsa. Por exemplo, este laço while irá mostrar o valor de y em (30, y) com a condição de que y seja menor que 400. O laço soma 20 ao y a cada iteração, dessa forma o y começa no 40 e vai para 60, 80, 100, 120, etc.
var y = 40;
while (y < 400) {
text(y, 30, y);
y += 20;
}
É importante que a condição dentro dos parênteses se torne falsa em algum momento - se não, teremos o que é conhecido como um laço infinito! Isso é o que aconteceria se removêssemos
y += 20
, pois y teria o valor 40 para sempre, e seria sempre menor que 400. O programa nunca saberia quando parar.var y = 40;
while (y < 400) {
text(y, 30, y);
}
O laço for é similar ao laço while, mas com sintaxe mais específica. Programadores inventaram o laço for quando perceberam que estavam fazendo as mesmas três coisas - criando variáveis contadoras (como o y acima), somando a elas uma certa quantidade e checando se elas eram menores que determinado valor. A sintaxe de um laço for tem lugares especiais para cada uma dessas três coisas. Aqui está o laço while acima transformado em laço for:
for (var y = 40; y < 400; y += 20) {
text(y, 30, y);
}
Laços podem ainda ser aninhados. É muito comum aninhar laços for, especialmente em desenhos 2D, pois isso facilita a criação de formas quadriculadas. Quando aninhamos um laço dentro de outro, estamos dizendo ao programa para "fazer essa coisa X vezes e, para cada vez que você fizer isso, também faça essa outra coisa Y vezes". Pense no desenho de uma grade - nós teríamos que dizer ao programa para "criar uma coluna 10 vezes e, para cada coluna, também criar 15 células dentro dela". Veja como usar laços for aninhados para isso:
for (var col = 0; col < 10; col++) {
for (var linha = 0; linha < 15; linha++) {
rect(col*20, linha*20, 20, 20);
}
}
Quando devemos utilizar o laço for ao invés do laço while? Isso é com você. Muitos programadores preferem laços for, porque com eles é mais difícil criar acidentalmente um laço infinito (porque é mais difícil de esquecermos de incrementar sua variável contadora), mas, algumas vezes, um laço while pode fazer mais sentido. Teste os dois!
Quer participar da conversa?
- posso fazer o mesmo com c++?(12 votos)
- Sim, de forma semelhante, mas não exatamente. O principio é o mesmo.
Na linguagem C++ você usa a mesma estrutura de repetição(iteração) . FOR, WHILE e DO WHILE.(16 votos)
- Gostaria que esses arquivos fossem traduzidos para português.(4 votos)
- Rogério, estou desenvolvendo um curso complementar a este, utilizando o mesmo ambiente.
Dê uma olhada no youtube:
https://www.youtube.com/watch?v=TciyRM4tSEc
Está totalmente em português.
Depois de assistir as primeiras aulas gostaria que me dissesse o que achou, ok?(21 votos)
- Gostaria que esse curso fosse menor(0 votos)
- Se fosse menor, não daria para absorver bem o conteúdo(13 votos)
olá, tem algun curso de phyton ou alguma coisa do tipo
aqui na khan academy? se não, onde tem de graça, para
crianças de mais ou menos 13 anos?(4 votos)- Tem o do site "Curso em Vídeo"(2 votos)
for (var col = 0; col < 10; col++) {
for (var linha = 0; linha < 15; linha++) {
rect(col*20, linha*20, 20, 20);
}
}
Alguém poderia me explicar por que o código também desenha 15 colunas horizontais em vez de 10, sendo que o primeiro loop, o loop "pai" do segundo loop, deveria acabar, já que ele chegaria a seu "limite" mais rápido?(3 votos)- Então lucas, analisei sua pergunta com o metodo de depuração ensinado a algumas aulas atras, e a conclusão é que para cada coluna executada no primeiro laço for 15 linhas serão executadas no segundo laço for, pois ele esta dentro do primeiro. segue o código que eu utilizei.
for (var col = 0; col < 10; col++) {
for (var linha = 0; linha < 15; linha++) {
rect(col*20, linha*20, 20, 20);
println("o valor de col é "+ col + "e o valor de linha é " + linha);
}
}
Ao executar o código ficará bem simples de entender.(2 votos)
- como faço para converte um loop while para um loop for, eu tentei fazer algo, mas, deu errado(1 voto)
- Depende de cada caso, mas a fórmula é básica para todos.
No Loop while : while ( condição ) { texto }
Responda a 3 perguntas chaves: 1)O que eu quero repetir? 2)O que eu quero que mude toda vez que se repetir? 3)Por quanto tempo eu quero repetir essa informação?
*EX:* var i = 0;
while (i < 20) { var lineY = 20 + (i * 20); line(0, lineY, 400, lineY); i++;}
Já no Loop for : for (como a variável deve começar; quanto tempo vai durar; qual a mudança) { texto; }
*EX:* for (var i = 0; i < 20; i++) { var lineY = 20 + (i * 20); line(0, lineY, 400, lineY);}(4 votos)
- Lição 12, Revisão: Repetições. No caso do laço aninhado, o For interno deve sempre ter um How Long maior?(1 voto)