Данная программа рассчитывает фазу Луны, соответствующую введённой дате. Расчёт ведётся по среднему значению лунного периода - 29.53 суток. Фактическая продолжительность лунного месяца может отличаться  более чем на 12 часов.А реальное значение момента полнолуния(или другой фазы)может отличаться от рассчитанного по среднему более чем на сутки. Однако вид Луны за это время изменяется мало.Программа показывает  также вид Луны на введённую дату. Надписи "полнолуние " и "новолуние" появляются с учётом возможного отклонения от среднего на + или - сутки.За начало отсчёта берётся новолуние 2 марта 1900 года.Попутно находится день недели исследуемой даты.Все даты- по новому стилю.

 

 CLS

 G = 1900

 M = 3

 D = 2

 p = 0

 GOTO 10

5 p = N

 INPUT "  ВВОД  ДАТЫ,ГОД="; G

 G0 = G

 INPUT "  МЕСЯЦ="; M

 M0 = M

 INPUT "  ЧИСЛО="; D

10 M = M - 2

 IF M > 0 THEN 50

 A = 1

 GOTO 60

50 A = 0

60 G = G - A

 M = M + 12 * A

 N = INT((G - 1900) * 365.25) + INT(30.59 * M) + D + 1

 S = N / 7

 T = (S - INT(S)) * 7

IF p = 0 THEN 5

 IF T = 0 THEN PRINT "  ВОСКРЕСЕНИЕ"

 T = INT(T + .1)

 Td = T

 GOSUB 100

 IF T = 6 THEN PRINT "  СУББОТА"

 X = ABS(N - p)

 T0 = 13.933

 INPUT " ВРЕМЯ В ЧАСАХ  ДАТЫ"; T1

 vr = 24 * (X - 1) + (24 - T0) + T1

vr = vr / 24 / 29.53

 vr = (vr - INT(vr)) * 29.53: PRINT "ВОЗРАСТ ЛУНЫ:"; INT(vr * 100) / 100

 IF vr < 15.77 AND vr > 13.77 THEN PRINT "  ПОЛНОЛУНИЕ": F$ = "Полнолуние"

 IF vr > 28.53 OR vr < 1 THEN PRINT "     НОВОЛУНИЕ": F$ = "Новолуние"

 LOCATE 20, 30

 INPUT "НАЖАТЬ: ENTER", A$

209 R = 100

 T = vr

 A = 320

 SCREEN 12

 COLOR 1

 PRINT D; "-"; M0; "-"; G0; " "; T1; "час."

 GOSUB 100

 PRINT "  возраст Луны:"; INT(vr * 100) / 100

 PRINT "  "; F$

 FOR I = 1 TO 100

 X = RND(1) * 640

 Y = RND(1) * 480

 C = RND(1) * 15

 PSET (X, Y), C

 NEXT I

IF T > 14.765 THEN GOTO 220

T = 2 * 3.1416 * T / 29.53

210 FOR F = 4.7124 TO 7.85 STEP .01

X = R * COS(F) * 1.1

Y = R * SIN(F)

V = X * COS(T)

LINE (A + X, 200 + Y)-(A + V, 200 + Y), 2

LINE (A + V, 200 + Y)-(A - X, 200 + Y), 0

NEXT F

GOTO 230

220 T = 2 * 3.1416 * T / 29.53

 FOR F = 1.57 TO 4.71 STEP .01

X = R * COS(F) * 1.1

Y = R * SIN(F)

V = X * COS(T)

LINE (A + X, 200 + Y)-(A + V, 200 + Y), 2

LINE (A + V, 200 + Y)-(A - X, 200 + Y), 0

NEXT F

230 SLEEP

END

100 IF Td = 1 THEN PRINT "  ПОНЕДЕЛЬНИК"

 IF Td = 2 THEN PRINT "  ВТОРНИК"

 IF Td = 3 THEN PRINT "  СРЕДА"

 IF Td = 4 THEN PRINT "  ЧЕТВЕРГ"

 IF Td = 5 THEN PRINT "  ПЯТНИЦА"

  RETURN

 После данного рисунка - гаджет "Вид Луны в данный момент".

 
Конструктор сайтов - uCoz