MOD
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]
Wikipedia: Modulo-Funktion |
$ | % | @ | ANGL | ARC | AT | AUTO | BCKGNDS | BFLASH | BLOCK | CALL | CENTRE | CGOTO | CHAR | CHECK | CIRCLE | CMOB | COLD | COLOUR | COPY | CSET | DELAY | DESIGN | DETECT | DIR | DISABLE | DISAPA | DISK | DISPLAY | DIV | DOWN | DRAW | DUMP | DUP | ELSE | END LOOP | END PROC | ENVELOPE | ERRLN | ERRN | EXEC | EXIT | EXOR | FCHR | FCOL | FETCH | FILL | FIND | FLASH | FRAC | GLOBAL | GRAPHICS | HI COL | HIRES | HRDCPY | INKEY | INSERT | INST | INV | JOY | KEY | LEFT | LIN | LINE | LOCAL | LOOP | LOW COL | MEM | MERGE | MMOB | MOB OFF | MOB SET | MOD | MOVE | MULTI | MUSIC | NO ERROR | NRM | OFF | OLD | ON ERROR | ON KEY | OPTION | OUT | PAGE | PAINT | PAUSE | PENX | PENY | PLACE | PLAY | PLOT | POT | PROC | RCOMP | REC | RENUMBER | REPEAT | RESET | RESUME | RETRACE | RIGHT | RLOCMOB | ROT | SCRLD | SCRSV | SECURE | SOUND | TEST | TEXT | TRACE | UNTIL | UP | USE | VOL | WAVE