Práticas de Programação

Repetição: for, for...in e for...of

O que é o for?

Outra estrutura de repetição. No while, o início, a condição e o passo ficam espalhados. No for, os três ficam juntos numa linha, separados por ;.

for (início; condição; passo) {
  instrução;
}

Por costume, a contadora do for se chama i (de índice).

for x while: o mesmo laço

Os dois códigos abaixo fazem exatamente a mesma coisa.

// while
let i = 1;              // início
while (i <= 10) {       // condição
  console.log(i);
  i++;                  // passo
}

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

Use o for quando você já sabe quantas vezes vai repetir (de 1 a 10, as 4 notas...). Use o while quando depende de algo que muda no caminho (repetir até o usuário digitar certo).

Exemplo 1: contar e somar

O mesmo exemplo da página de repetição, agora com for. A soma continua sendo a acumuladora; o i é a contadora.

let soma = 0;

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

console.log("O somatório é: " + soma); // 55

Código desta seção: js/for.js, seção 1.


      

Exemplo 2: tabuada

O i vai de 1 a 10 e cada rodada monta uma linha da tabuada.

for (let i = 1; i <= 10; i++) {
  console.log(numero + " x " + i + " = " + numero * i);
}

Código desta seção: js/for.js, seção 2.


      

Exemplo 3: contagem regressiva

O for também anda para trás: começa alto, a condição vira >= e o passo vira i--.

for (let i = 10; i >= 1; i--) {
  console.log(i);
}
console.log("Fogo!");

Cuidado: com i++ aqui, o i só aumenta, a condição i >= 1 nunca fica falsa e vira loop infinito.

Código desta seção: js/for.js, seção 3.


      

Exemplo 4: for...in (percorrer um objeto)

Objeto é um "pacote" de informações com nome, entre { }: cada linha é propriedade: valor. Ele representa uma coisa do mundo real, como uma pessoa.

// Variável: 1 nome, 1 valor
const nome = "pedruxo";
const nota = 1;

// Objeto: 1 nome, vários valores juntos
const pessoa = {
  nome: "pedruxo",
  telefone: "(55) 9 8888-4321",
  endereco: "ABC"
};

console.log(pessoa.nome);     // "pedruxo"  (ponto + nome da propriedade)
console.log(pessoa["nome"]);  // "pedruxo"  (mesma coisa, com colchetes)

Com o objeto pronto, o for...in passa por cada propriedade sozinho:

const pessoa = {
  nome: "pedruxo",
  telefone: "(55) 9 8888-4321",
  endereco: "ABC"
};

for (let atributo in pessoa) {
  console.log(atributo + " -> " + pessoa[atributo]);
}

Código desta seção: js/for.js, seção 4.








      

Exemplo 5: for...of (percorrer um array)

Array (ou vetor) é uma lista de valores entre [ ]. Cada valor tem uma posição, o índice, que começa em 0. Arrays são o assunto da próxima unidade.

const carros = ["Gol", "Fusca", "Virtus", "Ka"];

for (let carro of carros) {
  console.log(carro);
}

console.log(carros[0]); // "Gol": o primeiro fica na posição 0

O for...of passa pelo valor de cada item e sempre percorre a lista inteira, sem você controlar tamanho ou condição.

Código desta seção: js/for.js, seção 5.


      

Exemplo 6: for...of com texto

Um texto (string) também é uma sequência: o for...of pega uma letra por rodada. O espaço também conta.

const curso = "Gran Cursos";

for (let letra of curso) {
  console.log(letra);
}

Código desta seção: js/for.js, seção 6.


      

in ou of?

Laço Percorre Cada rodada recebe
for números (você controla) o contador i
for...in objeto { } o nome da propriedade
for...of array [ ] ou texto o valor de cada item

Para lembrar: in = nomes que estão dentro do objeto; of = cada valor da lista.