![]() |
Osterformel nach Computus ecclesiasticus
Liste der Anhänge anzeigen (Anzahl: 1)
Osterformel nach Computus ecclesiasticus
Heute stelle ich einen Algorithmus vor, der schon fast in Vergessenheit geraten ist. Wie wir alle wissen, hat sich Gauss 1800 mit seinem Osteralgorithmus verewigt, der heute immer noch in julianischen und gregorianischen Kalendern Anwendung findet. Der ist hier in der DP mehrfach zu finden. In den Jahren davor war es hohen Priestern vorbehalten, sich mit Algorithmen zum Kalender zu beschäftigen. Aus diesen Zeiten stammt der Computus ecclesiasticus zur Bestimmung des Ostersonntags eines Jahres, namentlich auf Aloysius Lillius und dem Jesuiten Christopher Clavius zurückzuführen. Die Quellen zu dem Pseudocode sind im Internet sehr rar. Ich habe diesen Pseudocode bei Helmut Herold gefunden: Die Programmiersprache C, Teil 2 S.266 (im Anhang) Der Pseudocode liefert Daten für Ostersonntage im gregorianischen Kalender. Einige werden wieder fragen: Was soll das? Ich meine: - Delphi liefert, zumindest bis zur Version 7 keine Unterstüzung - Der Code ist wieder plattformunabhängig und lässt sich einfach in jede Programmiersprache portieren - Wieder ein hervorragendes Beispiel, um Pseudocode in Code umzusetzen (vor allem für Anfänger ein riesengrosses Problem) - Interesse zu wecken, den Code zu verstehen (erfordert viel Recherche-Arbeit) - Ergebnisse mit dem Gauss-Algorithmus vergleichen - Der Pseudo-Code hat historische Bedeutung Nach Delphi umgesetzter Code (Vorschlag):
Delphi-Quellcode:
Gruss
implementation
{$R *.dfm} //Osterformel mit computus ecclesiaticus function computus(y:integer):TDate; var C,G,X,Z,D,E,N,T,M:integer; mydate:TDate; begin G:=(Y mod 19) +1; C:= Y div 100 +1; X:= 3*C div 4 - 12; Z:= (8*C+5) div 25 - 5; D:= (5*Y) div 4 - X - 10; E:= (11*G + 20 +Z-X) mod 30; if (E=25) and (G>11) or (E=24) then inc(E); N:=44-E; if n<21 then inc (N,30); N:=N+7- (D+N) mod 7; if (N>31) then begin T:= n-31; //(n-31).April M:=4; end else begin T := N;//n.März M:=3; end; {------Soweit der Originalcode----------} mydate:=EncodeDate(Y,M,T); result:=mydate; end; procedure TForm1.Button1Click(Sender: TObject); var Y:integer; begin Y:=StrToInt(Spinedit1.Text); Edit1.Text:=DateToStr(computus(Y)); end; end. Wolfgang |
Re: Osterformel nach Computus ecclesiasticus
[OT] Du hast einen Knall mit Deinen Kalenderfunktionen. (SCNR^^)[/OT]
:lol: |
Re: Osterformel nach Computus ecclesiasticus
Naja, ich forsche halt seit längerer Zeit :)
|
Re: Osterformel nach Computus ecclesiasticus
Hallo,
ich glaube wir hatten das schonmal in einem anderen Thread von dir, aber ich möchte trotzdem meine Meinung dazu sagen. Ich finde, man sollte der Funktion noch aussagekräftige Variablennamen verpassen. Auch die Formatierung ist nicht gerade schön, auch wenn da jeder seinen eigenen Stil hat. Das Beispiel im Form des ButtonClick-Events sollte man meiner Meinung nach auch entfernen. Ansonsten kann auch sowas in die CL, wenn es nach mir ginge. Natürlich gehört der Algorithmus zu jenen, die kaum jemand brauchen wird, aber ich wäre trotzdem um jeden halbwegs ordentlichen Beitrag froh. =) Liebe Grüße, Valentin |
Re: Osterformel nach Computus ecclesiasticus
@Valle:
- Den Thread hatten wir noch nicht - Über die Formatierung kann man diskutieren - Den Button1Click kann man natürlich entfernen, war als Hilfe für Anfänger gedacht - Die Variablennamen habe ich bewusst aus dem Original übernommen, Interessierte sollen schon selbst forschen, was sie bedeuten (alles vorkauen bringt nichts) - Dass den Code keiner braucht, ist auch klar Was du unter einem halbwegs ordentlichen Beitrag verstehst, ist mir unklar LG Wolfgang |
Re: Osterformel nach Computus ecclesiasticus
Zitat:
|
Re: Osterformel nach Computus ecclesiasticus
Tja Wolfgang, die Algorithmen nach Delphi zu übersetzen kann im Prinzip jeder. Sie sauber aufzubereiten ist schon etwas aufwändiger. ;)
Wenn du den Code verstanden hast, dann ändere bitte die Variablen. Aktuell finde ich den persönlich auch sehr unleserlich und die Code-Library soll ja eine gewisse Vorbildfunktion haben. |
Re: Osterformel nach Computus ecclesiasticus
Mh. :gruebel:
Also ich bin mir recht sicher, irgendwo mal jemanden deine Variablen-Namen kritisieren gesehen zu haben. Aber wenn du meinst das hat bisher keiner gemacht, dann glaube ich dir das - du wirst es besser wissen als ich. :-) Mit der Begründung "alles vorkauen bringt nichts" bin ich dann ehrlich gesagt aber nicht mehr einverstanden. Dein Code ist bereits vorgekaut. Jemanden der einfach nur vorran kommen will, braucht ihn nur noch zu kopieren. Für Leute die ihn wirklich verstehen wollen, sind deine Variablen nur noch ein Hindernis. Wenn du nicht vorkauen möchtest, dann bist du in der CL glaube ich falsch. Zitat:
Liebe Grüße, Valle |
Re: Osterformel nach Computus ecclesiasticus
Tja Matze, dazu müsste man jetzt die mitteralterlichen Kirchenbücher studieren,
dann wäre man etwas schlauer. Wenn jemand Lust hat ..., ich erst nach meiner Pension im Sommer :) |
Re: Osterformel nach Computus ecclesiasticus
Wolfgang hat mit keinem Wort die Codelibrary erwähnt. Also muss er überhaupt nichts. Er hat 100%ig Recht, wenn er sagt: Schaut selbst nach, es macht Spass, zu recherchieren.
Nur leider ist der Beitrag dann in der falschen Sparte. Wirklich Wolfgang. Du bist der Einzige, der tolle Beiträge und vergessene Algorithmen auskramt, aber dann zu beratungsresistent ist, den Rest noch beizusteuern. Das fing bei so einer Kalenderfunktion an, ging über diverse Beiträge, die ich vergessen konnte bis zu den quadratische Gleichungen (was war das für ein Heck-Meck) und nun wieder so ein mal wieder sehr interessanter Beitrag, der aber wieder an der Form scheitern wird und -denke ich- keinen Weg in die CL finden wird. Wenn Dir ein Schüler mit einer Sauklaue und niedergepfuscht auf zerknülltem Papier stichpunktartig eine Hausarbeit abliefert... Wird so eine Arbeit dann prämiert, oder kommt in die Mappe: "Hausarbeiten: Exzellente Beispiele?" Und sag bloß nicht 'Ja', das glaubt man nämlich einem echten Lehrer nicht. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 23:33 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz