Ruby-Programmierung: Rechnen

Aus Wikibooks
Zur Navigation springen Zur Suche springen

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[Bearbeiten]

Variablen 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[Bearbeiten]

Da 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[Bearbeiten]

Ein 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[Bearbeiten]

Die 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[Bearbeiten]

Der 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.

1 #circle_area.rb
2 PI = 3.142
3 puts "Dieses kleine Programm berechnet den Flaecheninhalt eines Kreises!"
4 puts "Bitte nun den Radius eingeben:"
5 radius = gets.to_f
6 flaeche = radius**2 * PI
7 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 hat radius 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.


Wikibooks buchseite.svg Zurück zu Hallo Welt! | One wikibook.svg Hoch zu Inhaltsverzeichnis | Wikibooks buchseite.svg Vor zu Kontrollstrukturen