3. Programmierübung (Fachinformatiker) hlsv-zv4-ew-fi0301 Frank Zimmermann 28. Mai 2001 1 1.1 Aufgabe Astrologie Aufgabe ist die Erstellung eines Horoskops. Dazu benötigen wir ein Programm, daß aus einem Kalenderdatum und der Uhrzeit die Winkel der Planeten/Objekte (in Bezug auf die Erde, die Erde ist im Mittelpunkt) berechnet. Dieses Programm ist vorgegeben und kann im HlSV–Intranet unter ftp://www.hannover.lsv.de.intern/pub/progueb/astro.exe heruntergeladen werden (Win32-Programm). Dieses Programm soll von dem zu erstellenden Horoskop-Programm als externes Programm eingebunden (gestartet und ausgeführt) werden. Ausgabe soll eine sortierte Liste von Aspekten mit Angabe deren Güte sein. 1.2 Hintergrund Die Astrologie glaubt (im Gegensatz zur Astronomie!), daß das Schicksal der Menschen eng mit astronomischen Himmelskörpern und Konstellationen verbunden ist. Zur Berechnung dieser Konstellationen wird die Erde in das Zentrum eines Kreises gesetzt und die Himmelskörper (Sonne, Merkur, Venus, Mars, Saturn, Jupiter, Uranus, Neptun, Pluto, Mond) werden auf konzentrischen Kreisen plaziert. Dann werden von der Erde ausgehend Linien durch die Himmelskörper gezogen und die dabei entstehenden Winkel zwischen den Objekten interpretiert. Dabei sind üblicherweise (je nach astrologischer Schule eher mehr) folgende Winkelkonstellationen (auch (Haupt-)Aspekte genannt) für die Astrologie bedeutsam1 : 1 Daneben gibt es noch diverse Nebenaspekte, die oft in den verschiedenen Astrologieschulen Bedeutung besitzen (Halbsextil/30◦ , Halbquadrat/45◦ , Quintil/72◦ , Anderthalbquadrat/135◦ , 1 2 hlsv-zv4-ew-fi0301 Winkelbezeichnung Konjunktion Quadrat Opposition Sextil Trigon Winkel 0◦ 90◦ 180◦ 60◦ 120◦ Bedeutung harmonisch / disharmonisch extremer Spannungsaspekt herausfordernd harmonisch und sich gegenseitig ergänzend harmonisch und sich gegenseitig verstärkend Da es praktisch unmöglich ist, daß die Himmelskörper genau diese Winkel untereinander besitzen, gesteht der Astrologe sich üblicherweise eine kleine Ungenauigkeit bei der Definition eines Aspektes zu (Orbis genannt). Für jeden an einem (Haupt-)Aspekt beteiligten Himmelskörper toleriert der Astrologe eine Ungenauigkeit von ca. 2◦ . Damit aber möglichst viel zu Deuteln ist, ziehen die meisten Astrologen nicht nur die Himmelskörper, sondern auch die sogenannten Halbsummen zwischen den Himelskörpern in ihre Deutung mit ein; das sind gedachte Winkelhalbierende zwischen zwei Himmelskörpern. Für die Halbsummen gilt ein kleinerer Orbis von ca. 1.5◦ . Objekt Sonne Merkur Venus Mond Mars Jupiter Saturn Uranus Neptun Pluto Halbsumme Orbis 2◦ 2◦ 2◦ 2◦ 2◦ 2◦ 2◦ 2◦ 2◦ 2◦ 1.5◦ Ein kleines Beispiel: Folgende Ausgaben liefere das Astronomieprogramm astro.exe: Venus bei 33.00◦ , Mars bei 127.00◦ und Jupiter bei 262.50◦ . Dann finden wir mindestens folgende Aspekte (nach Güte sortiert): Nr 1. 2. 1.3 Objekte HS(Venus/Mars)—Jupiter Venus—Mars Aspekt Opposition Quadrat Winkel 182.50◦ 94.00◦ Orbis 3.5◦ 4◦ Güte 29% 0% Die Aufgabe Das Hauptprogramm soll ein Datum in der Form “JJJJ MM TT hh.mm“ entgegennehmen und das Astronomieprogramm astro.exe mit diesem Datum (in Anführungszeichen) als Parameter starten und die notwendigen Ausgaben in irgendeiner Form zwischenspeichern (z.B. temporäre Datei). Biquintil/144◦ , Quinkunx/150◦ , etc.), hier aber nicht weiter beachtet werden. Auch werden in der Aufgabe nicht die Positionen der Objekte in Bezug auf die Tierkreiszeichen (Häuser) betrachtet (auch wieder abhängig von der jeweiligen Astrologierichtung). 3 hlsv-zv4-ew-fi0301 Aus den erhaltenen Daten soll dann eine Tabelle mit allen erkannten Aspekten erzeugt und ähnlich wie oben mit folgenden Feldern ausgegeben werden: Nr lfd. Nummer des Aspekts Objekt Name des Objekts (Mond, Sonne, Mars, HS(Venus/Mars), etc.) Aspekt Name des Aspektes (Konjunktion, Quadrant, etc.) Winkel tatsächlicher Winkel zwischen den Objekten Orbis Summe der beteiligten Orben (Orbis1+Orbis2) Güte (Orbis - tatsächliche Abweichung vom idealen Aspekt)/Orbis * 100 % Ziel ist es, möglichst alle vorhandenen Aspekte (unter Berücksichtigung des jeweiligen Orbis) zu einem vorgegebenen Datum (1800-2100) automatisch zu erkennen. Die Tabelle soll nach absteigender Güte sortiert werden. Aspekte, die aus zwei Halbsummen gebildet werden, sollen nicht berücksichtigt werden. 2 Durchführung Die Programmierung kann mit den folgenden Programmiersprachen durchgeführt werden: C, C++, Perl, Java. Das Programm/Skript muss unter NT4.0 lauffähig sein. 3 Tipps • Die Halbsumme von zwei Himmelskörpern H1 und H2 errechnet sich einfach durch HS(H1 , H2 ) = (H1 + H2 )/2. • Halbsummen von Halbsummen sind nicht möglich. Halbsummen können nur mit Himmelskörpern (Sonne, Mond, Planeten) gebildet werden. • Die Güte eines Aspektes liegt immer zwischen 0% und 100%: Wenn die tatsächliche Abweichung des Winkels vom idealen Aspekt bedeutet (bei einem Quadranten von 91.45 ist das 1.45) und Oges den gesamten Orbis (Orbis1+Orbis2) darstellt, so ist die Güte gegeben durch Güte = |Oges − | ∗ 100% Oges • Mit Sonne und Mond gibt es insgesamt 10 Himmelskörper. Zwischen je zwei Himmelskörpern gibt es jeweils eine Halbsumme (45 mögliche Halbsummen). Es sind also insgesamt Aspekte unter 55 Objekten zu suchen. Da jeweils 2 Objekte ein Aspekt festlegen, können maximal 1540 Aspekte vorhanden sein. hlsv-zv4-ew-fi0301 4 • Da sich alles auf einem 360◦ –Kreis abspielt könnte eine Modulo-Funktion nützlich sein. • Das Programm astro.exe zeigt keine Werte für Pluto an, wenn das Datum vor 1890 und nach 2100 liegt2 . 4 Bewertung Folgende Teilaufgaben sind zu lösen und werden bewertet: • Dokumentation • Starten eines externen Programms • Bearbeiten einer temporär erzeugten Datei • Algorithmus/Lösungsweg zum Erkennen der vorhandenen Aspekte • Codierungsstil • Erweiterbarkeit (andere Aspekte, anderer Orbis, Interpretationen, etc.) • Performanz 5 Abgabe Die lauffähigen Programme und der Quelltext sind mit einer maximal 5-seitigen Dokumentation abzugeben (Email, Dokumentation in HTML oder Winword-Format). Abgabetermin ist der 10.08.2001. Die vollständigen Ergebnisse können bei Herrn Zimmermann, Herrn Hesse oder Frau Spang abgegeben werden. 6 Zeitrahmen Der Zeitrahmen dieser Aufgabe ist mit etwa 30 Stunden angesetzt. 2 Pluto läßt sich nur mit beträchtlichem Aufwand genau berechnen. Pluto wurde erst 1930 entdeckt und ist möglicherweise ein früherer Mond von Neptun.