 |
Das deutsche QBasic- und FreeBASIC-Forum Für euch erreichbar unter qb-forum.de, fb-forum.de und freebasic-forum.de!
|
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
ytwinky

Anmeldungsdatum: 28.05.2005 Beiträge: 2624 Wohnort: Machteburch
|
Verfasst am: 13.01.2006, 20:41 Titel: Macros: HHGTTG oder warum ist 54=42? |
|
|
Macros sind eine feine Sache, jedoch sollten sie nicht unvorsichtig benutzt werden.
Hitchhikers Guide to the Galaxy(HHGTTG) ist ein tolles Buch, Spiel und mglw. Kino-Film.
Fans kennen den Hypersuperdupaultra-Rechner DeepThought, der nach irre langer
Rechenzeit das Ergebnis '42' als Antwort auf die Frage:
'WHAT DO YOU GET, WHEN YOU MULTIPLY SIX BY NINE ?'
(Was erhält man, wenn man SECHS mit NEUN malnimmt?)
ausgibt. Es gibt im Internet genug Material zu HHGTTG, das will ich hier nicht
aufführen, aber warum ist denn nun 54=42 ???
Im freeBasic-Programm DeepThought.Bas steht eine mögliche Antwort!
Aber wo ist die Datei?
Hier: http://ytwinky.freebasic.de/files/DeepThought.Bas
Ich habe nämlich von Mecki ein büschen WebSpace bekommen, wo ich freeBASIC-Quellcodes
'lagern' möchte. Herzlichen Dank an Mecki an dieser Stelle.
(An der Werbung rechts sollte sich der geneigte Besucher nicht stören, die ganze Sache
muß schließlich irgendwie finanziert werden.)
Anmerken möchte ich noch, daß dies meine erste Site ist und sie noch nicht 100%ig läuft.
Na, das lerne ich auch noch und mglw. ist das Layout nach diesem Wochenende schon ein
ganz Anderes..
Zurück zum Thema:definiert SIX als Ergebnis von 5+1, das macht 6, da gibt es keinen Zweifel..
ist 9, auch darüber gibt es keinen Streit..
(6*9=54, das geht auch ohne Taschenrechner, wer will, kann es mit Excel prüfen )
Warum ist denn nun SIX*NINE=42?
Nun, beim Kompilieren wird der Macro-Name durch den Macro-Text ersetzt, also:
und das ist eben nichts anders als 42.
Wer mag kann mit diesen define's mal rumspielen, um andere Ergebnisse zu sehen: Code: | Option Explicit
#Define SIX 1+5
#Define NINE 8+1
#Define Sechs (1+5)
#Define Neun (8+1)
?"SIX*NINE=" &SIX*NINE
?"(SIX*NINE)=" &(SIX*NINE)
?"(SIX)*(NINE)=" &(SIX)*(NINE)
?"NINE*SIX=" &NINE*SIX
?"Sechs*Neun=" &Sechs*Neun
Sleep | Interessant ist folgender Teil: Code: | Do
y$="":While y$="":y$=UCase$(Inkey$):Wend
Loop Until Instr("DE" &Chr(27), y$)<>0 | Turbo-Pascal liefert in einer ähnlichen Schleife beim Drücken der Enter-Taste 1 und bricht ab.
FB0.15b macht das, was ich will und erkennt, daß Enter(also Chr(13))nicht im zu durchsuchenden String ist und liefert 0..
.. astrein..
Was lernen wir daraus?
Manchmal ist SIX*NINE=42, manchmal aber auch 54, denn der Kompiler macht nicht, was er will,
sondern das was er soll..
Viele Grüße
ytwinky _________________
v1ctor hat Folgendes geschrieben: | Yeah, i like INPUT$(n) as much as PRINT USING.. | ..also ungefähr so, wie ich GOTO.. |
|
Nach oben |
|
 |
Michael Frey

Anmeldungsdatum: 18.12.2004 Beiträge: 2577 Wohnort: Schweiz
|
Verfasst am: 14.01.2006, 11:43 Titel: |
|
|
Jaja, der Praprozessor ...
Immer wieder witzig.
Zu deiner Theorie:
Meiner Meinung nach Falsch!
Das Ding Arbeitet im 13er System und wir 10er System .
Zum Beweiss:
Code: | 54/13=4 Rest 2
4/13=0 Rest 4 |
Also ist
54 im 10er System
gleich
42 im 13er System
, folglich hat DeepThought richtig gerechnet, nur im Falschen Zahlen System.
 _________________ http://de.wikibooks.org/wiki/FreeBasic Jede Hilfe für dieses Buch ist Willkommen!
http://de.wikibooks.org/wiki/FreeBasic:_FAQ FAQ zu Freebasic (im Aufbau, hilfe Willkommen)
Neu mit Syntax Highlight |
|
Nach oben |
|
 |
ytwinky

