Abt. Mondsüchtig
=============
Der Mond übt auf manche Menschen scheinbar körperliche Wirkungen aus: Männer verblöden dem Vernehmen nach in Vollmondnächten, Frauen synchronisiert der Mond angeblich den Zyklus, Schlafwandler wandeln vermehrt und Amateurfunker versuchen, den Mond als Funkreflektor zu verwenden (Wenn sie nicht gerade mit Verblöden beschäftigt sind).
Wie auch immer, es wäre sicher gut zu wissen, ob - und falls ja, wo genau - der Mond am Himmel steht. Das leistet angeblich der nachstehende Spaghetticode, den nach Profan-11 zu transkribieren ich in einer der letzten Vollmondnächte als total gute Idee empfand. Ich hätte natürlich auch aus dem Fenster schauen können.
Gruss
Spoiler anzeigen
Code
Windowtitle upper$(" K o o r d i n a t e n d e s E r d m o n d e s")
'Q: Funkamateur 5/1984 (BASIC); Demotranskription nach XProfan-11 in 2017-10
'ohne jedwede Gewähr; ausschließlich als Programmiersprachentest gedacht!
Windowstyle 24
Declare A9!,B!,B9!,BR!,C9!,D!,E!,F!,H!,JA!,JD!,K!,L!
Declare M!,M2!,MK!,MU!,P!,SD!,SE!,T!,T3!,T9!,TA!,TG!
Declare V!,V1!,V2!,V3!,V4!,V5!,X!,Y$,Z1!,Z2!,Z3!,Z4!
CLS:font 2
print "\n Die Eingabe der geogr. Länge und Breite ihres Standortes"
print "\n ist im Programmtext bei Label z360 und z650 möglich! Daten:\n"
print " z.B. von http://www.nobochamp.de/hauptstaedte.html (Welt)\n"
print " oder http://www.fwiegleb.de/geodat.htm (D) ,\n"
print " oder http://www.innweb.at/map/ (AT), bzw. für die Schweiz (CH):\n"
print " https://rueegger.me/2008/06/15/schweizer-postleitzahlen-mit-koordinaten.html\n"
PRINT " =========\n"
TA!=0:MK!=0:JA!=0:SD!=0:MU!=0:SE!=0:X!=0
PRINT " Veränderung der Rechenschrittweite: Siehe Label z715 !\n\n =========\n"
G190:
PRINT " MÖCHTEN SIE DAS PROGRAMM ANPASSEN [j/n]? ";:INPUT Y$
case Y$="j":END
CLS
PRINT "\n Beispiel zur Eingabe eines gewünschten Datums:\n 20.AUG.1984:\n"
PRINT " 20 <enter>\n 8 <enter>\n 1984 <enter>"
G225:
PRINT "\n BERECHNUNG FÜR WELCHES DATUM ?\n"
PRINT " Tag:",:INPUT TA!
case TA!>31:goto "G225"
tg!=abs(ta!)
if TA!<1
ta!=val(mid$(date$(3),7,2))::tg!=ta!
MK!=val(mid$(date$(3),5,2))
ja!=val(mid$(date$(3),1,4))
goto "hopp"
endif
Print " Monat:",:INPUT MK!
case (MK!=0) OR (MK!>12):goto "G225"
print " Jahr:(4stellig!)",:INPUT JA!
hopp:
case MK!=1:goto "G270"
case MK!=2:goto "G265"
TA!=TA!+30*(MK!-1)+INT(0.6*(MK!-1)-0.6)-1
GOTO "G270"
G265:
TA!=TA!+31
G270:
JD!=TA!+365*(JA!-1983)+5334
JD!=INT(JD!+(JA!-1980)/4)
case MK!>2:goto "G290"
JD!=JD!-l
G290:
PRINT "\n ===========":PRINT
PRINT " EINGABE DER GEWÜNSCHTEN (UTC+1)-UHRZEIT: \n"
PRINT " STUNDE:",:INPUT SD!
PRINT " MINUTEN:",:INPUT MU!
PRINT " SEKUNDEN:",:INPUT SE!
case SD!>24:GOTO "G290"
case MU!>59:GOTO "G290"
case SE!>59:GOTO "G290"
case (SD!=23) OR (SD!=24):MU!=0
case (SD!=23) OR (SD!=24):SE!=0
CLS:PRINT
JD!=JD!+0.5+(SD!+MU!/60+SE!/3600)/24
REM ==== BERECHNUNG EKLIPTIKALE LAENGE
'Berlin >>> +52.5235 / +13.4115
'Wien >>> +48.2092 / +16.3728
Z360:
BR!=48.2092 :REM *** GEOGR. BREITE in Grad dezimal***
P!=Pi()
V4!=SIN(BR!*Pi()/180)
V5!=COS(BR!*Pi()/180)
V3!=23.45*P!/180
G385:
T!=(JD!+24980.001)/365.25
L!=270.434+4812.678831*T!
M!=296.105+4771.988491*T!
F!=L!-259.183+19.3414201*T!
M2!=358.476+359.9904975*T!
D!=L!-279.697-360.0076893*T!
E!=1 - val("0.2495E-4")*T!
L!=L!+6.28875*SIN(M!/180*P!)+0.21362*SIN(M!/90*P!)
L!=L!+1.27402*SIN((2*D!-M!)/180*P!)
L!=L!+0.65831*SIN(D!/90*P!)
L!=L!-0.1856*E!*SIN(M2!/180*P!)
L!=L!-0.11434*SIN(F!/90*P!)
L!=L!-0.05879*SIN((M!-D!)/90*P!)
L!=L!+0.05721*E!*SIN((2*D!-M2!-M!)/180*P!)
L!=L!+0.05332*SIN((2*D!+M!)/180*P!)
L!=L!+0.04587*E!*SIN((2*D!-M2!)/180*P!)
L!=L!+0.04101*E!*SIN((M!-M2!)/180*P!)
L!=L!-0.03476*SIN(D!/180*P!)
L!=L!-0.03046*E!*SIN((M2!+M!)/180*P!)
L!=L!-360*INT(L!/360)
REM ==== BERECHNG.EKLIPTIKALE BREITE
B!=0
B!=B!+5.12819*SIN(F!/180*P!)
B!=B!+0.28061*SIN((F!+M!)/180*P!)
B!=B!+0.27769*SIN((M!-F!)/180*P!)
B!=B!+0.17324*SIN((2*D!-F!)/180*P!)
B!=B!+0.05541*SIN((2*D!+F!-M!)/180*P!)
B!=B!+0.04627*SIN((2*D!-F!-M!)/180*P!)
B!=B!+0.03257*SIN((2*D!+F!)/180*P!)
V!=ArcTan(SIN(L!*P!/180)/TAN(B!*P!/180))
V1!=ArcTan(SIN(V!-V3!)/SIN(V!)*TAN(L!*P!/180))
case L!>90:GOTO "G575"
case V!<0:GOTO "G605"
case (V!-V3!)<0:GOTO "G600"
GOTO "G605"
G575:
case L!>270:GOTO "G590"
V1!=V1!+P!
GOTO "G605"
G590:
case V!<0:GOTO "G600"
case (V!-V3!)<0:GOTO "G605"
G600:
V1!=V1!+2*P!
G605:
V2!=ArcTan(SIN(V1!)/TAN(V!-V3!))
REM == STUNDENWINKEL DES MONDES ==
T9!=(JD!-5344.5)/365.2422*366.2422+.30263773149
REM == OESTL.LAENGE (L) DES STANDORTES, GRAD DEZIMAL ==
'Berlin +52.5235 / +13.4115 <<<
'Wien +48.2092 / +16.3728 <<<
Z650:
L!=16.3728
T9!=T9!+L!/360-(1/24)
T9!=(T9!-INT(T9!))*2*P!
T3!=T9!-V1!
case T3!>0:GOTO "G680"
T3!=T3!+2*P!
G680:
z1!=V4!*SIN(V2!)+V5!*COS(V2!)*COS(T3!)
A9!=(JD!-0.5-INT(JD!-0.5))*24
B9!=(A9!-INT(A9!))*60
A9!=INT(A9!+0.5)
B9!=INT(B9!+0.5):case B9!=60:B9!=0
C9!=0
case A9!=24:X!=X!+1
Z715:
REM ==== SCHRITTWEITE VORZUGSWEISE 1 STD.: JD+(1/24 TAG)
JD!=JD!+(1/24)
case z1!<0:GOSUB "S845"
case z1!<0:Goto "G840"
Z2!=ArcTan(SQRT(1-z1!*z1!)/z1!)
Z3!=(-1*V5!*SIN(V2!)+V4!*COS(V2!)*COS(T3!))/SIN(Z2!)
Z4!=ArcTan(SQRT(1-Z3!*Z3!)/Z3!)+P!
case Z3!>0:goto "G760"
Z4!=Z4!+P!
G760:
case T3!<=P!:goto "G770"
Z4!=2*P!-Z4!
G770:
CLS:PRINT
H!=90-Z2!*180/P! :REM DEKLINATION
H!=INT(100*H!+0.5)/100
K!=Z4!/P!*180-360*INT(Z4!/P!/2) :REM AZIMUT
K!=INT(100*K!+.5)/100
PRINT " AUSGABE:"
PRINT " ========"
PRINT:PRINT
PRINT " Ausgangsdatum ";format$("#0",tg!);".";format$("00",MK!);".";format$("##00",ja!);"\n"
IF X!>=1:PRINT " Folgetag! \n\n":endif
PRINT " ZEIT IN MEZ (UTC+1):",format$("00",A9!);":";format$("00",B9!);",";format$("00",C9!)
PRINT
PRINT " DEKLINATION : ";format$("%g",H!),"GRAD ÜBER FLACHLAND-HORIZONT"
PRINT
PRINT " AZIMUT : ";format$("%g",K!),"GRAD bzw. ";
PRINT format$("%g",int(100*(K!-180))/100),"GRAD GEGENÜBER SÜD: (-)= Östlich"
sound 700,30:
waitinput
CLS
GOTO "G385"
G840:
PRINT " DER MOND-MITTELPUNKT STEHT UNTER DEM HORIZONT DES STANDORTES!\n"
PRINT
sound 70,30:waitinput 1000
GOTO "G385"
S845:
cls
PRINT "\n\n Ausgangsdatum ";format$("#0",tg!);".";format$("00",MK!);".";format$("##00",ja!);"\n"
PRINT "\n ZEIT (UTC+1):",format$("00",A9!);":";format$("00",B9!);",";format$("00",C9!)
PRINT
RETURN
Alles anzeigen