Tracks
/
Ruby
Ruby
/
Übungen
/
Fließband
Fließband

Fließband

Lernübung

Einführung

Zahlen

Die zwei häufigsten Zahlentypen in Ruby sind:

  • Ganzzahlen: Zahlen ohne Nachkommastellen (ganze Zahlen). Beispiele sind -6, 0, 1, 25, 976 und 500000.
  • Gleitkommazahlen: Zahlen mit einer oder mehreren Nachkommastellen. Beispiele sind -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 umwandeln
  • Float#ceil: Auf die nächste Ganzzahl aufrunden
  • Float#floor: Auf die nächste Ganzzahl abrunden
  • Float#round: Auf die nächste Ganzzahl runden
  • Float#to_i: Zur nächsten Ganzzahl abschneiden

Bedingte Anweisungen

Ruby 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

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

if-Anweisung

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

unless-Anweisung

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"

else-Anweisung

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"

Kaskadierende if-Anweisungen

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"

Anleitung

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.

1. Berechne die Produktionsrate pro Stunde

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

2. Berechne die Anzahl der funktionierenden Teile, die pro Minute produziert werden

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
Über GitHub bearbeiten Der Link öffnet sich in einem neuen Fenster oder Tab
Ruby Exercism

Bereit, mit Fließband zu starten?

Melde dich bei Exercism an, um Ruby mit 21 Konzepte121 Übungen und echtem menschlichen Mentoring zu lernen und zu meistern, alles kostenlos.