Ripasso - Calcolatrice sicura
Fa parte della sezione Logica e flusso del percorso Ruby di Coddy. Lezione 47 di 56.
Crea una piccola calcolatrice che gestisca gli input non validi, combinando raise, più clausole rescue e ensure.
Sfida
MedioDefinisci un metodo calc(a, op, b) che:
- Genera
ArgumentErrorcon il messaggio"unknown operator"seopnon è uno tra+,-,*,/ - Esegue l’operazione negli altri casi (usa l’aritmetica intera per
/)
Quindi leggi tre righe dall’input, a, op, b: e chiama calc all’interno di begin / rescue / ensure:
- In caso di successo, stampa
<a> <op> <b> = <result> - In caso di
ArgumentError, stampaBad operator - In caso di
ZeroDivisionError, stampaCannot divide by zero - In
ensure, stampa sempre--- end ---
Usa Integer(...) per analizzare a e b, all’interno dello stesso blocco begin, così anche un input non intero rientra in Bad operator (ArgumentError copre entrambi i casi).
Per l’input 6 / * / 7, l’output è:
6 * 7 = 42
--- end ---Per l’input 10 / / / 0:
Cannot divide by zero
--- end ---Provalo tu
# TODO: define calc(a, op, b), raises ArgumentError on unknown op
raw_a = gets.chomp
op = gets.chomp
raw_b = gets.chomp
# TODO: begin/rescue/ensure as described
Tutte le lezioni di Logica e flusso
1Le stringhe in dettaglio
Panoramica dei metodi delle stringheInterpolazione di stringheIterare sulle stringheDividere e unireRiepilogo - Tessitore di stringhe4Blocchi, Proc e Lambda
Che cos’è un Block?do..end vs parentesi graffeLa keyword yieldParametri del BlockProc e LambdaRiepilogo - Iteratore personalizzato7Hash in Ruby - Parte 2
Hash.new con valori predefinitiIterare sugli hashHash annidatiUnire e trasformareRipasso - Contatore di frequenza10Progetto - Registri degli studenti
Panoramica del progettoAggiungere uno studente2Intervalli
Che cos'è un intervallo?Metodi degli intervalliIntervalli in Case / WhenRiepilogo - Esercitarsi con gli intervalli5La potenza di Enumerable
Select e RejectConcatenare MapReduce / Injectcount, all?, any?, none?group_by e partitionsort_by, min_by, max_byRiepilogo - Pipeline di dati3Array bidimensionali
Basi degli array 2DAccesso agli elementi 2DIterare sugli array 2DPattern comuni con array 2DRiepilogo - Operazioni sulle matrici6Progetto - Gestore della biblioteca
Panoramica del progettoAggiungere un libro9Gestione degli errori
Che cos’è un’eccezione?begin / rescueClausole rescue multipleensure e raiseRipasso - Calcolatrice sicuraEsercitati da solo: Compilatore Ruby online