I due tipi di numeri più comuni in Ruby sono:
-6, 0, 1, 25, 976 e 500000.-2.4, 0.1, 3.14, 16.984025 e 1024.0.Sono implementati tramite le classi Integer e Float.
Queste classi hanno metodi che convertono i valori da un tipo all'altro. I numeri Integer sono precisi all'unità intera, mentre Float ha una precisione frazionaria rispetto a un numero intero:
Integer#to_f: Converte in un nuovo numero in virgola mobileFloat#ceil: Arrotonda per eccesso all'intero più vicinoFloat#floor: Arrotonda per difetto all'intero più vicinoFloat#round: Arrotonda all'intero più vicinoFloat#to_i: Tronca all'intero più vicinoRuby ha quelle che vengono chiamate espressioni di controllo del flusso: servono a controllare il modo in cui il programma verrà eseguito e assumono un valore «truthy» o «falsey». Esistono operatori che possono essere usati per creare valori «truthy» o «falsey», noti come operatori di confronto.
Ci sono due espressioni di controllo principali che determinano quale codice verrà eseguito e quale no. In altre parole, quale ramo verrà eseguito.
Queste due sono: l'espressione if e l'espressione unless.
Gli operatori di confronto servono a confrontare valori e restituiscono un valore true o false.
Gli operatori seguenti richiedono che i due valori confrontati siano dello stesso tipo.
Se i valori non sono dello stesso tipo, il compilatore restituirà un errore.
Ecco un elenco degli operatori e un esempio di quando restituiscono un valore true:
| Metodo | Descrizione | Esempio |
|---|---|---|
| < | minore di | 4 < 5 |
| <= | minore o uguale a | 4 <= 4 |
| > | maggiore di | 3 > 1 |
| >= | maggiore o uguale a | 2 >= 2 |
Gli operatori di uguaglianza e disuguaglianza, a differenza di quelli appena visti, possono essere usati per confrontare valori di qualsiasi tipo.
L'operatore == serve a verificare se due valori sono uguali, e questo include il controllo del tipo del valore.
L'operatore != funziona allo stesso modo, ma restituisce true se i valori non sono uguali e false se sono uguali.
Ecco un elenco degli operatori di uguaglianza e disuguaglianza e un esempio di quando restituiscono un valore true:
| Metodo | Descrizione | Esempio |
|---|---|---|
| == | uguale | 4 == 4 |
| != | non uguale | 5 != 4 |
if
L'istruzione if serve a verificare se una determinata condizione è «truthy» o «falsey».
Se la condizione è truthy, il codice all'interno dell'istruzione if verrà eseguito.
Un'istruzione if termina con la parola chiave end.
value = 1
if value == 1
"1 is equal to 1"
end
# => "1 is equal to 1"
if value > 2
"1 is greater than 2"
end
# => nil
unless
L'istruzione unless funziona in modo molto simile all'istruzione if, ma esegue il codice al suo interno se la condizione è falsey.
value = 1
unless value == 1
"1 is not equal to 1"
end
# => nil
unless value > 2
"1 is not greater than 2"
end
# => "1 is not greater than 2"
else
L'istruzione else può essere usata insieme all'istruzione if.
L'istruzione else viene eseguita se il ramo if non viene eseguito.
value = 1
if value == 1
"1 is equal to 1"
else
"1 is not equal to 1"
end
# => "1 is equal to 1"
L'istruzione elsif può essere usata insieme all'istruzione if.
L'istruzione elsif viene eseguita se il ramo if non viene eseguito e la condizione dell'istruzione elsif è truthy.
Le istruzioni elsif possono essere concatenate tra loro e verrà eseguita la prima condizione truthy.
Alla fine dell'istruzione if può esserci anche un'istruzione else, che verrà eseguita se nessuna delle istruzioni precedenti è risultata vera.
value = 1
if value != 1
"1 is not equal to 1"
elsif value > 2
"1 is greater than 2"
else
"1 is not equal to 1 and 1 is not greater than 2"
end
# => "1 is not equal to 1 and 1 is not greater than 2"
In questo esercizio scriverai codice per analizzare la produzione di una catena di montaggio in una fabbrica di automobili.
La velocità della catena di montaggio può variare da 0 (spenta) a 10 (massima).
Alla sua velocità più bassa (1) vengono prodotte 221 automobili ogni ora.
La produzione aumenta linearmente con la velocità.
Quindi, con la velocità impostata su 4, dovrebbe produrre 4 * 221 = 884 automobili all'ora.
Tuttavia, velocità più elevate aumentano la probabilità che vengano prodotte automobili difettose, che poi devono essere scartate.
La tabella seguente mostra come la velocità influenzi il tasso di successo:
1 a 4: tasso di successo del 100%.5 a 8: tasso di successo del 90%.9: tasso di successo dell'80%.10: tasso di successo del 77%.Hai due attività da svolgere.
Implementa il metodo AssemblyLine#production_rate_per_hour per calcolare il tasso di produzione orario della catena di montaggio, tenendo conto del suo tasso di successo.
Nota che il valore restituito è un'istanza di Float.
AssemblyLine.new(6).production_rate_per_hour
#=> 1193.4
Implementa il metodo AssemblyLine#working_items_per_minute per calcolare quante automobili finite e funzionanti vengono prodotte al minuto.
Nota che il valore restituito è un'istanza di Integer.
AssemblyLine.new(6).working_items_per_minute
#=> 19
Iscriviti a Exercism per imparare e padroneggiare Ruby con 21 concetti121 esercizi e il mentoring di persone reali, tutto gratis.