IT-Academy Logo
Sign Up Login Help
Home - Programmieren - Visual Basic - Die Osterformel mit Visual Basic



Die Osterformel mit Visual Basic

Mit diesem kleinen Programm kann man durch eingeben einer Jahreszahl ganz leicht das Datum des Ostersonntags errechnen.


Autor: Dominik Notz (Dom)
Datum: 19-08-2005, 15:28:34
Referenzen: Visual Basic 6
Schwierigkeit: Fortgeschrittene
Ansichten: 3707x
Rating: 3 (2x bewertet)

Hinweis:

Für den hier dargestellte Inhalt ist nicht der Betreiber der Plattform, sondern der jeweilige Autor verantwortlich.
Falls Sie Missbrauch vermuten, bitten wir Sie, uns unter missbrauch@it-academy.cc zu kontaktieren.

[Druckansicht] [Als E-Mail senden] [Kommentar verfassen]



Ostern ist nicht wie z.B. Weihnachten immer an einem bestimmten Tag, sondern wechselt von Jahr zu Jahr. Wir feiern den Ostersonntag immer am ersten Sonntag nach Vollmond im Frühling. Bloß wie rechnet man das aus? Mit dieser Frage hat sich auch der berühmte Mathematiker Carl Friedrich Gauß (1777 - 1855) beschäftigt und entwickelte die sogenannte Osterformel.


1. Starten Sie Visual Basic 6, legen Sie ein Standard-Exe-Projekt an und fügen Sie ein Modul hinzu.


2. Geben Sie in das Programmcodefenster des Moduls folgende Function ein:

Function FeiertagDatum(ByVal intJahr As Integer) As Date
Dim X As Integer, K As Integer, M As Integer, S As Integer
Dim A As Integer, D As Integer, R As Integer, OG As Integer
Dim SZ As Integer, OE As Integer, OS As Integer, Monat As Integer
X = intJahr
K = Int(X / 100)
M = 15 + Int((K * 3 + 3) / 4) - Int((K * 8 + 13) / 25)
S = 2 - Int((3 * K + 3) / 4)
A = X Mod 19
D = (19 * A + M) Mod 30
R = Int(D / 29) + (Int(D / 28) - Int(D / 29)) * Int(A / 11)
OG = 21 + D - R
SZ = 7 - (X + Int(X / 4) + S) Mod 7
OE = 7 - (OG - SZ) Mod 7
OS = OG + OE
Monat = 3
If OS > 31 Then
OS = OS - 31
Monat = Monat + 1
End If
FeiertagDatum = DateSerial(X, Monat, OS)
End Function


3. Schalten Sie auf das Programmcodefenster des Formulars um und geben Sie in die Form_Load Prozedur um und geben Sie folgende Befehle ein:

Private Sub Form_Load()
Dim intJahr As Integer
intJahr = InputBox("Bitte Jahr eingeben:", "Feiertage")
MsgBox Prompt:="Ostersonntag ist am " & FeiertagDatum(intJahr:=intJahr)
Unload Me
End Sub




Und das ist dann schon das ganze Projekt! Das ausgerechnete Datum wird dann von der Msgbox ausgegeben!
Ein paar Feiertage wie z.B. Christi Himmelfahrt oder Pfinsten hängen von Ostern ab und können so auch errechnet werden! Na dann, viel Spaß!



CDM
Rookie
Beitrag vom:
04-07-2009, 16:31:22

Gut, nu hab\' ich auch den Basic Code!

Ich habe vor Urzeiten für Arbeitskalender etc. auf Großrechner diese Formel schon in COBOL realisiert.
Über Micro Focuc (gibt\'s die überhaupt noch), hab\' ich dann nach Windows portiert (über in Cobol erstellte DLL).
Eine Turbo Pascal Version hab\' ich auch mal gebastelt - die läuft auch heute noch unter XP. Unter Vista nicht mehr.

Gruß

-----------------------------------------------------


paedubucher
Professonial
Beitrag vom:
19-08-2005, 20:05:35

naja...

mag ja eine nette Funktion sein, aber Programmcode bringt nichts wenn man nicht weiss, was er macht! Natürlich, es wird das Osterdatum ausgegeben - aber warum werden die so zusammengerechnet, wie sie zusammengerechnet werden?

Ausserdem solltest du den Programmcode etwas darstellen, so ist er schlecht lesbar!

EDIT: Wozu wird denn hier ein Formular benötigt? Du gibts ja alles in einer MessageBox aus! Das Formular ist völlig überflüssig...

-----------------------------------------------------


[back to top]



Userdaten
User nicht eingeloggt

Gesamtranking
Werbung
Datenbankstand
Autoren:03792
Artikel:00815
Glossar:04618
News:08887
Userbeiträge:16079
Queueeinträge:00170
News Umfrage
Ihre Anforderungen an ein Online-Zeiterfassungs-Produkt?
Mobile Nutzung möglich (Ipone, Android)
Externe API Schnittstelle/Plugins dritter
Zeiterfassung meiner Mitarbeiter
Exportieren in CSV/XLS
Siehe Kommentar



[Results] | [Archiv] Votes: 15
Comments: 0