Die Entwicklungsumgebung MakeCode bietet keinen mathematischen Block, um den Logarithmus einer Zahl zu bilden. Da im Hintergrund der Blockprogrammierung aber JavaScript (oder TypeScript) arbeitet, kann man darüber eine Funktion so verändern, dass sie JavaScript ausführt.
Im Funktionsumfang, den JavaScript von MakeCode zur Verfügung stellt, fehlt die Funktion zum Bestimmen des dekadischen Logarithmus. Deshalb muss mit dem natürlichen Logarithmus gearbeitet werden. Wie vielleicht bekannt ist, gilt
lg(wert)=log(wert)/log 10
Die Funktion Math.log(wert) liefert in JavaScript den natürlichen Logarithmus des Wertes, Math.LN10 den natürlichen Logarithmus von 10.
Schaltet man in die Blockansicht zurück, werden die JavaScript-Befehle grau dargestellt.
Wenn alles richtig ist, muss der Aufruf der Funktion mit der Zahl 1000 eine 3 anzeigen, denn 103=1000.
Selbst wenn man ein Programm mehrfach testet und denkt, alles ist okay, findet sich immer noch ein Fehler! Der Logarithmus der Zahl soll nicht direkt angezeigt werden, sondern erstmal in einer Variablen abgelegt werden. Zeigt man sich den Inhalt der Variablen an, ist immer noch alles richtig.
Aber dann: Der Inhalt der Variablen wird im Debugger begutachtet. Es ist nicht 3, sondern gaaaanz kurz davor. Beim Anzeigen stört das nicht, denn irgendwie rundet die Entwicklungsumgebung den Wert. Bei der Weiterverarbeitung (z.B.Quersumme) geht das aber nicht.
Damit die Funktion einen korrekten Wert zurückliefert, muss der ermittelte Logarithmus mit 1000 multipliziert und das Ergenis gerundet werden. Danach wird der erhaltene Wert wieder durch 1000 geteilt. Damit wird der Logarithmus auf drei Kommastellen zurückgegeben.
Will man mehr Kommastellen haben, muss die 1000 z.B.auf 10000 vergrößert werden.
Natürlich kann man das wieder verkürzen, obwohl es dann nicht mehr so klar zu erkennen ist.
Wenn man in einem anderen Programm den Logarithmus einer Zahl benötigt (z.B. um die Anzahl der Stellen einer Zahl zu bestimmen), kopiert man aus dem JavaScript-Teil die Funktion und fügt sie in einem anderen Programm wieder im JavaScript-Teil ein.
Das Bild zeigt einen Ausschnitt des Prorammes zur Berechnung der Quersumme.