Autor Beitrag
Mathematiker
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 2622
Erhaltene Danke: 1447

Win 7, 8.1, 10
Delphi 5, 7, 10.1
BeitragVerfasst: Mi 14.11.12 22:59 
Hallo,
nach einem frustrierenden Tag mit ständig nervenden und extrem pubertierenden Schülern ( :motz: ) habe ich eines meiner kleinen Programme auf (hoffe ich) vorzeigbares Niveau gebracht.
Dieses Programm gehört wahrscheinlich wieder zur Kategorie "Braucht niemand", mir macht's aber Spaß und es lenkt ab.
Als Fan von Zahlen (siehe www.entwickler-ecke....Sprachen_109665.html) fasziniert mich auch die Schreibweise in anderen Kulturen. Das Programm, an dem ich seit einiger Zeit arbeite, stellt natürliche Zahlen von 0 bis maximal 79999 in 59 verschiedenen Systemen dar.

zahlen

Zu diesen gehören die heute von mehr als 2 Milliarden Menschen benutzten Darstellungen in Arabisch, Farsi und Hindi, aber auch antike Systeme, wie das altgriechische, das ägyptische oder die Maya-Zeichen.
Andere Ziffern entstammen Kunstsystemen, wie die Dancing Men von Conan Doyle oder SpaceKees, D'Ni usw. von diversen Computerspielen oder aber Klingon, Narn, Stargate, ... verschiedener Science-Fiction-Serien, usw. usf.
Einige der Zahlensysteme haben eine relativ komplizierte Konstruktion der Zahlen, z.B. im Sanskrit oder Pékrif.

Programmtechnisch war es bzgl. Delphi keine Herausforderung. Der Quelltext beinhaltet eigentlich nur das Abarbeiten der Zahlumwandlungen. Wesentlich aufwendiger war die Konstruktion der 4 Schriftarten, in denen die notwendigen Zeichen abgelegt sind. Einige Zeichen sind auch als Gifs gespeichert.
Als Hauptquelle habe ich das geniale "Universalgeschichte der Zahlen" von Georges Ifrah (Werbung! :wink: ), www.omniglot.com und www.obib.de verwendet. Dort gibt es teilweise auch Erklärungen zu den Zahlsystemen.

Ich persönlich staune, wie in anderen Kulturen Zahlen geschrieben wurden und werden, und bewundere vor allem deren Einfallsreichtum.

Beste Grüße
Mathematiker

Rev 1: Fehler bei Zahlenüberlauf beseitigt.
Einloggen, um Attachments anzusehen!
_________________
Töten im Krieg ist nach meiner Auffassung um nichts besser als gewöhnlicher Mord. Albert Einstein


Zuletzt bearbeitet von Mathematiker am Mo 31.12.12 09:22, insgesamt 2-mal bearbeitet

Für diesen Beitrag haben gedankt: Anika, lukipela, ub60
haentschman
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 285
Erhaltene Danke: 33


DX10 Berlin Professional
BeitragVerfasst: Do 15.11.12 07:39 
Moin... 8)

ich bin immer wieder begeistert wo du die Zeit hernimmst. Dein Tag hat auch nur 24 Stunden. :lol: Es ist auch schön zu sehen, daß es noch Lehrer gibt die von ihrer Arbeit begeistert sind :zustimm: Weiter so.
Mathematiker Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 2622
Erhaltene Danke: 1447

Win 7, 8.1, 10
Delphi 5, 7, 10.1
BeitragVerfasst: Do 15.11.12 13:21 
user profile iconhaentschman hat folgendes geschrieben Zum zitierten Posting springen:
ich bin immer wieder begeistert wo du die Zeit hernimmst. ... Weiter so.

Dank für das Lob.
Allerdings ist dieses Programm nicht in letzter Zeit entstanden. Das existiert schon einige Jahre auf meinem PC. Ich habe es nur in eine etwas schönere Form gebracht.

Beste Grüße
Mathematiker

_________________
Töten im Krieg ist nach meiner Auffassung um nichts besser als gewöhnlicher Mord. Albert Einstein
Nersgatt
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 1581
Erhaltene Danke: 279


