3.1 Variablen

Variablen sind Daten und Schleifen sind Anweisungen zur Programmsteuerung. Eine Software besteht im Wesentlichen aus diesen 2 Teilen: Erstens aus Daten und zweitens aus Anweisungen, wie diese Daten verarbeitet werden sollen. In unserem ersten Beispiel sind die Anweisungen einfach identifizierbar: play und sleep. Aber wo sind die Daten? Nun, Sonic Pi kann wie viele andere Programmiersprachen auch ganz ohne Daten auskommen, wenn es um ganz einfache Dinge geht. Aber sobald es etwas komplizierter wird, müssen Daten eingeführt werden. Wir fangen mal mit dem allereinfachsten an, und das sind Variablen.

Mit dem folgenden Beispiel soll veranschaulicht werden, wie Variablen funktionieren und wofür sie benötigt werden.

Stellt Euch vor, Ihr wollt eine Reihe von Tönen produzieren, und von Ton zu Ton soll der Ton einen Tonschritt höher werden. Natürlich ist es möglich, die entsprechende Anzahl von <play> Anweisungen untereinander zu codieren und jeweils den Ton anzupassen. Aber es geht auch geschickter. Schaut Euch mal Code 2 an. Die entscheidenden Stellen habe ich fett gemacht. Zuerst gibt es eine Art Gleichung, die aber in Wirklichkeit eine Zuweisung ist:

tone= 60

Damit werden 2 Sachen erledigt. Zum einen wird die Variable mit dem Namen „tone“ erzeugt. Zum zweiten wird ihr der Wert 60 zugewiesen. Zwei Zeilen tiefer steht dann:

play tone

Damit wird ein Ton der Miditonhöhe 60 ausgegeben. Und dann wird die Variable um den Wert 1 erhöht.

tone = tone + 1

Da der Code eine Schleife enthält, werden 13 Töne ausgegeben. Diese Schleife spart viel Tipparbeit.

Der Befehl zur Wiederholungsschleife funktioniert so:

Vor den Teil den ich wiederholen will schreibe ich “n.times do“, wobei für „n“ die Zahl eingesetzt wird, die die Anzahl der Wiederholungen angibt, in diesem Fall 13.
Hinter den Teil schreibe ich „end“ in eine Zeile
Die zwischenliegenden Zeilen rücke ich ein. Dazu benutze ich 2 Leerzeichen oder gleich die „Tab“-Taste.
Als Anzahl ist auch die 0 ist möglich, dann wird der Loop gar nicht ausgeführt. Für n werden auch Kommazahlen von Sonic Pi akzeptiert. Dabei wird einfach abgerundet. Also, 4.5 bedeutet 4 Durchführungen. Aber eigentlich ist so etwas kein guter Stil und sollte vermieden werden.

In 5 ist im Protokollfenster zu sehen, wie der Wert der Variable ansteigt; und zwar mit der Ausgabe jedes Tons um den Wert 1.

Musik bedeutet Wiederholung. Es gibt nahezu keine Musikstücke, in denen Notenabfolgen nicht wiederholt werden. Völlig offensichtlich sind Wiederholungen in den Schlagzeugtracks von Popmusik. Dort sind sie sogar so dominant, dass schon vor 30 und mehr Jahren die ersten Drummachines verwendet worden sind, und bei denen war die Abfolge der Töne wirklich recht starr.

Noch ein Wort zu der Zuweisung. Aus dem Matheunterricht kennt Ihr natürlich das Gleichheitszeichen und auch Variablen und Gleichungen. Das Gleichheitszeichen bedeutet in der gesamten Mathematik, dass links und rechts des Gleichheitszeichens der gleiche Wert oder der gleiche Term steht. Das ist in Programmiersprachen erkennbar anders.

tone = tone + 1 ist für jeden Wert, den man in tone einsetzt, definitiv verkehrt. Setzt man beispielsweise für tone den Wert 60 ein, dann würde dort 60 = 61 stehen und das wäre falsch. Deswegen darf man nicht vergessen, dass in vielen Programmiersprachen das Gleichheitszeichen für eine Zuordnung steht. Dabei wird der Term rechts des Gleichheitszeichen (tone + 1) ausgewertet und der Variable links des Gleichheitszeichens zugeordnet.

Zu beachten ist, dass jeder Variablen auf der rechten Seite zum Zeitpunkt der Codeausführung eine Zahl zugeordnet ist. Ist das nicht der Fall, dann kommt es zu einem Abbruch des Programms (siehe 6) mit der Ausgabe der folgenden Fehlermeldung:

<undefined local variable or method `kneu‘>

Die Fehlermeldung erscheint in Englisch, was bei vielen anderen Programmiersprachen auch der Fall ist. Aber sie ist relativ einfach zu verstehen, was in anderen Programmiersprachen nicht immer der Fall ist: .Die lokale Variable oder Methode „kneu“ ist nicht definiert. Sie ist also nicht bekannt und ihr ist kein Zahlenwert zugewiesen worden.

Die Verwendung einer Variablen in Schleifen ist allerdings nur ein Grund mit Variablen zu arbeiten. Es gibt noch zwei andere:

Die Benennung von Zahlen

Zahlen im Code sind ziemlich normal. In Sonic Pi werden für viele Parameter Zahlen verwendet. Im ersten Moment sind diese Zahlen auch plausibel. Später oder für andere Personen sind sie aber nicht mehr so durchschaubar. Deswegen ist eines der Grundprinzipien, keine Zahlen (Magic Numbers) zu verwenden, sondern sie selbsterklärenden Variablen zuzuweisen und dann diese zu verwenden. Ich kann die Variable dann an vielen Stellen verwenden und muss, wenn ich ihren Wert ändern will, dass nur an einer Stelle im Code machen, nämlich dort wo die Zuweisung stattfindet.
Speicherung von Rückgabewerten

Methoden geben nach ihrer Abarbeitung oft ein Rückgabewert zurück. Das kann ein Ergebnis einer Berechnung oder eine Meldung über Erfolg oder Misserfolg sein. Diese Rückgabewerte können einer Variablen zugewiesen werden und dann später benutzt werden.
Wie soll man Variablen am besten benennen?

  • Wie schon erwähnt, sollen Namen selbsterklärend sein. Also keine geheimnisvollen Namen wie a1 oder b22. Besser ist zum Beispiel „shortBreak“.
    Groß- und Kleinschreibung ist wichtig.
    Der Code sollte für viele Menschen verständlich sein und deswegen sollen Namen englisch sein.
    Namen sollten nicht den Schlüsselwörter der Programmiersprache gleichen. Ihr kennt ja schon die Methode „play“ zum Spielen eines Tones. Eine Variable nun auch „play“ zu nennen ist keine gute Idee, selbst wenn es in Sonic Pi funktioniert.
    Namen werden oft aus mehreren Wörtern zusammengesetzt. Dabei gibt es zwei Arten, die Wörter abzugrenzen. Ich kann sie mit einem Unterstrich „_“ verbinden oder immer den ersten Buchstaben eines jeden angehängten Wortes groß schreiben (nennt man CamelCase, weil es immer mal wieder einen Höcker gibt..). Also „shortBreak“ oder short_break.
    Andere Sonderzeichen als den Unterstrich muss man vermeiden, also keine Ausrufungszeichen oder Gleichheitszeichen, und Zahlen am Anfang des Namens sind auch keine gute Idee.
    Zu den Sonderzeichen die zu vermeiden sind zählen auch die Umlaute Ä, Ö, Ü und das ß.

variables