
Osteralgorithmus


        Moin, moin, Du hast es so gewollt ;-)

Hier also die Umsetzung des Oster-Algorithmus in verschiedene Sprachen: 
BASIC, TURBO PASCAL, C und Z80 Assembler.

Ich habe die Programmierung ohne Optimierung vorgenommen und auch nur 
Stichproben gemacht, was die Berechnung angeht.

Bei dem Assembler Programm erkennt man schnell, da der kleinste Teil der 
Algorithmus ist, das meiste geht drauf fr Hilfsprogramme (Diese sind 
brigens aus meiner Library, die ca. 400-450 Module umfat).

Das C Programm ist mit dem Hi-Tech Compiler und das Assembler Programm mit 
dem M80 (dann LINK) getestet; letzteres bitte noch mal durchlaufen lassen, 
denn ich habe schnell (in einer Z80-freien Umgebung) noch ein paar 
Kommentare eingefgt - hoffentlich ohne Syntax Fehler zu erzeugen!

Gruss,   Werner Cirsovius  \\   16.02.1999

10 ' Wann ist Ostern ?
11 ' Nach einem Artikel der Physikalisch-Technischen Bundesanstalt
12 ' Ausfuehrung in BASIC, Werner Cirsovius, Februar 1999
13 '
20 INPUT "Das Jahr eingeben bitte ... ";x
30 IF x < 1583 THEN PRINT "Julianischer Kalender kann nicht berechnet 
werden!":END
40 k = x \ 100
50 l = (3 * k + 3) \ 4
60 m = 15 + l - (8 * k + 13) \ 25
70 s = 2 - l
80 a = (x MOD 19)
90 d = ((19 * a + m) MOD 30)
100 r = (d \ 29) + ((d \ 28) - (d \ 29)) * (a \ 11)
110 og = 21 + d - r
120 sz = 7 - ((x + (x \ 4) + s) MOD 7)
130 oe = 7 - ((og - sz) MOD 7)
140 os = og + oe
150 ps = os + 49
160 ch = os + 39
170 fl = os + 60
180 mess$ = "      Ostern" : v = os : GOSUB 260
190 mess$ = "   Pfingsten" : v = ps : GOSUB 260
200 mess$ = " Himmelfahrt" : v = ch : GOSUB 260
210 mess$ = "Fronleichnam" : v = fl : GOSUB 260
220 END
230 '
240 ' Ausgabe
250 '
260 PRINT mess$;" ist am ";
270 mo = 3
280 da = v
290 IF da <= 31 THEN GOTO 350
300 da = da - 31 : mo = mo + 1
310 IF da <= 30 THEN GOTO 350
320 da = da - 30 : mo = mo + 1
330 IF da <= 31 THEN GOTO 350
340 da = da - 31 : mo = mo +1
350 PRINT USING "##";da;
360 PRINT "." USING "##";mo;
370 PRINT "." USING "####";x
380 RETURN


