Programmier- und Bedienungshandbuch – Umstimmungsbünde mit Parametern

˙

12.1.  Umstimmungsbünde mit Parametern

übertragen wir nun die Prinzipien der Umstimmung mit Parametern auf Umstimmungsbünde und verdeutlichen dies an einem einfachen Beispiel:

Eine Umstimmung soll die Verankerungstaste auf einen neuen, als Platzhalter übergebenen Wert setzen und anschließend – sozusagen „sicherheitshalber“ – die Breite der Fundamentaltonleiter auf den Wert 9 setzen. Wenn die Breitenkorrektur nicht notwendig wäre, könnten wir einfach

UMSTIMMUNG Mephisto(Faust) = Faust [ ]

schreiben. Da aber außerdem noch der Parameter ’Breite’ verändert werden soll, müssen wir einen Umstimmungsbund benutzen. Ein Umstimmungsbund kann – genau wie eine normale Umstimmung – Platzhalter benutzen. Diese werden hinter dem Namen des Umstimmungsbundes in runden Klammern angegeben. Ein Umstimmungsbund dient nur als Zwischenstation der tatsächlichen Umstimmung, da die eigentlichen Umstimmungen nicht im Bund, sondern in den einzelnen Umstimmungen passieren. Der Umstimmungsbund kann die ihm übergebenen Platzhalter also nicht selber benutzen, sondern nur an die Einzelumstimmungen weitergeben. Wir können nun unseren Umstimmungsbund formulieren:

UMSTIMMUNG  
         Anker_neu_setzen(wert) = wert [ ]  
         Breite_fest_setzen     = [ << 9 >> ]  
         Mephisto(Faust)        = { Anker_neu_setzen(Faust),  
                                    Breite_fest_setzen }

Überlegen wir uns nun, was passiert, wenn wir von einer Logik aus diesen Umstimmungsbund mit dem Übergabewert 6 aufrufen, z.B. durch Drücken der Taste X bei folgender (als aktiv angenommener) Stimmungslogik:

LOGIK Goethe Taste G = [ Taste X -> Mephisto(6) ]

Die Umstimmung Mephisto werde mit dem Übergabewert 6 aufgerufen. Im Platzhalter ’Faust’ wird also der Wert 6 festgehalten. Die Angaben im Umstimmungsbund besagen nun, dass zunächst die Umstimmung Anker_neu_setzen mit dem in ’Faust’ gespeicherten Wert – in unserem Fall 6 – durchgeführt werden soll. Was passiert nun in der Umstimmung Anker_neu_setzen ? Diese wird mit dem Übergabewert 6 aufgerufen, welcher dann im Platzhalter ’wert’ vermerkt wird; und laut Vorschrift wird die Verankerungstaste auf eben diesen Wert gesetzt. Wenn dies geschehen ist, so ist nun gemäß unseres Umstimmungsbundes die Umstimmung Breite_fest_setzen an der Reihe. Diese setzt die Breite der FT absolut auf den Wert 9.

Dieses Prinzip lässt sich nun um noch eine Stufe erweitern. Ein Umstimmungsbund kann auch mehrere Platzhalter verwenden. Dies ist notwendig, wenn z.B. nacheinander zwei Umstimmungen aufgerufen sollen, die ihrerseits Platzhalter benutzen. Soll z.B. zunächst die Verankerungstaste auf einen (als Platzhalter zu übergebenden) Wert gesetzt werden, und danach die Breite der Fundamentaltonleiter neu eingestellt werden, und zwar ebenfalls variabel mit Platzhalterübergabe, so muss der Umstimmungsbund, der beide Umstimmungen nacheinander durchführt, zwei Platzhalter benutzen, deren Werte dann an die Umstimmungen weitergegeben werden. Im Programmtext also:

UMSTIMMUNG  
         Anker_neu ( wert )  = wert [ ]  
         Breite_neu ( wert ) = [ << wert >> ]  
         Aufruf(para1,para2) = { Anker_neu(para1),  
                                 Breite_neu(para2) }

Wenn dieser Umstimmungsbund in einer Logik aufgerufen werden soll, so müssen (zwingend!) auch zwei Werte übergeben werden, z.B.:

LOGIK Meier Taste M = [ Taste X -> Aufruf(64,12) ]

Das Drücken der Taste X bewirkt also nacheinander das Neusetzen des Ankers auf 64 und der Breite auf 12.

Ein Umstimmungsbund kann beliebig viele Platzhalter benutzen, sofern sichergestellt ist, dass

  • jeder rechts vom Gleichheitszeichen benutzte Platzhalter auch links in den Klammern angegeben wurde,
  • der Aufruf mit genau der Zahl an Werten passiert, wie Platzhalter angegeben sind.

Ferner gelten folgende Freiheiten:

  • Die Reihenfolge, in der die Platzhalter in den Klammern angegeben wurden, muss nicht mit der Reihenfolge übereinstimmen, in der diese benutzt werden.
  • Ein Platzhalter darf mehrmals für Aufrufe benutzt werden.

Alle folgenden Umstimmungsbünde sind syntaktisch korrekt (wenn auch praktisch unbrauchbar):

UMSTIMMUNG  
    Anker (neu) = neu [ ]  
    Breite(neu) = [<< neu >>]  
    Periode     = [ ] Quint  
 
    Simpel(x,y)={ Breite(y) , Anker (x) }  
    Naja(a,b,c)={ Breite(b) , Anker (c), Periode, Anker(b),  
                  Breite(a) }

˙

Deutsch English
©2006
Letzte Veröffentlichung auf dem Server:
Mittwoch, 29. März 2006, 13.51 Uhr Mitteleuropäischer Sommerzeit