Ruby-Programmierung: Rechnen
Zurück zum Inhaltsverzeichnis.
Ein Computer als Rechenmaschine kann von sich aus nicht viel mehr als zu rechnen und alles, was Menschen heute mit Computern tun, ist eine Abstraktion von sehr einfachen Rechnungen. Diese grundlegende Nähe zur Mathematik zeigt sich in vielerlei Hinsicht auch in sowohl der Benennung, als auch der Denkweise von Programmiersprachen. Erst später in diesem Buch wird sich thematisch von der Mathematik immer weiter entfernt, indem weitere Abstraktionen eingeführt werden. Dieses Kapitel beschäftigt sich mit den Grundrechenarten in Ruby. Zunächst werden Variablen in Ruby dargestellt, danach folgt eine Einführung in Operatoren und zum Schluss wird mit diesem Wissen ein Programm implementiert, das den Flächeninhalt eines Kreises mit gegebenem Radius ermittelt.
Variablen
BearbeitenVariablen in Ruby sind Platzhalter. Sie speichern andere Daten und erlauben einen einfachen Zugriff auf diese Daten, die sonst nicht oder nur schlecht verständlich und lesbar sind. Betrachtet man das folgende einfache Skript, wird dies klarer.
a = 5
puts a
Dieses kleine Skript tut nichts weiter, als die Zahl 5 auf der Kommandozeile auszugeben. Dies ist ganz analog zu dem einführenden "Hallo Welt"-Beispiel. Der einzige Unterschied besteht darin, dass die Daten vorher in der Variable a
gespeichert werden und danach auf diese Daten zugegriffen wird. Die Verwendung von Variablen erlaubt zwei Vorteile gegenüber der direkten Verwendung von Daten: Zum einen erlauben Variablen eine Wiederverwendung der gleichen Daten und bei einem Fehler müssen die Daten nur an einer Stelle geändert werden. Zum anderen erlauben es Variablennamen, die Lesbarkeit deutlich zu verbessern.
Variablen in Ruby sind untypisiert. Versucht man also, der Variablen a
nach der Zuweisung der Zahl 5 beispielsweise den String "Hallo"
zuzuweisen, führt das nicht zu einem Fehler, sondern der ursprüngliche Wert wird überschrieben.
Relevant sind an dieser Stelle mögliche Namen von Variablen. Wie oben gesehen, ist a
eine gültige Bezeichnung einer Variablen. Normale Variablen beginnen mit einem kleinen Buchstaben. Die weiteren Zeichen können frei aus großen und kleinen Buchstaben und dem Unterstrich gewählt werden. Es ist üblich, sprechende Namen zu verwenden, um ein weiteres Maß an Übersichtlichkeit hinzuzufügen. Statt x = 3.14
sollte man also besser pi = 3.14
verwenden.
Konstanten
BearbeitenDa bereits erwähnt wurde, dass Variablen mit einem kleinen Buchstaben beginnen müssen, stellt sich die Frage, was mit Bezeichnern wie Test
oder TEST
ist. Diese beiden bezeichnen keine Variablen. Im ersten Fall handelt es sich um eine Klassen- oder Modulbezeichnung, die im zweiten Teil des Buches über Objektorientierung behandelt wird. Bei Letzterem handelt es sich um eine Konstante. Betrachtet man die Ausführung des Skriptes:
TEST = 5
puts TEST
TEST = 4
puts TEST
Das Programm gibt, wie erwartet, erst 5 und danach 4 aus, dazwischen jedoch zeigt der Interpreter eine Warnung an, dass man gerade die Konstante überschrieben hat. Konstanten sind dann sinnvoll, wenn man ein unbeabsichtigtes späteres Überschreiben einer Variablen verhindern will.
Globale Variablen
BearbeitenEin weiterer Typ von Variablen beginnt mit einem Dollarzeichen; das sind globale Variablen. Im Kapitel Methoden wird die Sichtbarkeit von Variablen erklärt. Globale Variablen heißen so, weil sie aus jeder Methode heraus sichtbar sind. Sichtbar bedeutet in diesem Zusammenhang, dass auf sie in jeder Methode zugegriffen und sie verändern kann.
Grundrechenarten
BearbeitenDie Grundrechenarten Addition, Multiplikation usw. werden in Programmiersprachen durch arithmetische Operatoren ausgeführt. Operatoren arbeiten mit ein, zwei oder drei Variablen. Der folgende Code zeigt das:
a = b + c
In diesem Beispiel sind bereits zwei Operatoren dargestellt. Zunächst wird die Summe von b
und c
ermittelt und dann der Variablen a
zugewiesen. Genauso funktionieren auch die anderen Grundrechenarten und die Potenz. Eine Besonderheit von Ruby ist es, dass auch alle Operatoren Methoden sind, die in einem Programm verändert werden können.
Flächeninhalt eines Kreises
BearbeitenDer Flächeneinhalt eines beliebigen Kreises ist das Produkt der Zahl Pi und des quadratischen Radius'. Mit den im vorherigen Kapitel vorgstellten Methoden gets
und puts
sowie Variablen und Operatoren ist man in der Lage ein Kommandozeilenprogramm zu schreiben, das den Flächeninhalt eines Kreises mit gegebenem Radius ermittelt.
#circle_area.rb
PI = 3.142
puts "Dieses kleine Programm berechnet den Flaecheninhalt eines Kreises!"
puts "Bitte nun den Radius eingeben:"
radius = gets.to_f
flaeche = radius**2 * PI
puts "Der Flaecheninhalt betraegt: " + flaeche.to_s
Nach dem Lesen der vorherigen beiden Seiten sollten Sie in der Lage sein dieses Programm grundsätzlich zu verstehen.
- Zeile 2: Eine Konstante mit dem Namen
PI
wird initialisiert und erhält den Wert 3.142 - Zeile 5: Mit der Methode
gets
liest das Programm die Benutzereingabe und mit dem Zusatz.to_f
wird die Eingabe in eine Fließkommazahl umgewandelt. Dabei wird nicht geprüft, ob es sich um eine korrekte Eingabe handelt. Bei falscher Bedienung hatradius
den Wert 0.0. - Zeile 6: Der Radius wird quadriert und mit Pi multipliziert, danach steht der Flächeninhalt in der Variablen
flaeche
. - Zeile 7: Die Methode
puts
wird aufgerufen und gibt den Flächeninhalt aus.
puts
erwartet eine Zeichenkette. An dieser Stelle zeigt sich eine weitere Stärke von Ruby: die Polymorphie. Das bedeutet, dass dieselbe Bezeichnung für Funktionen in Abhängigkeit von den übergebenen Typen verschiedenen Nutzen haben kann. An späterer Stelle werden wir feststellen, dass es sich bei den oben vorgestellten Operatoren auch um Methoden handelt. Im Falle zweier Zahlen erfüllt die Methode +
ihren offensichtlichen Zweck. Steht aber vor und nach dem +
je ein String, dann erfüllt es einen anderen Zweck: Es bildet einen neuen String, wobei der Zweite an den Ersten angehängt wird.