Данная программа рассчитывает фазу Луны, соответствующую введённой дате. Расчёт ведётся по среднему значению лунного периода - 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 После данного рисунка - гаджет "Вид Луны в данный момент". |