Estruturas de controle
if-else
// desvio condicional simples
if (condição)
instrução;
// desvio condicional simples com mais de uma instrução
if (condição) {
instrução1;
instrução2;
}
// desvio condicional composto
if (condição) {
instrução1;
} else {
instrução2;
}
// desvio condicional encadeado
if (condição1) {
instrução1;
} else if (condição2) {
instrução2;
} else {
instrução3;
}
Exemplo: comparar dois números inteiros fornecidos pelo usuário.
const n1 = parseInt(prompt("Por favor, digite um número inteiro."));
const n2 = parseInt(prompt("Por favor, digite mais um número inteiro."));
let resp;
if (n1 > n2) {
resp = `${n1} é maior que ${n2}`;
} else if (n1 > n2) {
resp = `${n1} é menor que ${n2}`;
} else {
resp = `${n1} e ${n2} são iguais`;
}
alert(resp);
switch
// estrutura de seleção / múltipla escolha
switch (expressão) {
case valor1:
instrução1;
[break;]
case valor2:
instrução2;
[break;]
default:
instrução3;
}
Exemplo: mostrar um conceito entre, muito ruim, ruim, regular, bom ou muito bom, para valores numéricos de 1 a 5.
let num = parseInt(prompt("Por favor, digite um número inteiro de 1 a 5"));
switch(num) {
case 1:
console.log("Muito ruim");
break;
case 2:
console.log("Ruim");
break;
case 3:
console.log("Regular");
break;
case 4:
console.log("Bom");
break;
case 5:
console.log("Muito bom");
break;
default:
console.log("Número fora do intervalo esperado");
}
while
// estrutura de repetição pré condicional
while (expressão)
instrução;
Exemplo: listar no console os números de 1 até 10.
let contador = 1;
while (contador <= 10) {
console.log(contador);
contador++;
}
do-while
// estrutura de repetição pós condicional
do {
instrução;
} while (expressão);
Exemplo: interromper um loop quando o usuário digitar “SAIR”
let comando;
do {
comando = window.prompt("Para terminar, digite SAIR.");
} while (comando !== "SAIR");
for
// estrutura de repetição preparada
for (expressãoInicial; condição; expressãoDeIncremento)
instrução;
Exemplo: listar no console os números de 1 até 10.
for (let contador = 1; contador <= 10; contador++) {
console.log(contador);
}
for-in
for (variável in objeto)
instrução;
Exemplo: iterar os atributos de um objeto e mostrar seus valores.
let objeto = { nome: "Fulano", email: "fulano@gmail.com" };
for (let atributo in objeto) {
console.log(`O atributo ${atributo} tem valor ${objeto[atributo]}`);
}
for-of
for (variável of objeto)
instrução;
Exemplo: iterar os itens de um array e mostrar seus valores.
let frutas = ["Laranja", "Banana", "Abacate"];
for (let item of frutas) {
console.log(item);
}
break
break [rótulo];
Exemplo: interromper um loop quando o usuário digitar “SAIR”.
let comando;
while(true) {
comando = window.prompt("Para terminar, digite SAIR.")
if (comando === "SAIR") break;
}
continue
continue [rótulo];
Exemplo: somar apenas os números pares.
let i, n, s;
for (i = 0, s = 0; i < 10; i++) {
n = parseFloat(window.prompt("Digite um número:"));
if (n % 2 == 1) continue; // ir para a próxima iteração
s += n;
}
console.log("Soma:", s);
Exemplo: demonstração do uso de rótulos (labels).
let i, j;
loop_i:
for (i = 1; i <= 10; i++) {
loop_j:
for (j = 10; j >= 1; j--) {
// avançar loop_i quando i e j forem iguais
if (j === i) continue loop_i;
console.log(`${i}\t${j}`);
}
}
Trabalhando com erros
Gerando erros
function obterNumero() {
const str = prompt("Por favor, digite um número inteiro");
const num = parseInt(str);
if (isNaN(num)) {
throw "Número inválido";
} else {
return num;
}
}
Verificando erros
try {
const n1 = obterNumero();
const n2 = obterNumero();
const resp = n1 + n2;
// gerar um erro caso o resultado seja negativo
if (resp < 0) throw "Resultado negativo";
console.log(`${n1} + ${n2} = ${resp}`);
} catch(err) {
console.error(err);
} finally {
console.log("Fim da execução");
}