Die zwei häufigsten Zahlentypen in Ruby sind:
-6, 0, 1, 25, 976 und 500000.-2.4, 0.1, 3.14, 16.984025 und 1024.0.Sie werden durch die Klassen Integer und Float implementiert.
Diese Klassen haben Methoden, mit denen sich Werte von einem Typ in den anderen umwandeln lassen. Integer-Zahlen sind auf eine ganze Einheit genau, während Float auch Bruchteile einer ganzen Zahl darstellen kann:
Integer#to_f: In eine neue Gleitkommazahl umwandelnFloat#ceil: Auf die nächste Ganzzahl aufrundenFloat#floor: Auf die nächste Ganzzahl abrundenFloat#round: Auf die nächste Ganzzahl rundenFloat#to_i: Zur nächsten Ganzzahl abschneidenRuby kennt sogenannte Ausdrücke zur Ablaufsteuerung. Mit ihnen steuerst du, wie das Programm abläuft, und sie nehmen einen truthy- oder falsey-Wert an. Es gibt Operatoren, mit denen sich truthy- oder falsey-Werte erzeugen lassen; diese heißen Vergleichsoperatoren.
Es gibt zwei wichtige Steuerausdrücke, mit denen du steuerst, welcher Code ausgeführt wird und welcher nicht. Sie legen also fest, welcher Zweig ausgeführt wird.
Diese beiden sind: if und der unless-Ausdruck.
Vergleichsoperatoren werden verwendet, um Werte zu vergleichen und einen true- oder false-Wert zurückzugeben.
Die folgenden Operatoren verlangen zwei Werte desselben Typs, die verglichen werden.
Wenn die Werte nicht vom selben Typ sind, wirft der Compiler einen Fehler.
Hier ist eine Liste der Operatoren und je ein Beispiel, wann sie einen true-Wert liefern:
| Methode | Beschreibung | Beispiel |
|---|---|---|
| < | kleiner als | 4 < 5 |
| <= | kleiner oder gleich | 4 <= 4 |
| > | größer als | 3 > 1 |
| >= | größer oder gleich | 2 >= 2 |
Die Gleichheits- und Ungleichheitsoperatoren können, anders als die bereits genannten Operatoren, Werte jeden Typs vergleichen.
Der Operator == prüft, ob zwei Werte gleich sind, und das schließt die Prüfung des Werttyps mit ein.
Der Operator != funktioniert genauso, gibt aber true zurück, wenn die Werte nicht gleich sind, und false, wenn sie gleich sind.
Hier ist eine Liste der Gleichheits- und Ungleichheitsoperatoren und je ein Beispiel, wann sie einen true-Wert liefern:
| Methode | Beschreibung | Beispiel |
|---|---|---|
| == | gleich | 4 == 4 |
| != | nicht gleich | 5 != 4 |
Die if-Anweisung prüft, ob eine gegebene Bedingung „truthy" oder „falsey" ist.
Wenn die Bedingung truthy ist, wird der Code innerhalb der if-Anweisung ausgeführt.
Eine if-Anweisung endet mit dem Schlüsselwort 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
Die unless-Anweisung funktioniert sehr ähnlich wie die if-Anweisung, führt aber den Code innerhalb der unless-Anweisung aus, wenn die Bedingung falsey ist.
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"
Die else-Anweisung kann zusammen mit der if-Anweisung verwendet werden.
Die else-Anweisung wird ausgeführt, wenn der if-Zweig nicht ausgeführt wird.
value = 1
if value == 1
"1 is equal to 1"
else
"1 is not equal to 1"
end
# => "1 is equal to 1"
Die elsif-Anweisung kann zusammen mit der if-Anweisung verwendet werden.
Die elsif-Anweisung wird ausgeführt, wenn der if-Zweig nicht ausgeführt wird und die Bedingung der elsif-Anweisung truthy ist.
elsif-Anweisungen lassen sich aneinanderreihen, und die erste truthy-Bedingung wird ausgeführt.
Außerdem kann am Ende der if-Anweisung eine else-Anweisung stehen, die ausgeführt wird, wenn keine der vorherigen Anweisungen zutraf.
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 dieser Übung schreibst du Code, um die Produktion an einem Fließband in einer Autofabrik zu analysieren.
Die Geschwindigkeit des Fließbands kann von 0 (aus) bis 10 (Maximum) reichen.
Bei seiner langsamsten Geschwindigkeit (1) produziert es 221 Autos pro Stunde.
Die Produktion steigt linear mit der Geschwindigkeit.
Bei einer Geschwindigkeit von 4 sollte es also 4 * 221 = 884 Autos pro Stunde produzieren.
Höhere Geschwindigkeiten erhöhen jedoch die Wahrscheinlichkeit, dass fehlerhafte Autos produziert werden, die dann aussortiert werden müssen.
Die folgende Tabelle zeigt, wie die Geschwindigkeit die Erfolgsquote beeinflusst:
1 bis 4: 100 % Erfolgsquote.5 bis 8: 90 % Erfolgsquote.9: 80 % Erfolgsquote.10: 77 % Erfolgsquote.Du hast zwei Aufgaben.
Implementiere die Methode AssemblyLine#production_rate_per_hour, um die Produktionsrate des Fließbands pro Stunde zu berechnen und dabei die Erfolgsquote zu berücksichtigen.
Beachte, dass der Rückgabewert eine Instanz von Float ist.
AssemblyLine.new(6).production_rate_per_hour
#=> 1193.4
Implementiere die Methode AssemblyLine#working_items_per_minute, um zu berechnen, wie viele fertige, funktionierende Autos pro Minute produziert werden.
Beachte, dass der Rückgabewert eine Instanz von Integer ist.
AssemblyLine.new(6).working_items_per_minute
#=> 19
Melde dich bei Exercism an, um Ruby mit 21 Konzepte121 Übungen und echtem menschlichen Mentoring zu lernen und zu meistern, alles kostenlos.