Mobile App Development · Dart/Flutter

08 · IF — Desafios

Dois desafios que combinam if/else com outras ferramentas de decisão: ternário e switch em um, faixas etárias encadeadas no outro.

Desafio 1

desafio_01_classificador_pedidos.dart

Classifica um pedido por faixa de valor com if / else if / else, usa o operador ternário para indicar se há cupom aplicado e usa switch para mapear o status do pedido a uma mensagem — três estruturas de decisão diferentes em um único programa.

// Desafio: classificar pedidos usando if/else, operador ternário e switch.
// Combina múltiplas estruturas de controle de fluxo em um contexto real.
void main() {
  String cliente = 'Mariana';
  double valorPedido = 165.90;
  // bool que indica se um cupom foi aplicado ao pedido.
  bool temCupom = true;
  String status = 'preparando';

  // Cabeçalho do classificador.
  print('=== Classificador de Pedidos ===');
  print('Cliente: $cliente');
  print('Valor: R\$ ${valorPedido.toStringAsFixed(2)}');

  // Classifica o pedido por faixa de valor usando if/else if/else.
  if (valorPedido < 50) {
    print('Categoria: pedido pequeno');
  } else if (valorPedido < 150) {
    print('Categoria: pedido medio');
  } else {
    // Pedidos acima de R$ 150 são considerados grandes.
    print('Categoria: pedido grande');
  }

  // Operador ternário: condição ? valor_se_verdadeiro : valor_se_falso.
  // Forma compacta de um if/else que retorna um valor.
  print(temCupom ? 'Cupom aplicado' : 'Sem cupom aplicado');

  // Switch para mapear o status do pedido a uma mensagem descritiva.
  switch (status) {
    case 'novo':
      print('Status: pedido recebido');
      break;
    case 'preparando':
      print('Status: pedido em preparo');
      break;
    case 'enviado':
      print('Status: pedido saiu para entrega');
      break;
    case 'entregue':
      print('Status: pedido entregue');
      break;
    default:
      // Captura qualquer status não mapeado nos cases anteriores.
      print('Status: desconhecido');
  }
}

Saída esperada

=== Classificador de Pedidos ===
Cliente: Mariana
Valor: R$ 165.90
Categoria: pedido grande
Cupom aplicado
Status: pedido em preparo

Como executar

dart run 08-IF/03_Desafios/codigo_fonte/desafio_01_classificador_pedidos.dart

Desafio 2

desafio_if.dart

Classifica uma idade em quatro faixas etárias (criança, adolescente, adulto, idoso) usando uma cadeia de if / else if / else com limites superiores sucessivos.

void main() {
  // Desafio: classificar idade com if/else.
  final idade = 17;

  if (idade < 12) {
    print('Classificação: Criança');
  } else if (idade < 18) {
    print('Classificação: Adolescente');
  } else if (idade < 60) {
    print('Classificação: Adulto');
  } else {
    print('Classificação: Idoso');
  }
}

Saída esperada

Classificação: Adolescente

Como executar

dart run 08-IF/03_Desafios/codigo_fonte/desafio_if.dart