Menu
Coddy logo textTech

Recapitulação - Calculadora Segura

Parte da seção Lógica e Fluxo do Journey de Ruby da Coddy — lição 47 de 56.

Construa uma pequena calculadora que sobreviva a entradas inválidas, combinando raise, múltiplas cláusulas rescue e ensure.

challenge icon

Desafio

Médio

Defina um método calc(a, op, b) que:

  • Lance um ArgumentError com a mensagem "unknown operator" se op não for um dos seguintes: +, -, *, /
  • Caso contrário, realize a operação (use aritmética de inteiros para /)

Em seguida, leia três linhas da entrada, a, op, b: e chame calc dentro de um bloco begin / rescue / ensure:

  • Em caso de sucesso, imprima <a> <op> <b> = <result>
  • Em caso de ArgumentError, imprima Bad operator
  • Em caso de ZeroDivisionError, imprima Cannot divide by zero
  • No ensure, sempre imprima --- end ---

Use Integer(...) para converter a e b, dentro do mesmo bloco begin, para que entradas não inteiras também resultem em Bad operator (ArgumentError abrange ambos os casos).

Para a entrada 6 / * / 7, a saída é:

6 * 7 = 42
--- end ---

Para a entrada 10 / / / 0:

Cannot divide by zero
--- end ---

Experimente você mesmo

# TODO: definir calc(a, op, b), lança ArgumentError em op desconhecido

raw_a = gets.chomp
op    = gets.chomp
raw_b = gets.chomp

# TODO: begin/rescue/ensure conforme descrito

Todas as lições de Lógica e Fluxo