Pular para o conteúdo principal

Controle de Fluxo

if, else, else if

Estruturas condicionais permitem executar código baseado em condições:

int idade = 20;

if (idade >= 18) {
print("Maior de idade");
} else {
print("Menor de idade");
}

// else if para múltiplas condições
int nota = 85;

if (nota >= 90) {
print("Excelente");
} else if (nota >= 70) {
print("Bom");
} else if (nota >= 50) {
print("Regular");
} else {
print("Insuficiente");
}

// Condições aninhadas
bool temPermissao = true;
bool temRecurso = false;

if (temPermissao) {
if (temRecurso) {
print("Pode realizar a operação");
} else {
print("Recurso não disponível");
}
} else {
print("Sem permissão");
}

switch case

O switch é útil para múltiplas condições baseadas no mesmo valor:

String dia = "segunda";

switch (dia) {
case "segunda":
case "terça":
case "quarta":
case "quinta":
case "sexta":
print("Dia útil");
break;
case "sábado":
case "domingo":
print("Fim de semana");
break;
default:
print("Dia inválido");
}

Com enums:

enum Status { pendente, concluido, cancelado }

Status status = Status.pendente;

switch (status) {
case Status.pendente:
print("Aguardando");
break;
case Status.concluido:
print("Finalizado");
break;
case Status.cancelado:
print("Cancelado");
break;
}

Loops

for com index

Loop tradicional com contador:

for (int i = 0; i < 5; i++) {
print("Número: $i");
}

for-in

Itera sobre elementos de uma coleção:

List<String> nomes = ['João', 'Maria', 'Pedro'];

for (String nome in nomes) {
print(nome);
}

forEach

Método de coleções para iterar:

List<int> numeros = [1, 2, 3, 4, 5];

numeros.forEach((numero) {
print(numero * 2);
});

// Ou com arrow function
numeros.forEach((numero) => print(numero * 2));

while

Executa enquanto a condição for verdadeira:

int contador = 0;

while (contador < 5) {
print(contador);
contador++;
}

do-while

Executa pelo menos uma vez, depois verifica a condição:

int contador = 0;

do {
print(contador);
contador++;
} while (contador < 5);

break e continue

  • break: Sai do loop imediatamente
  • continue: Pula para a próxima iteração
for (int i = 0; i < 10; i++) {
if (i == 3) {
continue; // Pula o 3
}
if (i == 7) {
break; // Para no 7
}
print(i); // 0, 1, 2, 4, 5, 6
}

Exercícios

  1. Estruturas condicionais: Crie uma função que receba uma nota (0-100) e retorne o conceito: "A" (90-100), "B" (80-89), "C" (70-79), "D" (60-69) ou "F" (0-59). Use if-else.

  2. Switch case: Crie uma função que receba um dia da semana (String) e retorne se é dia útil ou fim de semana. Use switch case.

  3. Loops for: Crie uma função que some todos os números de 1 até um número n usando um loop for. Por exemplo, se n for 5, a soma será 1 + 2 + 3 + 4 + 5 = 15.

  4. Loops while: Crie uma função que conte de 1 até 10 usando um loop while e imprima cada número.

  5. break e continue: Crie uma função que imprima os números de 1 a 20, mas pule os múltiplos de 3 usando continue e pare quando encontrar o número 15 usando break.

Soluções

Ver solução do exercício 1
String obterConceito(int nota) {
if (nota >= 90 && nota <= 100) {
return "A";
} else if (nota >= 80) {
return "B";
} else if (nota >= 70) {
return "C";
} else if (nota >= 60) {
return "D";
} else {
return "F";
}
}

void main() {
print(obterConceito(95)); // A
print(obterConceito(85)); // B
print(obterConceito(75)); // C
print(obterConceito(65)); // D
print(obterConceito(55)); // F
}
Ver solução do exercício 2
String verificarDia(String dia) {
switch (dia.toLowerCase()) {
case "segunda":
case "terça":
case "quarta":
case "quinta":
case "sexta":
return "Dia útil";
case "sábado":
case "domingo":
return "Fim de semana";
default:
return "Dia inválido";
}
}

void main() {
print(verificarDia("segunda")); // Dia útil
print(verificarDia("sábado")); // Fim de semana
print(verificarDia("quarta")); // Dia útil
print(verificarDia("domingo")); // Fim de semana
}
Ver solução do exercício 3
int somarNumeros(int n) {
int soma = 0;
for (int i = 1; i <= n; i++) {
soma += i;
}
return soma;
}

void main() {
print(somarNumeros(5)); // 15 (1 + 2 + 3 + 4 + 5)
print(somarNumeros(10)); // 55
print(somarNumeros(3)); // 6
}
Ver solução do exercício 4
void contarAteDez() {
int contador = 1;

while (contador <= 10) {
print(contador);
contador++;
}
}

void main() {
contarAteDez();
}
Ver solução do exercício 5
void imprimirNumeros() {
for (int i = 1; i <= 20; i++) {
if (i % 3 == 0) {
continue; // Pula múltiplos de 3
}

if (i == 15) {
break; // Para quando encontrar 15
}

print(i);
}
}

void main() {
imprimirNumeros();
}