Anmeldungsdatum: 28.05.2005 Beiträge: 2624 Wohnort: Machteburch
|
Verfasst am: 14.01.2006, 19:32 Titel: |
|
|
Au prima, ein Streit, das freut mich aber
Michael Frey hat Folgendes geschrieben: | Zu deiner Theorie:
Meiner Meinung nach Falsch! | Das akzeptiere ich nicht
Wie die o.a. Beispiele zeigen, liegt es an den Macros!
Deshalb: Thread-Titel hat Folgendes geschrieben: | Macros: HHGTTG oder warum ist 54=42? | Daß hier viele Wege nach Rom führen ist klar und deine Erklärung einleuchtend
Wenn es um Zahlensysteme ginge, hätte ich ihn möglicherweise hat Folgendes geschrieben: | Zahlensysteme: Welches ist das Richtige, um aus 54 denn doch 42 zu machen? | genannt, oder meinst du nicht?
Wenn ich einen Fehler in einem Programm suche, KANN letzten Endes eben eine solche 'fehlerhafte' Macrodefinition schuld sein.
Beachte: http://www.freebasic.net/forum/viewtopic.php?t=2528&start=15
Der Übersetzer hat Folgendes geschrieben: | #define IstGerade(n) (n AND 1 = 0)
' ...
CONST Eine_Zahl = 2
IF IstGerade( Eine_Zahl ) THEN PRINT Eine_Zahl; " ist gerade!"
' ...
END
Vorsicht: #define macht in Wirklichkeit (n AND (1 = 0)) und das ist immer 0. | Auf solche Sachen wollte ich nur hinweisen..
..rechnen an sich ist langweilig
Viele Grüße
ytwinky _________________
v1ctor hat Folgendes geschrieben: | Yeah, i like INPUT$(n) as much as PRINT USING.. | ..also ungefähr so, wie ich GOTO.. |
|
Nach oben |
|
 |
Michael Frey

Anmeldungsdatum: 18.12.2004 Beiträge: 2577 Wohnort: Schweiz
|
Verfasst am: 14.01.2006, 20:08 Titel: |
|
|
War ja auch nicht ganz ernst gemeint .
Klar kenne ich den Ärger den man sich mit Macros einfangen kann und das sie trotzdem vieles erleichtern.
(Plötzlich gibt es Fehler in Quellcode der im Editor nicht existiert oder plötzlich fehlt ein "end sub" weil man ein "#Endif" vergessen hat) _________________ http://de.wikibooks.org/wiki/FreeBasic Jede Hilfe für dieses Buch ist Willkommen!
http://de.wikibooks.org/wiki/FreeBasic:_FAQ FAQ zu Freebasic (im Aufbau, hilfe Willkommen)
Neu mit Syntax Highlight |
|
Nach oben |
|
 |
ytwinky

Anmeldungsdatum: 28.05.2005 Beiträge: 2624 Wohnort: Machteburch
|
Verfasst am: 14.01.2006, 20:27 Titel: |
|
|
Michael Frey hat Folgendes geschrieben: | War ja auch nicht ganz ernst gemeint . | ..habe ich auch nicht so aufgefaßt..
Aber weil ich ein ganz fieser Nachrechner bin, habe ich deine Zahlensystemgeschichte natürlich überprüft
Nicht, weil ich dir mißtraue, sondern endlich hatte ich mal einen 'richtigen' Grund, meinen AllesUmwandler zu testen..
..wenn du jetzt aber ein FB-Programm erwartest, muß ich dich enttäuschen:
Für so etwas habe ich doch Numerical Chameleon 1.0.6, damit rechne ich alles um. Das ist das zweite Mal, daß ich ein java-Programm benutze, das erste war dies CoffeeCup, mit dem Grafiken nach freeBASIC.de hochgeladen werden können.
Doch nun zurück zur Umwandlung:
Du hast ja recht..
Ich fand das Beispiel aus dem amerikanischen Forum nur deshalb nicht schlecht, weil es ganz deutlich macht, wohin Copy&Paste-Programmierung führen kann: Das #define kann nicht falsch sein, das habe ich aus dem amerikanischen Forum, der Fehler muß woanders liegen, ja und dann such mal..
Gruß
ytwinky _________________
v1ctor hat Folgendes geschrieben: | Yeah, i like INPUT$(n) as much as PRINT USING.. | ..also ungefähr so, wie ich GOTO.. |
|
Nach oben |
|
 |
Michael Frey

Anmeldungsdatum: 18.12.2004 Beiträge: 2577 Wohnort: Schweiz
|
Verfasst am: 14.01.2006, 20:56 Titel: |
|
|
Alles Umwandler .
Geiles "Spielzeug" auf dem Programmierbaren Taschenrechner.
Hab mir auch mal so ein Programm für meinen Taschenrechner (Casio Classpad 300) geschrieben.
Ich war der (fast) einizige der das 7er System (spielerei an der Berufschule um die Lehrlinge zustressen) mit dem Taschenrechner umwandeln konnte und der sogar den Lösungsweg von Taschenrechner ab schreiben konnte .
Macht echt Fun die anderen beim berrechen des Restes zuzusehen und ich kann ihn ganz einfach vom Taschenrechner abschreiben. _________________ http://de.wikibooks.org/wiki/FreeBasic Jede Hilfe für dieses Buch ist Willkommen!
http://de.wikibooks.org/wiki/FreeBasic:_FAQ FAQ zu Freebasic (im Aufbau, hilfe Willkommen)
Neu mit Syntax Highlight |
|
Nach oben |
|
 |
ytwinky

Anmeldungsdatum: 28.05.2005 Beiträge: 2624 Wohnort: Machteburch
|
Verfasst am: 14.01.2006, 21:08 Titel: |
|
|
Ich wollte mal selbst einen AllesUmwandler schreiben(in Pascal), habe es dann aber bei den Systemen 2, 8, 10 und 16 belassen, weil der Rest nur theoretischen Wert hat, auch "um die Lehrlinge zustressen"..
Gruß
ytwinky _________________
v1ctor hat Folgendes geschrieben: | Yeah, i like INPUT$(n) as much as PRINT USING.. | ..also ungefähr so, wie ich GOTO.. |
|
Nach oben |
|
 |
|
|
Du kannst keine Beiträge in dieses Forum schreiben. Du kannst auf Beiträge in diesem Forum nicht antworten. Du kannst deine Beiträge in diesem Forum nicht bearbeiten. Du kannst deine Beiträge in diesem Forum nicht löschen. Du kannst an Umfragen in diesem Forum nicht mitmachen.
|
|