Delphi 10 Seattle Prof.
BeitragVerfasst: Do 15.11.12 15:07 
Hübsches Progrämmchen!

Ich habe mir mal den Quellcode angeschaut und habe ehrlich gesagt rein gar nichts verstanden. Vielleicht solltest Du auch noch etwas Energie in gut lesbaren und strukturierten Quellcode stecken. Ich möchte Deine Leistung nicht schmälern, aber für mich gehört zu einem guten Programm auch ein guter (lesbarer, wartbarer) Quellcode.
Das heißt, das Programm funktioniert, jetzt kommt das Refactoring dran!

_________________
Gruß, Jens
Zuerst ignorieren sie dich, dann lachen sie über dich, dann bekämpfen sie dich und dann gewinnst du. (Mahatma Gandhi)

Für diesen Beitrag haben gedankt: bummi
Delphi-Laie
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 1600
Erhaltene Danke: 232


Delphi 2 - RAD-Studio 10.1 Berlin
BeitragVerfasst: Do 15.11.12 17:19 
Mathematiker, allmählich bist Du für irgendeinen Ehrentitel fällig. Hier im Forum gibt es ja schon ein paar davon.

Als - gar nicht immer beabsichtigter - Programmquäler fand ich schon wieder eine Kleinigkeit: Bei sehr großen Zahlen ("9999999....") kommt die Fehlermeldung, daß irgendeine koreanische Ressource nicht gefunden werden konnte, und dann mag das Programm auch nicht mehr...... Mich hatte eigentlich nur interessiert, wie die Römer mit solch( groß)en Zahlen "klarkammen". Das römische Zahlsystem ist dafür ja nicht geeignet.

Was Deine "Schöler" anbetrifft: Laß die Banausen doch einfach mal mit Deinen Programmen spielen - und gib ihnen neben den Exe-Dateien die natürlich später mit Zensuren belegte läppische Hausaufgabe, so etwas nachzuprogrammieren - vielleicht lernen sie dann ansatzweise Achtung und Respekt. Vermutlich kämen sie Dir aber als Foristen auf die Schliche, da (wenn es darum geht, Aufwand und Anstrengung zu sparen) setzt dann die Intelligenz wieder ein.....

Edit: Mit jedem neu vorgestellten Programm wird eine zentrale "Übersicht" mit Verlinkungen zu den einzelnen Programmen ratsamer...
Mathematiker Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 2622
Erhaltene Danke: 1447

Win 7, 8.1, 10
Delphi 5, 7, 10.1
BeitragVerfasst: Do 15.11.12 17:56 
Hallo Delphi-Laie,
user profile iconDelphi-Laie hat folgendes geschrieben Zum zitierten Posting springen:
Bei sehr großen Zahlen ("9999999....") kommt die Fehlermeldung, daß irgendeine koreanische Ressource nicht gefunden werden konnte, und dann mag das Programm auch nicht mehr.

Dummer Fehler meinerseits. Ich teste zwar auf < Maximalgrenze, habe aber nicht beachtet, dass durch den Integerüberlauf bei großen Zahlen negative Werte "auftreten". In der Revision 1 geändert.
user profile iconDelphi-Laie hat folgendes geschrieben Zum zitierten Posting springen:
Mich hatte eigentlich nur interessiert, wie die Römer mit solch( groß)en Zahlen "klarkammen". Das römische Zahlsystem ist dafür ja nicht geeignet.

Ist es auch nicht in der bekannten Form. Erst im Mittelalter wurden Ideen verbreitet, Zahlen größer 10000 vernünftig darzustellen. Mitunter werden Tausender mit einem Querstrich über den Ziffern markiert, manchmal werden die Tausender mit einem ' vor einem M markiert, usw.
Allerdings wurden auch römische Abaki gefunden, bei denen unser Unendlichzeichen für 1000, ((|)) für 10000, (((|))) für 100000 und IxI für 1 Million genutzt werden.

