Mobile App Development · Dart/Flutter
Sequência progressiva de exercícios sobre if, else if, else, entrada de dados via stdin e operadores lógicos.
Exercício 00
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
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
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
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
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
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
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
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
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
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