Das "Modul" ist eine der aritmentiche auf fast allen Programmiersprachen (Ich habe es das erste Mal mit dem Grundgesetz Commodore 64) . Kann als einfache Bedienerführung angezeigt, wie im Fall von ActionScript-oder JavaScript, die beide den Charakter "Prozent" (% b), oder als eine Methode oder eine Anweisung. Für Entwickler kann nützlich sein, in Zusammenhängen offenbar anders. Gskinner sprach kürzlich, zeigt einige Klassiker, aber interessante Beispiele.
Einfach ausgedrückt, gibt die Operation zwei Zahlen bilden den Rest ihrer Division. Der Vollständigkeit halber sagen wir, dass der Betrieb des Moduls ein sehr umfangreiches Thema, das ich in diskutiert wird die RSA-Verschlüsselung ! Dieses Mal jedoch nicht von Codes oder Verschlüsselungen zu sprechen, aber nützliche Dinge viel einfacher.
Teilbar durch den Wechsel ...
Der erste Einsatz wir den Betrieb des Moduls machen können, ist zu prüfen, ob eine Zahl teilbar durch eine Zahl b! Wenn die risultatto von a% b (% I wird hier die Notation, um den Betrieb des Moduls angeben) Null ist, ist ein Vielfaches von b. Ich erinnere mich, als ich mit einem Problem zu tun, wie ich nicht wusste, den Betrieb des Moduls hatte. Auf dem Commodore 64 musste ich wissen, ob eine Zahl wurde durch 2 teilbar. Zu der Zeit habe ich diese Syntax (ich fand den Code origionale - Jahr 1983):
1 2 3 | 10 INPUT A 12 B = A / 2: IF B = INT (B) THEN PRINT "OK DIE ZAHL" A "UND" EQUAL ": GOTO 10 14 Drucken "die Zahl" A "UND" ODD ": GOTO 10 |
Die BASIC des Commodore 64, jedoch nicht über die Operation Modul - zumindest erinnere ich mich!
Grundsätzlich genau das, was ich tat, das von seiner Natur macht die Bedienung des Moduls: 2 überprüft, dass die Teilung hatte keine Ruhe, in diesem Fall prüfen, ob das Ergebnis nicht enthalten decimal ( IF B = INT(B) )! Wenn der Division ist gleich seine volle, dann ist die Zahl ist gleich!
Wenn a unseren Wert geprüft werden müssen, kann das gleiche Ergebnis durch gelöst werden:
1 2 3 | a % 2 ) == 0 ) { if ((in% 2) == 0) { / / Auch } |
Oder, für 3, nach:
1 2 3 | a % 3 ) == 0 ) { if ((in% 3) == 0) { / / Durch 3 teilbar } |
Kleine Anmerkung: Dank der Strecke, wenn Sie mit den Potenzen von 2 annche es einen schnelleren Weg, um zu überprüfen, ob eine Zahl gerade oder ungerade ist zu tun haben. In binärer Schreibweise, in der Tat sind die Zahlen alle gleich auf das erste Bit Null! So mit den logischen Operatoren können Sie wissen, ob eine Zahl gerade oder ungerade einfach "Protestant" ist das erste Bit:
1 2 3 | ! ( a & 1 ) ) { if ((a & 1)) { / / Auch } |
In der Versammlung, zum Beispiel, das ist Brot und Butter! Es ist sogar noch unmittelbarer und einfacher (der Motorola 68020, hatte zum Beispiel eine Anweisung BTST , dass "geprüft" nur ein einziges Bit
). – moltiplicazione bit a bit) tra il nostro valore a e 1 (chiamato maschera ). Die logischen Operationen (AND, OR, NOT, XOR, etc ...), in der Tat, sind dafür bekannt, schneller in Bezug auf ausführen und dann "Time Machine"! (a & 1) führt die logische Operation der AND ( & - Multiplikation bitweise) zwischen unseren Wert a , und 1 (Maske genannt). Wenn a = 7 (00000111), zum Beispiel:
1 2 3 | 00000111 UND = 00000001 00000001; ungeraden |
Wenn a = 8:
1 2 3 | 00001000 UND = 00000001 00000000, gleich |
Nicht nur können wir prüfen die Zahlen, das heißt, mit dem ersten Bit auf 0, und somit durch 2 teilbar, kann aber auch auftreten, wenn eine Zahl durch 4 teilbar, 8, 16, 32, 64, etc ... mit den entsprechenden Formularen:
1 2 3 | ! ( a & 3 ) ) { if ((a & 3)) { / / Durch 4 teilbar (Maske = 00000011 = 3), da 4 00000100) } |
Wenn die letzten beiden Bits auf Null gesetzt werden die Zahl durch 4 teilbar ist! Wenn die letzten 3 Bits (Maske 00000111) auf Null ist die Zahl durch 8 teilbar ist! Und so weiter ![]()
Gskinner zeigt die Verwendung des Moduls in Fällen von alternativen Generierung von Werten. Ein klassisches Beispiel ist der Hintergrund eine Liste der Elemente ändern:. Eine weiße und eine graue Gskinner bietet:
1 2 3 4 5 | rowIndex % 2 == 0 ) { if (rowIndex% 2 == 0) { rowColor = 0xFFFFFF; { Else {} rowColor = 0xCCCCCC; } |
Zunächst können Sie den obigen Code mit einer einzigen Code-Zeile gelöst werden:
1 | 2 == 0 ) ? 0xFFFFFF : 0xCCCCCC ; rowColor = (rowIndex% 2 == 0) 0xFFFFFF: 0xCCCCCC;? |
Außerdem in diesem speziellen Fall möchte ich eigentlich vermeiden führen Sie eine "schwere" Form der Bedienung. Diese besondere Situation ist oft in einer Schleife engagiert, so wäre es "gut" nicht zu vergeuden Taktzyklen der Maschine. In diesen Fällen Ich mag die sauberste (und logische) Lösung:
1 | fooIndex == false ) ) ? 0xFFFFFF : 0xCCCCCC ; rowColor = (fooIndex = (fooIndex == false)) 0xFFFFFF: 0xCCCCCC; |
o false , a seconda di come vogliamo impostare inizialmente il nostro colore sfondo. Wo fooIndex precedentemete ist ein Wert auf true oder false , je nachdem, wie wir anfangs setzen unsere Hintergrundfarbe. Dieser Ansatz ist subtiler, weniger direkt auf den ersten, aber schneller, weil es logisch, true / false führt. la condizione (fooIndex == false) sarà falsa e di conseguenza fooIndex verrà impostato da true a false. Wenn fooIndex wahr ist, wenn die Anweisung ausgeführt wird (fooIndex = (fooIndex == false) ) die Bedingung (fooIndex == false) ist falsch und folglich fooIndex wird von true auf false gesetzt werden. verrà impostato da false a true! Das zweite Mal, aber die Bedingung (fooIndex == false) ist wahr, und dann fooIndex ist von false auf true gesetzt! Und so weiter ...
Wiederholungen: um das Verhalten beobachten
Die Finite-Arithmetik, welche die Grundlage für das Funktionieren der Betrieb des Moduls ist, ist es oft auch als Uhr Arithmetik bezeichnet. Ein klassischer Zeitmesser verfügt über ein Zifferblatt mit den Händen in 12 Stunden (12 plus 12 Tag-Nacht!) Unterteilt, die ausreicht, um eine der 24 Stunden am Tag zeigen. Um 08:00 Wenn ich Sie fragte, was Zeit Ihre Uhr wird zwischen 18 Stunden Partitur, wäre deine Antwort 8 +18 = 26 sein! Aber die 02:00 Uhr Nacht! Unwillkürlich und ohne es zu wissen vielleicht, Operationen conitnuamente Form, wenn wir mit den Zeiten zu tun haben.
In Italien sind wir auf das System 24 Stunden (oder gemischt) verwendet. Wenn wir bis 16:00 Uhr zeigen wollen diese Stunde als in anderen Ländern als 16.00 Uhr angegeben. Wer nutzt die postfix am / pm, von denen ofa Nachtstunden zu unterscheiden, noch öfter führt der Betrieb des Moduls, Modul 12 in diesem Fall! Wir Italiener und andere, wobei jedoch daran gewöhnt, die 24 Stunden halten, Operationen mit Formblatt 24!
Als ich 11 in den Morgen (11:00 für alle) bin und denke, "in 5 Stunden", die Italiener 5 +11 reagieren = 16 (vier Uhr nachmittags), könnte ein Fremder auch Antwort 5 +11 = 4.00. Seit 5 + 11 klassische Arithmetik, ist offensichtlich 16, wie die Fremden 04.00 Uhr treffen? Er hat einfach laufen das Modul 12 auf das Ergebnis: 5 + 11 = 16 mod 12 = 4. Es ist nicht notwendig, dass Sie einen Taschenrechner zu ergreifen, um die Genauigkeit der Berechnung zu überprüfen, aber diese Schritte sind ein wenig 'all, zeigte ein Zifferblatt einer Uhr und legen Sie die Hände auf die 11 geistig, dann fügen Sie - immer optisch - 5 Stunden, wie von Geisterhand Sie tatsächlich über 4! Deswegen nennt man sie die vier am Nachmittag 16 ![]()
In Italien, statt, verwenden wir ein Formblatt 24, in der Tat: 11 +5 = 16 mod 24 = 16. Wenn ich bis 23:00 Uhr, 5 Stunden nach dem 28:00 nicht sein, weil 28 modulo 12 = 4! 122514884225 Formblatt 24 = 17! Was passiert ist, dass das wichtigste Ergebnis des Formblatt 24 nie mehr als 24. Aber das Interessanteste daran ist, dass die Zahlen beliebig wiederholt werden:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | 1% 24 = 1 2% 24 = 2 3% 24 = 3 ... 22% 24 = 22 23% 24 = 23 24% 24 = 0 25% 24 = 1 26% 24 = 2 27% 24 = 3 ... 48% 24 = 0 49% 24 = 1 50% 24 = 2 51% 24 = 3 ... |
Diese Wiederholung ist eine entwaffnende Leichtigkeit. Stellen Sie sich vor, zum Beispiel, sollten sie ein Objekt, eine MovieClip, ähnlich einem Schachbrett, in vier Spalten. Erstellen Sie ein MovieClip quandrato, 55 × 55 Pixel und die Fenster Eigenschaften esportiamolo als Simbolo . Der folgende Code wird vier Säulen unserer MovieClip und "Kopf" mit dem Betrieb des Moduls:
1 2 3 4 5 6 7 |
cresce in modo indefinito. Wie man aus dem Code zu sehen, die Variable i Zyklus for wachsende unbestimmte Zeit. Aber die Koordinaten x unserer MovieClip nie einen bestimmten Wert überschreitet, und wird endlos wiederholt! Hier ist ein konkretes Beispiel:
Durch die beiden Knöpfe können Sie variieren die Anzahl der Spalten (die Form) und die Gesamtzahl der Elemente, mit dem Algorithmus vor.






Neueste Kommentare
Robert : Ich rispsoto Ihre Fragen gerne. Die Idee ist wirklich toll. Ich bin für eine Lösung suchen ...
Sting : @ Darius - Sie können ein Beispiel finden Sie hier: http://www.fight4fun.it/ Klick auf: MAPS Ich hoffe, ...
vik : Giustappunto Ich bin an einem Projekt arbeiten und der Kunde hat mich gebeten, alle Nachrichten (die CPT) in Show ...
Giovambattista Fazioli : @ paso: absolut. Einfach Identifizierung des Feldes [cci] Eingang [/ cci] Sie wollen ...
paso : Hallo, ich möchte eine Service-Anfrage, können Sie die datepicker mit cform7 ich spiegp gut ich kann zu implementieren ...