Hallo Nersgatt,
user profile iconNersgatt hat folgendes geschrieben Zum zitierten Posting springen:
Ich habe mir mal den Quellcode angeschaut und habe ehrlich gesagt rein gar nichts verstanden. Vielleicht solltest Du auch noch etwas Energie in gut lesbaren und strukturierten Quellcode stecken.

Du hast ja Recht. In der Revision 1 habe ich etwas verändert. Allerdings habe ich bei den komplexeren Systemen noch nicht auskommentiert, wie die Zahlen gebildet werden. Wird vielleicht noch.

Beste Grüße
Mathematiker

_________________
Töten im Krieg ist nach meiner Auffassung um nichts besser als gewöhnlicher Mord. Albert Einstein
Nersgatt
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 1581
Erhaltene Danke: 279


Delphi 10 Seattle Prof.
BeitragVerfasst: Do 15.11.12 19:24 
user profile iconMathematiker hat folgendes geschrieben Zum zitierten Posting springen:
Du hast ja Recht. In der Revision 1 habe ich etwas verändert. Allerdings habe ich bei den komplexeren Systemen noch nicht auskommentiert, wie die Zahlen gebildet werden. Wird vielleicht noch.


Als erstes würde ich sprechende Namen für alle Controls vergeben.
Dann sprechende Namen für die Variablen vergeben.

Im Ausbauschritt 2 würde ich anfangen, alles was nach "//Hauptroutine" kommt in deutlich kleinere Procedures zu zerlegen.
Mindestens in eine Procedure für jede Schreibweise. Die "Hauptroutine" sollte nichts anderes machen, als die Unterroutinen aufzurufen.

Im zweiten Ausbauschritt würde ich die ganze Inlineprocedures zu privaten Procedures oder Functions der Klasse machen.

Im dritten Schritt könntest Du die Berechnung der Darstellungen in eine eigene Unit verlagern, getrennt vom Hauptformular

Im vierten Schritt würde ich das Ganze dann objektorientiert machen. Das heißt, für jede Darstellung eine Klasse, die in der Lage ist, die Zahl auf ein Canvas zu zeichen. Alle Klassen abgeleitet von einer gemeinsamen Basisklasse.

Und wenn Du das gemacht hast, wirst Du Dir die Kommentare weitestgehend sparen können - weil sich Dein Code dann einfach "runterlesen" lässt, auch wenn man ihn nicht kennt oder seit 5 Jahren nichts mehr dran gemacht hat.

_________________
Gruß, Jens
Zuerst ignorieren sie dich, dann lachen sie über dich, dann bekämpfen sie dich und dann gewinnst du. (Mahatma Gandhi)

Für diesen Beitrag haben gedankt: Martok, Mathematiker, ub60
Mathematiker Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 2622
Erhaltene Danke: 1447

Win 7, 8.1, 10
Delphi 5, 7, 10.1
BeitragVerfasst: Do 15.11.12 20:31 
Hallo Nersgatt,
vielen Dank für Deine Hinweise. Selbstverständlich hast Du aus der Sicht eines Programmierers recht und es wäre mit Sicherheit besser, wenn meine Quelltexte diesen Anforderungen gerecht würden.

Dennoch werde ich es wohl auch in Zukunft kaum berücksichtigen können, da ich u.a. auch gar nicht vollständig verstehe, was Du in den einzelnen Schritten meinst.
Da ich das Alles nur aus Hobby-Gründen betreibe und zum Glück nicht von der Programmiererei leben muss, werde ich meinen in 25 Jahren entstandenen "Turbo Pascal-Programmierstil", wenn es einer ist und mag er auch noch so schlecht sein, kaum noch ändern.
Dafür bin ich zu alt und zu träge. :? Tut mir leid.
Dass ich damit kein Vorbild bin, ist mir klar, aber vielleicht bin ich wenigstens ein abschreckendes Beispiel. :wink:

Vielleicht hätte ich das kleine Programm auch unter Freeware veröffentlichen sollen. Offensichtlich funktioniert es ja, was mir eigentlich zuerst wichtig war.
Mein Fehler.

Beste Grüße
Mathematiker

_________________
Töten im Krieg ist nach meiner Auffassung um nichts besser als gewöhnlicher Mord. Albert Einstein