> For the complete documentation index, see [llms.txt](https://favelaware.gitbook.io/favelaware/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://favelaware.gitbook.io/favelaware/7-javascript/7.6-estruturas-de-repeticao.md).

# 7.6 - Estruturas de repetição

🔁 Estruturas de Repetição em JavaScript

## 🔁 Estruturas de Repetição em JavaScript

Aprender a **repetir ações** no código é essencial para escrever programas eficientes! Em JavaScript, usamos as **estruturas de repetição** (ou *loops*) para repetir blocos de código automaticamente, sem precisar escrever várias vezes a mesma coisa. Bora aprender? 🚀

***

### 🌀 Por que usar loops?

Imagine que você quer imprimir os números de 1 até 10. Você poderia escrever:

```js
console.log(1);
console.log(2);
console.log(3);
// ... até o 10!
```

😵 Cansativo, né? Com os **loops**, você pode fazer isso de forma simples:

```js
for (let i = 1; i <= 10; i++) {
  console.log(i);
}
```

Muito mais prático! Vamos conhecer os principais tipos de loops?

***

### 🔁 `for` — o clássico!

O `for` é um dos loops mais usados. Ele é perfeito quando você **sabe quantas vezes quer repetir** algo.

📦 Sintaxe:

```js
for (início; condição; atualização) {
  // bloco de código que será repetido
}
```

👀 Exemplo: contar de 1 a 5

```js
for (let i = 1; i <= 5; i++) {
  console.log("Número: " + i);
}
```

***

### 🔄 `while` — repita enquanto for verdade

O `while` é usado quando **não sabemos exatamente quantas vezes algo deve acontecer**, mas queremos repetir enquanto uma condição for verdadeira.

📦 Sintaxe:

```js
while (condição) {
  // bloco de código
}
```

👀 Exemplo: contar até 3

```js
let i = 1;

while (i <= 3) {
  console.log("Contando: " + i);
  i++;
}
```

⚠️ Cuidado! Se a condição nunca for falsa, o loop nunca para e o programa pode travar. Isso se chama **loop infinito**.

***

### 🔂 `do...while` — pelo menos uma vez

Esse loop garante que o código será executado **pelo menos uma vez**, mesmo que a condição seja falsa desde o começo.

📦 Sintaxe:

```js
do {
  // bloco de código
} while (condição);
```

👀 Exemplo:

```js
let senha = "123";
let tentativa;

do {
  tentativa = prompt("Digite a senha:");
} while (tentativa !== senha);

console.log("Acesso liberado!");
```

***

### 🧺 `for...of` — ideal para listas

Esse loop é usado para **percorrer arrays** (listas).

👀 Exemplo:

```js
let frutas = ["🍎", "🍌", "🍓"];

for (let fruta of frutas) {
  console.log("Fruta: " + fruta);
}
```

***

### 🗃️ `for...in` — para objetos

Use `for...in` quando quiser percorrer as **chaves (propriedades)** de um objeto.

👀 Exemplo:

```js
let pessoa = {
  nome: "Ana",
  idade: 18,
  cidade: "São Paulo"
};

for (let chave in pessoa) {
  console.log(chave + ": " + pessoa[chave]);
}
```

***

### ⚠️ Dicas importantes

✅ Use `for` quando souber quantas vezes o código precisa repetir.\
✅ Use `while` ou `do...while` quando a repetição depender de uma condição.\
✅ Use `for...of` para listas (arrays) e `for...in` para objetos.

***

### 🧠 Pratique!

> Tente criar um loop que imprima todos os números pares de 1 a 20!\
> E que tal somar todos os números de um array usando `for`?

Quanto mais você praticar, melhor vai entender. Bora codar! 💻🔥

***

### 📚 Referência

Esse conteúdo foi baseado na [documentação oficial do MDN](https://developer.mozilla.org/pt-BR/docs/Web/JavaScript/Guide/Loops_and_iteration). Sempre que quiser se aprofundar mais, consulte por lá!


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://favelaware.gitbook.io/favelaware/7-javascript/7.6-estruturas-de-repeticao.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
