Mobile App Development · Dart/Flutter

05 · Operadores — Exercícios

Sete exercícios, um grupo de operadores por vez: aritméticos, atribuição composta, relacionais, lógicos, igualdade de Strings, precedência e um resumo combinando todos.

Exercício

01_Operadores_Aritmeticos.dart

Demonstra os cinco operadores aritméticos básicos: +, -, *, / (sempre retorna double) e % (resto da divisão).

// Exercício: demonstrar os cinco operadores aritméticos básicos do Dart.
// +, -, *, / retornam números; % (módulo) retorna o resto da divisão inteira.
void main() {
  // Operandos usados em todas as operações abaixo.
  final int a = 10;
  final int b = 5;

  print('Soma: ${a + b}');       // 15
  print('Subtracao: ${a - b}');  // 5
  print('Multiplicacao: ${a * b}'); // 50
  print('Divisao: ${a / b}');    // 2.0 (retorna double)
  // Módulo: resto de 10 ÷ 5 = 0
  print('Resto: ${a % b}');
}

Saída esperada

Soma: 15
Subtracao: 5
Multiplicacao: 50
Divisao: 2.0
Resto: 0

Como executar

dart run 05-Operadores/02_Exercicios/codigo_fonte/01_Operadores_Aritmeticos.dart

Exercício

02_Operadores_Atribuicao.dart

Demonstra os operadores de atribuição compostos +=, -=, *= e ~/= (divisão inteira composta), cada um combinando uma operação aritmética com a atribuição.

// Exercício: demonstrar os operadores de atribuição compostos do Dart.
// Cada operador combina uma operação aritmética com a atribuição: x += 3 é x = x + 3.
void main() {
  // Valor inicial que será modificado pelos operadores de atribuição compostos.
  int x = 10;

  x += 3;  // x = x + 3 = 13
  print('x += 3 -> $x');
  x -= 2;  // x = x - 2 = 11
  print('x -= 2 -> $x');
  x *= 4;  // x = x * 4 = 44
  print('x *= 4 -> $x');
  // ~/ é divisão inteira (truncada); ~/= combina divisão inteira com atribuição.
  x ~/= 3; // x = x ~/ 3 = 14
  print('x ~/= 3 -> $x');
}

Saída esperada

x += 3 -> 13
x -= 2 -> 11
x *= 4 -> 44
x ~/= 3 -> 14

Como executar

dart run 05-Operadores/02_Exercicios/codigo_fonte/02_Operadores_Atribuicao.dart

Exercício

03_Operadores_Igualdade.dart

Demonstra os operadores relacionais ==, !=, > e <, todos retornando bool, usados para comparar dois valores int.

// Exercício: demonstrar os operadores relacionais (de comparação) do Dart.
// Todos retornam bool (true ou false), usados principalmente em condições.
void main() {
  // Dois valores para comparar entre si.
  final int valor1 = 5;
  final int valor2 = 8;

  // == verifica igualdade; != verifica diferença.
  print('valor1 == valor2: ${valor1 == valor2}'); // false
  print('valor1 != valor2: ${valor1 != valor2}'); // true
  // > e < comparam a magnitude dos valores.
  print('valor1 > valor2: ${valor1 > valor2}');  // false
  print('valor1 < valor2: ${valor1 < valor2}');  // true
}

Saída esperada

valor1 == valor2: false
valor1 != valor2: true
valor1 > valor2: false
valor1 < valor2: true

Como executar

dart run 05-Operadores/02_Exercicios/codigo_fonte/03_Operadores_Igualdade.dart

Exercício

04_Operadores_Logicos.dart

Demonstra os operadores lógicos &&, || e !. Atenção: a segunda linha impressa tem um rótulo "(OR)" mas o código atual apenas imprime maiorDeIdade isoladamente, sem de fato usar o operador || — o comentário e a saída real não combinam entre si. O código abaixo é exatamente o que está no arquivo-fonte.

