Mobile App Development · Dart/Flutter
Quatro exercícios com switch statement, switch expression com faixas de valor e verificação de tipo.
Exercício 1
Classifica uma nota numérica (0-100) em um conceito de A a F usando switch expression, com cada arm testando uma faixa de valores combinando >=, <= e &&.
// Exercício: classificar uma nota numérica em conceito (A-F) usando switch expression.
// O switch expression (Dart 3+) é uma forma compacta de mapear um valor a um resultado.
void main() {
// Nota a ser avaliada (0-100).
final int nota = 85;
// Switch expression: avalia a nota contra intervalos com && e retorna o conceito.
// _ é o caso padrão (wildcard), executado se nenhum padrão anterior corresponder.
final String conceito = switch (nota) {
>= 0 && <= 49 => 'F',
>= 50 && <= 59 => 'D',
>= 60 && <= 69 => 'C',
>= 70 && <= 79 => 'B',
>= 80 && <= 100 => 'A',
_ => 'Nota invalida',
};
print('Conceito: $conceito');
}
Saída esperada
Conceito: A
Como executar
dart run 09-When/02_Exercicios/codigo_fonte/01_Ex_When_AvaliacaoNotas.dart
Exercício 2
Traduz o nome de uma cor do português para o inglês usando switch statement tradicional, comparando por igualdade exata em cada case.
// Exercício: traduzir o nome de uma cor do português para o inglês usando switch/case.
// O switch testa a igualdade exata com cada 'case' e executa o bloco correspondente.
void main() {
// Cor em português que será traduzida.
String cor = 'vermelho';
// Variável que receberá a tradução após o switch.
String traducao;
// Compara 'cor' com cada case; 'break' impede a execução cair no próximo case.
switch (cor) {
case 'vermelho':
traducao = 'red';
break;
case 'azul':
traducao = 'blue';
break;
case 'verde':
traducao = 'green';
break;
default:
// Captura qualquer cor não mapeada nos cases anteriores.
traducao = 'Cor desconhecida';
}
print('Tradução: $traducao');
}
Saída esperada
Tradução: red
Como executar
dart run 09-When/02_Exercicios/codigo_fonte/02_Ex_When_Traducao_das_cores.dart
Exercício 3
Embora o nome sugira switch, este exercício classifica o sinal de um número (positivo, negativo ou zero) usando uma cadeia if / else if / else — útil para comparar essa abordagem com as versões por switch dos outros exercícios desta página.
// Exercício: classificar um número como positivo, negativo ou zero usando if/else if.
// Demonstra a estrutura condicional encadeada para cobrir todos os casos possíveis.
void main() {
// Número a ser classificado.
int numero = 7;
// Variável que receberá a classificação após o bloco condicional.
String classificacao;
// Verifica as três faixas: positivo, negativo ou exatamente zero.
if (numero > 0) {
classificacao = 'Positivo';
} else if (numero < 0) {
classificacao = 'Negativo';
} else {
// Só chega aqui se numero == 0.
classificacao = 'Zero';
}
print('Classificação: $classificacao');
}
Saída esperada
Classificação: Positivo
Como executar
dart run 09-When/02_Exercicios/codigo_fonte/03_Ex_When_Classificacao_de_numeros.dart
Exercício 4
Identifica o tipo de um valor Object em tempo de execução usando type patterns do Dart 3 dentro de um switch expression — cada arm como int _ casa com qualquer valor daquele tipo.
// Exercício: verificar o tipo de uma variável em tempo de execução com switch expression.
// Usa pattern matching de tipo (Dart 3+): 'int _' casa com qualquer valor do tipo int.
void main() {
// Variável cujo tipo será identificado dinamicamente.
const Object valor = 42;
// Cada arm usa um type pattern para verificar o tipo do valor.
// _ (wildcard) ignora o próprio valor e verifica apenas o tipo.
final String tipo = switch (valor) {
int _ => 'Inteiro',
String _ => 'Texto',
bool _ => 'Booleano',
_ => 'Tipo desconhecido',
};
print('Tipo: $tipo');
}
Saída esperada
Tipo: Inteiro
Como executar
dart run 09-When/02_Exercicios/codigo_fonte/04_Ex_When_Verificacao_de_Tipo.dart