Mobile App Development · Dart/Flutter

08 · IF — Exercícios

Sequência progressiva de exercícios sobre if, else if, else, entrada de dados via stdin e operadores lógicos.

Exercício 00

00_if.dart

O if/else mais simples possível: verifica se um número é par ou ímpar usando o operador módulo (%).

void main() {
  final numero = 10;

  if (numero % 2 == 0) {
    print('O numero eh par.');
  } else {
    print('O numero eh impar.');
  }
}

Saída esperada

O numero eh par.

Como executar

dart run 08-IF/02_Exercicios/codigo_fonte/00_if.dart

Exercício 01

01_Ex_IF_Verificacao_de_Idade.dart

Lê a idade digitada pelo usuário com stdin.readLineSync(), valida se a entrada é nula ou não numérica com int.tryParse, e só então decide se a pessoa é maior ou menor de idade.

import 'dart:io';

//Exercicio - Maior ou Menor de Idade

//=====Recebendo parametros do usuário =====
void main() {
  // Solicita ao usuário para digitar a idade
  print("Digite sua idade:");

  // Você pode usar uma função de leitura de entrada do usuário adequada para o seu ambiente, como o Node.js readline ou um prompt em um navegador da web. Aqui está um exemplo simples usando o prompt de um navegador:
  var idadeInput = stdin.readLineSync(); // Lê a entrada do usuário como uma string

  // Verifica se a entrada da idade é nula
  if (idadeInput == null) {
    print("Entrada inválida.");
    return; // Sai da função main se a entrada for nula
  }

  // Tenta converter a entrada de idade para um valor numérico
  var idade = int.tryParse(idadeInput);

  // Verifica se a conversão foi bem-sucedida ou se a entrada é inválida
  if (idade == null) {
    print("Idade inválida. Por favor, insira um número válido.");
    return; // Sai da função main se a conversão não for bem-sucedida
  }

  // Verifica se a idade é maior ou igual a 18
  if (idade >= 18) {
    print("Você é maior de idade.");
  } else {
    print("Você é menor de idade.");
  }
}

Saída esperada

Este exercício lê a idade via stdin — a saída depende do valor digitado. Exemplo: digitando 20, o programa exibe Digite sua idade: seguido de Você é maior de idade.; digitando um texto não numérico, exibe Idade inválida. Por favor, insira um número válido.

Como executar

dart run 08-IF/02_Exercicios/codigo_fonte/01_Ex_IF_Verificacao_de_Idade.dart

Exercício 02

02_Ex_IF_Classificacao_Numerica.dart

Classifica um número em positivo, negativo ou zero com uma cadeia if / else if / else.

//Exercício -  Classificação Númerica

void main() {
  var numero = 7; // Definindo o valor do número a ser verificado

  if (numero > 0) {
    // Verifica se o número é maior que zero
    print("O número é positivo."); // Se verdadeiro, imprime essa mensagem
  } else if (numero < 0) {
    // Caso contrário, verifica se o número é menor que zero
    print("O número é negativo."); // Se verdadeiro, imprime essa mensagem
  } else {
    print(
      "O número é zero.",
    ); // Se nenhuma das condições anteriores for verdadeira, imprime essa mensagem
  }
}

Saída esperada

O número é positivo.

Como executar

dart run 08-IF/02_Exercicios/codigo_fonte/02_Ex_IF_Classificacao_Numerica.dart

Exercício 03

03_Ex_IF_Par_Impar.dart

Mesma lógica par/ímpar do exercício 00, agora exibindo o próprio número na mensagem via interpolação de string.

void main() {
  final numero = 9;

  if (numero % 2 == 0) {
    print('$numero eh par');
  } else {
    print('$numero eh impar');
  }
}

Saída esperada

9 eh impar

Como executar

dart run 08-IF/02_Exercicios/codigo_fonte/03_Ex_IF_Par_Impar.dart

Exercício 04

04_Ex_Calculadora_Simples.dart

Uma calculadora simples: lê dois números e um operador (+, -, * ou /) via stdin, e usa uma cadeia de if/else if — uma por operador — para decidir qual conta fazer. Trata divisão por zero separadamente, já que em Dart ela não lança exceção (retorna Infinity ou NaN), o que confundiria quem está usando a calculadora.

import 'dart:io';

void main() {
  // Lê o primeiro número.
  stdout.write('Digite o primeiro número: ');
  final double? numero1 = double.tryParse(stdin.readLineSync() ?? '');

  // Lê o operador (+, -, * ou /).
  stdout.write('Digite o operador (+, -, *, /): ');
  final String operador = (stdin.readLineSync() ?? '').trim();

  // Lê o segundo número.
  stdout.write('Digite o segundo número: ');
  final double? numero2 = double.tryParse(stdin.readLineSync() ?? '');

  // Valida se os dois números foram digitados corretamente.
  if (numero1 == null || numero2 == null) {
    print('Números inválidos. Por favor, insira valores numéricos.');
    return;
  }

  // Decide a operação com uma cadeia de if/else if, uma por operador.
  if (operador == '+') {
    print('Resultado: ${numero1 + numero2}');
  } else if (operador == '-') {
    print('Resultado: ${numero1 - numero2}');
  } else if (operador == '*') {
    print('Resultado: ${numero1 * numero2}');
  } else if (operador == '/') {
    // Divisão por zero não gera exceção em Dart, mas o resultado (infinity/NaN) confunde o usuário.
    if (numero2 == 0) {
      print('Não é possível dividir por zero.');
    } else {
      print('Resultado: ${numero1 / numero2}');
    }
  } else {
    print('Operador inválido. Use +, -, * ou /.');
  }
}