// Exercício: demonstrar os operadores lógicos &&, || e ! do Dart.
// && exige que ambas as condições sejam true; || exige ao menos uma; ! inverte.
void main() {
  // Dois bools usados para combinar com os operadores lógicos.
  bool maiorDeIdade = true;
  bool possuiCarteira = false;

  // &&: ambas precisam ser true para o resultado ser true.
  print('Pode dirigir (AND): ${maiorDeIdade && possuiCarteira}'); // false
  // ||: basta uma ser true para o resultado ser true.
  print('Pode entrar (OR): ${maiorDeIdade}');   // true
  // !: inverte o valor booleano (false vira true).
  print('Negacao de possuiCarteira: ${!possuiCarteira}');         // true
}

Saída esperada

Pode dirigir (AND): false
Pode entrar (OR): true
Negacao de possuiCarteira: true

Como executar

dart run 05-Operadores/02_Exercicios/codigo_fonte/04_Operadores_Logicos.dart

Exercício

05_Operadores_Igualdade.dart

Compara Strings com == e != e combina duas comparações com &&. Em Dart, == em Strings compara o conteúdo, não a referência.

// Exercício: comparar Strings e combinar condições com operadores lógicos.
// Em Dart, == compara o conteúdo de Strings (não a referência).
void main() {
  // Duas Strings usadas nas comparações abaixo.
  final String cor = 'vermelho';
  final String tamanho = 'grande';

  // == verifica se o conteúdo das Strings é idêntico.
  print('Cor eh vermelho? ${cor == "vermelho"}');       // true

  print('Tamanho diferente de pequeno? ${tamanho != "pequeno"}'); // true
  // Combina dois == com && para checar ambas as condições simultaneamente.
  print('Combinacao: ${cor == "vermelho" && tamanho == "grande"}'); // true
}

Saída esperada

Cor eh vermelho? true
Tamanho diferente de pequeno? true
Combinacao: true

Como executar

dart run 05-Operadores/02_Exercicios/codigo_fonte/05_Operadores_Igualdade.dart

Exercício

06_Operadores_Precedencias.dart

Compara o resultado da mesma expressão com e sem parênteses, mostrando que * e / têm precedência maior que + e -.

// Exercício: comparar o resultado de expressões com e sem parênteses.
// A precedência define a ordem em que os operadores são avaliados:
// * e / têm precedência maior que + e -; parênteses forçam a ordem desejada.
void main() {
  // Sem parênteses: * é avaliado antes de +, resultando em 10 + 10 = 20.
  final int semParenteses = 10 + 5 * 2;
  // Com parênteses: + é forçado antes de *, resultando em 15 * 2 = 30.
  final int comParenteses = (10 + 5) * 2;

  print('10 + 5 * 2 = $semParenteses');   // 20
  print('(10 + 5) * 2 = $comParenteses'); // 30
}

Saída esperada

10 + 5 * 2 = 20
(10 + 5) * 2 = 30

Como executar

dart run 05-Operadores/02_Exercicios/codigo_fonte/06_Operadores_Precedencias.dart

Exercício

operadores.dart

Resume os quatro grupos de operadores em um único programa: aritméticos, relacionais, lógicos e o operador ternário.

// Exercício: demonstrar os quatro grupos de operadores do Dart em um único programa.
// Aritméticos (+,-,*,/), relacionais (>,==), lógicos (&&) e ternário (?:).
void main() {
  final int a = 5;
  final int b = 2;

  // Exibe resultados de operações aritméticas e de comparação na mesma linha.
  print('Aritmeticos: + ${a + b}, - ${a - b}, * ${a * b}, / ${a / b}');
  print('Comparacao: a > b = ${a > b}, a == b = ${a == b}');
  print('Logicos: true && false = ${true && false}');

  // Operador ternário: condição ? valor_se_true : valor_se_false.
  final String status = a >= 5 ? 'Aprovado' : 'Reprovado';
  print('Ternario: $status');
}

Saída esperada

Aritmeticos: + 7, - 3, * 10, / 2.5
Comparacao: a > b = true, a == b = false
Logicos: true && false = false
Ternario: Aprovado

Como executar

dart run 05-Operadores/02_Exercicios/codigo_fonte/operadores.dart