Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

Faça como eu fiz: crie a escolha de operação com estruturas condicionais

Operação com if-else
Foi feita uma refatoração no código da calculadora em Dart, organizando as condições de operação em um bloco if-else.

import 'dart:io';

void main() {
  print('***CALCULADORA BÁSICA EM DART***');
  print("Faça a escolha de dois números e logo em seguida escolha a operação:");

  double numeroUm = double.parse(
    stdin.readLineSync()!,
  ); //função double faz a conversão de String para número decimal
  double numeroDois = double.parse(stdin.readLineSync()!);
  String operacao = stdin
      .readLineSync()!; //Tratamento de String -nesse caso sinais de operação

  void soma() {
    //Crie a função soma
    print("O resultado da nossa soma é: ${numeroUm + numeroDois}");
  }

  void subtracao() {
    // Crie a função subtracao
    print("O resultado da nossa subtração é: ${numeroUm - numeroDois}");
  }

  void divisao() {
    print("O resultado da nossa divisão é: ${numeroUm / numeroDois}");
  }

  void multiplicacao() {
    print("O resultado da nossa multiplicação é: ${numeroUm * numeroDois}");
  }

//Otimização da condição if/else da nossa calculadora para a escolha da operação
  if (operacao == "+") {
    soma(); //Chama a função
  } else {
    if (operacao == "-") {
      subtracao();
    } else {
      if (operacao == "*") {
        multiplicacao();
      } else {
        if (operacao == "/") {
          divisao();
        }
      }
    }
  }
  print('***FIM***');
}
2 respostas
solução!

Oi, José! Como vai?
Agradeço por compartilhar seu código com a comunidade Alura.

Gostei muito da sua refatoração usando if-else. O código está bem estruturado e deixa clara a lógica de escolha da operação. A forma como você encapsulou as operações em funções específicas (soma, subtracao, divisao, multiplicacao) facilita a leitura e a manutenção do código.

Uma dica interessante para o futuro é usar o switch-case para deixar a escolha da operação ainda mais enxuta. Veja este exemplo:


import 'dart:io';

void main() {
  print('Digite um numero:');
  double numero1 = double.parse(stdin.readLineSync()!);

  print('Digite outro numero:');
  double numero2 = double.parse(stdin.readLineSync()!);

  print('Escolha a operacao (+, -, *, /):');
  String operacao = stdin.readLineSync()!;

  switch (operacao) {
    case '+':
      print(numero1 + numero2);
      break;
    case '-':
      print(numero1 - numero2);
      break;
    case '*':
      print(numero1 * numero2);
      break;
    case '/':
      print(numero1 / numero2);
      break;
    default:
      print('Operacao invalida');
  }
}

Esse código usa switch-case para comparar o valor da variável operacao e executar a operação correspondente, deixando o código mais limpo.

Alura Conte com o apoio da comunidade Alura na sua jornada. Abraços e bons estudos!

Obrigado