Saída esperada

Ao digitar 10, + e 5:

Digite o primeiro número: 10
Digite o operador (+, -, *, /): +
Digite o segundo número: 5
Resultado: 15.0

Como executar

dart run 08-IF/02_Exercicios/codigo_fonte/04_Ex_Calculadora_Simples.dart

Exercício 05

05_Ex_IF_Verificacao_de_Acesso.dart

Lê usuário e senha digitados via stdin e usa && para conceder acesso apenas quando ambos coincidem com as credenciais predefinidas (alice / senha123).

import 'dart:io';

//Exercicío - Verificação de acesso.

void main() {
  var usuario = "alice"; // Nome de usuário predefinido
  var senha = "senha123"; // Senha predefinida

  // Solicita ao usuário para digitar o nome de usuário
  var usuarioInput = (stdin.readLineSync() ?? '');

  // Solicita ao usuário para digitar a senha
  var senhaInput = (stdin.readLineSync() ?? '');

  // Verifica se o nome de usuário e senha fornecidos correspondem às credenciais definidas
  if (usuarioInput == usuario && senhaInput == senha) {
    print(
      "Acesso permitido.",
    ); // Se as credenciais correspondem, imprime essa mensagem
  } else {
    print("Acesso negado."); // Caso contrário, imprime essa mensagem
  }
}

Saída esperada

Lê usuário e senha via stdin — a saída depende dos valores digitados. Digitando exatamente alice e senha123 (em duas linhas), o programa exibe Acesso permitido.; qualquer outra combinação exibe Acesso negado.

Como executar

dart run 08-IF/02_Exercicios/codigo_fonte/05_Ex_IF_Verificacao_de_Acesso.dart

Exercício 06

06_Ex_IF_Carro_Salario.dart

Três comparações independentes: números iguais (salario == contas), números com > e Strings comparadas com ==.

//Exercicio - Carro x Salario

void main() {
  var salario = 5000;
  var contas = 5000;

  var carro1 = "Fusca";
  var carro2 = "Brasilia";

  if (salario > contas) {
    print("Ufa que bom");
  } else {
    print("Que pena");
  }

  if (salario == contas) {
    print("Igual");
  } else {
    print("Diferente");
  }

  if (carro1 == carro2) {
    print("Strings iguais");
  } else {
    print("Strings diferentes");
  }
}

Saída esperada

Que pena
Igual
Strings diferentes

Como executar

dart run 08-IF/02_Exercicios/codigo_fonte/06_Ex_IF_Carro_Salario.dart

Exercício 07

07_Ex_IF_Habilitacao_And_Or.dart

Duas regras de decisão: uma com && (maior de idade E com carteira de motorista) e outra com || (tem ingresso OU está com a camisa do time).

import 'dart:io';

//Exercicio And e OR

void main() {
  var idade = 25;
  var possuiCarteiraDeMotorista = true;

  // Verifica se a pessoa é maior de idade (idade >= 18) e possui carteira de motorista
  if (idade >= 18 && possuiCarteiraDeMotorista) {
    print("Você pode dirigir legalmente.");
  } else {
    print("Você não pode dirigir legalmente.");
  }

  var temIngresso = false;
  var estaComCamisaDoTime = true;

  // Verifica se a pessoa tem ingresso OU está com a camisa do time
  if (temIngresso || estaComCamisaDoTime) {
    print("Você pode entrar no estádio.");
  } else {
    print("Você não pode entrar no estádio.");
  }
}

Saída esperada

Você pode dirigir legalmente.
Você pode entrar no estádio.

Como executar

dart run 08-IF/02_Exercicios/codigo_fonte/07_Ex_IF_Habilitacao_And_Or.dart

Exercício 08

08_DesafioIMC.dart

Calcula o Índice de Massa Corporal (peso dividido pela altura ao quadrado) e classifica o resultado em faixas com uma cadeia if / else if / else.

void main() {
  final peso = 70.0;
  final altura = 1.75;
  final imc = peso / (altura * altura);

  String categoria;
  if (imc < 18.5) {
    categoria = 'Abaixo do peso';
  } else if (imc < 25) {
    categoria = 'Peso normal';
  } else if (imc < 30) {
    categoria = 'Sobrepeso';
  } else {
    categoria = 'Obesidade';
  }

  print('IMC: ${imc.toStringAsFixed(2)}');
  print('Categoria: $categoria');
}

Saída esperada

IMC: 22.86
Categoria: Peso normal

Como executar

dart run 08-IF/02_Exercicios/codigo_fonte/08_DesafioIMC.dart

Exercício 09

09_Condicional_IF_Exercicio.dart

Compara salário e contas com > para decidir entre uma mensagem positiva ou de alerta financeiro.

void main() {
  final salario = 8500;
  final contas = 8000;

  if (salario > contas) {
    print('Situacao financeira positiva.');
  } else {
    print('Ajustar gastos.');
  }
}

Saída esperada

Situacao financeira positiva.

Como executar

dart run 08-IF/02_Exercicios/codigo_fonte/09_Condicional_IF_Exercicio.dart