MOD

Aus C64-Wiki
Zur Navigation springenZur Suche springen
MOD
Syntax: a = MOD(<z>,<n>)
Parameter
z: Zähler (0..65535)
n: Nenner (0..65535)
Einordnung
Typ: numerische Funktion
Kontext: Zahlen
Aufgabe: Rest einer Division ermitteln
Abkürzung: keine
Token: $64 $52 (100 82)
Verwandte Befehle
DIV - EXOR


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 BASIC-V2-Ausdruck INT(<z>)−INT(INT(<z>)/INT(<n>))*INT(<n>).

Beachte:

  • Alle 16bittigen numerischen Simons'-Basic-Funktionen erzeugen unvorhersehbare Reaktionen, wenn sie zweiter Parameter eines POKE-Befehls sind. Ihre Werte müssen vor ihrer Verwendung bei POKE einer Variablen zugewiesen werden (in TSB behoben).
  • 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[Bearbeiten | Quelltext bearbeiten]

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.

Weblinks[Bearbeiten | Quelltext bearbeiten]

WP-W11.png Wikipedia: Modulo-Funktion