Da Operno interne Funktionen zur Ermittlung des Minimums und Maximums einer Queue besitzt, ist es in manchen Fällen sehr praktisch, eine For-Schleife zu verwenden.
In diesem Kapitel wollen wir eine Funktion schreiben, die uns mehrere Rechenausdrücke in Form eines Strings ausrechnet. Dabei möchten wir, dass jeweils zuerst der gesamte Rechenausruck gezeigt werden soll und danach das Ergebnis (durch ein Gleichheitszeichen).
calculate("2 + 2", "3 + 2 * 4", "10² - 50")
>>> : 2 + 2 = 4
>>> : 3 + 2 * 4 = 11
>>> : 10² - 50 = 50
Das Problem ist nun, die maximale Größe einer Aufgabe zu ermitteln, damit jedes Gleichheitszeichen untereinander steht.
Dieses Problem können wir folgendermaßen lösen: Wir gehen einfach mit einer for
-Schleife alle Argumente durch und speichern uns dabei die maximale Größe. Danach führen wir erneut eine Schleife aus, die uns alle Rechenausdrücke ausrechnet und die Gleichheitszeichen passend ausgibt.
Die Größe einer Zeichenkette können wir durch die Klassenmethode fix
festsetzen.
def calculate(){
def maximum as integer
arguments for{
if(maximum < current:length){
maximum = current:length
}
}
arguments for{
out current:fix(maximum) << " = " current:eval
}
}
Doch das Ganze geht natürlich viel schneller, indem wir die for
-Schleife effektiv ausnutzen und zugleich die vordefinierte Klassenmethode analyse\max
für Queues verwenden:
def calculate(){
def maximum as integer
maximum = (arguments for(current:length)):analyse\max
arguments for{
out current:fix(maximum) << " = " << current:eval
}
}
In diesem Code-Beispiel gibt die erste Schleife alle Längen als Queue zurück. Darauf folgt die Ermittlung des Maximums, was der maximalen Länge eines Rechenausdrucks entspricht.