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.
Desafio
MédioDefina um método calc(a, op, b) que:
- Lance um
ArgumentErrorcom a mensagem"unknown operator"seopnã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, imprimaBad operator - Em caso de
ZeroDivisionError, imprimaCannot 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
1Strings a Fundo
Visão Geral de Métodos de StringInterpolação de StringsIterando sobre StringsSplit e JoinRecapitulação - String Weaver4Blocos, Procs e Lambdas
O que é um Bloco?do..end vs ChavesA palavra-chave yieldParâmetros de BlocoProcs e LambdasRecapitulação - Iterador Customizado7Hashes Parte 2
Hash.new com Valores PadrãoIterando em HashesHashes AninhadosMesclando e TransformandoRecapitulação - Contador de Frequência10Projeto - Registros de Alunos
Visão Geral do ProjetoAdicionar Aluno2Intervalos
O que é um Intervalo?Métodos de IntervaloIntervalos em Case / WhenRecapitulação - Prática com Intervalos5O Poder do Enumerable
Select e RejectEncadeando o MapReduce / Injectcount, all?, any?, none?group_by e partitionsort_by, min_by, max_byRecapitulação - Data Pipeline3Arrays 2D
Fundamentos de Arrays 2DAcessando Elementos 2DIterando sobre Arrays 2DPadrões 2D ComunsRecapitulação - Operações com Matrizes6Projeto - Gerenciador de Biblioteca
Visão Geral do ProjetoAdicionar Livro9Tratamento de Erros
O que é uma Exceção?begin / rescueMúltiplas Cláusulas rescueensure e raiseRecapitulação - Calculadora Segura