Signumfunktion (nur 16 Zeichen)
Verfasst: 01.11.2006 14:02
Hallo!
Neulich war mir in der Schule langweilig, da kritzelte ich auf meinen Block herum und irgendwann stellte ich mir die Aufgabe, die Signumfunktion in PB zu lösen
der Inhalt des Makros, auf das es ankommt, hat 16 Zeichen, nicht dass jemand die restlichen Zeichen mitzählt. Wenn jetzt ener kommt, und meint, er schafft das mit 14 Zeichen in einer Procedure, dann hatte ich die Idee vor ihm. procedures sind aber langsamer als makros und hier nicht angebracht.
Die Procedure hätte den Vorteil, dass die äußeren Klammern wegfallen, denn die Muss ich beim Makro haben, damit es sicherer ist, wenn ich das makro in komplexere ausdrücke einbaue.
Hier meine erste Version, die ich dann Schrittweise zusammengeschrumpft habe:
Noch eine kurze Erklärung zur Signumfunktion: Die mathematische Funktion "Signum" gibt immer nur 3 Werte zurück. Ergibt -1, wenn die eingesetzte zahl kleiner als null ist. Ergibt 0, wenn die zah gleich null ist. Ergibt 1, wenn die zahl größer als null ist.
Ach ja: Kann mir jemand ~ nochmal erklären? Ich kann mir nur an Karls Erklärung erinnern: "~ ist ein Not auf Bit-ebene"... Häää? Hier funktioniert es jedenfalls auch so...
Neulich war mir in der Schule langweilig, da kritzelte ich auf meinen Block herum und irgendwann stellte ich mir die Aufgabe, die Signumfunktion in PB zu lösen

Code: Alles auswählen
Macro sgn(x)
(-(~~x<0)+(x>0))
EndMacro
Debug sgn(-5)
Debug sgn(0)
Debug sgn(7)
Die Procedure hätte den Vorteil, dass die äußeren Klammern wegfallen, denn die Muss ich beim Makro haben, damit es sicherer ist, wenn ich das makro in komplexere ausdrücke einbaue.
Hier meine erste Version, die ich dann Schrittweise zusammengeschrumpft habe:
Code: Alles auswählen
; Version 1:
-(x < 0 And 1)+(x > 0 And 1)
; Version 2:
(-(Not Not x < 0)+(Not Not x > 0))
Ach ja: Kann mir jemand ~ nochmal erklären? Ich kann mir nur an Karls Erklärung erinnern: "~ ist ein Not auf Bit-ebene"... Häää? Hier funktioniert es jedenfalls auch so...
