MOD
Aus C64-Wiki
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Dieser Artikel beschreibt das Simons'-Basic-Schlüsselwort MOD.
Typ: numerische Funktion
Syntax: a = MOD(<z>,<n>)
Die Funktion MOD (math.: Modulo-Funktion) ist bei der Computersprache PASCAL ein Operator ("mod"): Dieser dividiert den Zähler <z> durch den Nenner <n> und liefert den Rest der ganzzahligen Division, z.B. 9 mod 4 = 1. Simons' Basic bietet hier keinen zusätzlichen Operator an, sondern realisiert dies als numerische Funktion MOD. Sie entspricht dem recht aufwändigen Ausdruck INT(<z>)−INT(INT(<z>)/INT(<n>))*INT(<n>).
Beachte:
- Alle Simons'-Basic- (und auch TSB-)Funktionen arbeiten nicht, wenn sie zweiter Parameter eines POKE-Befehls sind. Die Werte müssen vor ihrer Verwendung bei POKE einer Variablen zugewiesen werden.
- Die Argumente dürfen dabei als Ganzzahl aufgefasst (implizite Umwandlung mit der INT-Funktion) nur im Bereich von 0 bis 65535 liegen, andernfalls meldet der Interpreter die Fehlermeldung ?ILLEGAL QUANTITY ERROR.
Beispiele:
10 INPUT "POSITIVE ZAHL"; Z 20 A = DIV(Z,4): B = MOD(Z,4) 30 PRINT Z "DURCH 4 IST" A "MIT REST" B
- Von einer Zahl wird berechnet, wie oft sie in einer anderen (hier: 4) enthalten ist und wie viel Rest bleibt.
10 Z=11: N=2.25 20 PRINT MOD(Z,N) 30 PRINT INT(Z)-INT(INT(Z)/INT(N))*INT(N) 40 PRINT Z-INT(Z/N)*N
- liefert folgende Ausgabe:
1 1 2
- Zeile 30 ist die äquivalente BASIC-V2-Implementierung zu MOD() und die Variante in Zeile 40 zeigt, wie bei einer zu einfachen Nachbildung bei Argumenten, die durchaus Fließkommazahlen sein dürfen, ein falsches Ergebnis zu Stande kommt.
[Bearbeiten] Links
| Wikipedia: Modulo-Funktion |