home *** CD-ROM | disk | FTP | other *** search
- {--------------------------------------------------------------------}
- { Testprogramm zum Modul ASTRODAT.PAS }
- { demonstriert den Einsatz der in ASTRODAT.PAS vorhandenen }
- { Funktionen und Prozeduren }
- {--------------------------------------------------------------------}
-
- PROGRAM Astro_Test;
-
- CONST
- (*$I ASTROCON.PAS *)
-
- TYPE
- (*$I ASTROTYP.PAS *)
-
- VAR
- (*$I ASTROVAR.PAS *)
- Ende : BOOLEAN;
-
- (*$I ASTRODAT.PAS *)
-
- (* ---------------------------------------------------------------- *)
-
- PROCEDURE Berechne_Ortszeit;
-
- VAR Referenz_Zeit, Akt_Zeit : Astro_Zeit;
- Referenz_Ort , Akt_Ort : Astro_Ort;
- Dez_Zeit_1, Dez_Zeit_2 : REAL;
-
-
- PROCEDURE Einlesen (VAR Ort: Astro_Ort);
-
- VAR Auswahl : CHAR;
- Name : Astro_String;
- Vorhanden: BOOLEAN;
-
- BEGIN
- Vorhanden := FALSE;
- REPEAT
- Write('N)ame oder L)aengengrad des Ortes ? ');
- ReadLn(Auswahl); WriteLn;
- CASE Auswahl OF
- 'n','N' : BEGIN
- Write('Name des Ortes : '); ReadLn(Name);
- Suche_Ort(Name, Ort, Vorhanden);
- IF NOT Vorhanden THEN
- WriteLn('Ort ',Name,' ist nicht tabelliert !');
- END;
- 'l','L' : BEGIN
- Write('Laengengrad eingeben : ');
- ReadLn(Ort.Laengengrad);
- Ort.Ortsname := '*****';
- Ort.Breitengrad := 0.0;
- Vorhanden := TRUE;
- END;
- END;
- UNTIL Vorhanden;
- END;
-
-
- BEGIN
- ClrScr; (* Bildschirm loeschen *)
- WriteLn('Berechnung der aktuellen Ortszeit');
- WriteLn('=================================');
- WriteLn;
- WriteLn('Die Zeit eines Referenzortes wird benoetigt.');
- WriteLn;
- WriteLn('Referenzort :'); Einlesen(Referenz_Ort);
- Write('Zeit eingeben (Stunden Minuten Sekunden) : ');
- WITH Referenz_Zeit DO
- ReadLn(Stunden, Minuten, Sekunden);
- Dez_Zeit_1 := ZeitToDez(Referenz_Zeit);
- WriteLn;
- Write('Dies entspricht', Sternzeit(Dez_Zeit_1):7:3);
- WriteLn(' mittlerer Sternzeit');
- WriteLn;
- WriteLn('Ort, fuer den die aktuelle Zeit berechnet werden soll:');
- Einlesen(Akt_Ort);
- Dez_Zeit_2 := Ortszeit(Akt_Ort, Referenz_Ort, Dez_Zeit_1);
- Write('Die augenblickliche Ortszeit ist ');
- DezToZeit(Dez_Zeit_2, Akt_Zeit);
- WITH Akt_Zeit DO
- WriteLn(Stunden:2, ':', Minuten:2, ':', Sekunden:2);
- ReadLn;
- END;
-
- (* ---------------------------------------------------------------- *)
-
- PROCEDURE Winkel_Rechnen;
-
- VAR DW: REAL;
- W : Astro_Winkel;
-
- BEGIN
- ClrScr;
- WriteLn(' Winkelumrechnungen '); WriteLn(' ================== ');
- WriteLn;
- Write('Grad Minuten Sekunden: '); ReadLn(W.Grad, W.Min, W.Sek);
- WriteLn; WriteLn;
- DW := WinkelToDez(W);
- WriteLn('Dies entspricht : ', DW:7:3, ' Grad');
- WriteLn(' oder : ', WinkelToZeit(DW):7:3, ' Stunden');
- WriteLn(' oder : ', Bogenmass(DW):7:3, ' Radiant');
- ReadLn;
- END;
-
- (* ---------------------------------------------------------------- *)
-
- PROCEDURE Greg_in_Jul;
-
- VAR Dat : Astro_Datum;
-
- BEGIN
- ClrScr;
- WriteLn(' Gregorianisches Datum in Julianische Zaehlung ');
- WriteLn(' ============================================= ');
- WriteLn; Write(' Bitte das Datum eingeben (Tag Monat Jahr):');
- ReadLn(Dat.Tag, Dat.Monat, Dat.Jahr); WriteLn;
- WriteLn(' Das Julianische Datum ist : ', Jul_Datum(Dat):7:0);
- ReadLn;
- END;
-
- (* ---------------------------------------------------------------- *)
-
- PROCEDURE Jul_in_Greg;
-
- VAR JDat : REAL;
- GDat : Astro_Datum;
-
- BEGIN
- ClrScr;
- WriteLn(' Julianische Zaehlung in Gregorianisches Datum ');
- WriteLn(' ============================================= ');
- WriteLn; Write(' Bitte das Julianische Datum eingeben : ');
- ReadLn(JDat); WriteLn;
- Greg_Datum (JDat, GDat);
- Write(' Das Gregorianische Datum ist : ');
- WriteLn(GDat.Tag, '.', GDat.Monat, '.', GDat.Jahr);
- ReadLn;
- END;
-
- (* ---------------------------------------------------------------- *)
-
- PROCEDURE Tagesdiff;
-
- VAR Dat_1, Dat_2 : Astro_Datum;
- Diff : REAL;
-
- BEGIN
- ClrScr;
- WriteLn(' Berechnung der Tagesdifferenz ');
- WriteLn(' ============================= ');
- Write(' Bitte das 1. Datum eingeben (Tag Monat Jahr):');
- ReadLn(Dat_1.Tag, Dat_1.Monat, Dat_1.Jahr);
- Write(' Bitte das 2. Datum eingeben (Tag Monat Jahr):');
- ReadLn(Dat_2.Tag, Dat_2.Monat, Dat_2.Jahr);
- WriteLn;
- Diff := Tagesdifferenz(Dat_1, Dat_2);
- WriteLn(' Die Differenz ist : ', Trunc(Diff), ' Tage');
- ReadLn;
- END;
-
- (* ---------------------------------------------------------------- *)
-
- PROCEDURE Tag;
-
- VAR Dat : Astro_Datum;
-
- BEGIN
- ClrScr;
- WriteLn(' Wochentagsberechnung '); WriteLn(' ==================== ');
- Write(' Bitte das Datum eingeben (Tag Monat Jahr):');
- ReadLn(Dat.Tag, Dat.Monat, Dat.Jahr);
- WriteLn; Write(' Dieser Tag ist ein ',Wochentag(Dat));
- ReadLn;
- END;
-
- (* ---------------------------------------------------------------- *)
-
- PROCEDURE Auswahl;
-
- VAR Wahl : INTEGER;
- Spc : STRING[10];
-
- BEGIN
- ClrScr;
- Spc := ' ' ; WriteLn; WriteLn;
- WriteLn(Spc, '1 ... Ortszeit berechnen'); WriteLn;
- WriteLn(Spc, '2 ... Winkelumrechnungen'); WriteLn;
- WriteLn(Spc, '3 ... Gregorianisches Datum in Julianische Zaehlung');
- WriteLn;
- WriteLn(Spc, '4 ... Julianische Zaehlung in Gregorianisches Datum');
- WriteLn;
- WriteLn(Spc, '5 ... Tage zwischen Daten'); WriteLn;
- WriteLn(Spc, '6 ... Wochentagsberechnug'); WriteLn;
- WriteLn;
- WriteLn(Spc, '0 ... Ende');
- WriteLn;
- WriteLn;
- Write(Spc, 'Auswahl : '); Read(Wahl);
- CASE Wahl OF
- 0 : Ende := TRUE;
- 1 : Berechne_Ortszeit;
- 2 : Winkel_Rechnen;
- 3 : Greg_in_Jul;
- 4 : Jul_in_Greg;
- 5 : Tagesdiff;
- 6 : Tag;
- END;
- END;
-
- (* ---------------------------------------------------------------- *)
-
- BEGIN
- Ende := FALSE;
- Lese_Astro_File;
- REPEAT Auswahl UNTIL Ende;
- END.