ZX-Ревю 1995 №3 1994 г.

Спектрум в школе - поиск затмения, календарь солнца и луны.


С работами нашего читателя из Самары Юрия Пензина читатели знакомы с прошлого года. В ZX-PB-ВЮ-94, N3 были приведены прцрлан-ные им программы по астрономии, в частности, программа для расчета фаз луны. Юрий прислал нам новую программу, которая демонстрирует широчайшие возможности компьютера ZX-Spectrum в наиболее сложной области астрономических расчетов - предвычислении лунных затмений. Программа содержит разделы:

ПОИСК ЗАТМЕНИЯ КАЛЕНДАРЬ СОЛНЦА И ЛУНЫ КАЛЕНДАРЬ СОЛНЦА КАЛЕНДАРЬ ЛУНЫ

Программа составлена с использованием языка программирования БЕТА-БЕЙСИК v 1.8. (его кодовый блок загружается и инициализируется в строках 2 и 10).

1'CLEAR 55032: RANDOMIZE USR 15619: REM : LOAD »chr"C0DE 5503 3

2 RANDOMIZE USR 15619: REM : LOAD "betbas1с"CODE 55801 10 RANDOMIZE USR 58419 20 PROC INTRO 30 PROC CONST 40 PROC HEADER 50 PROC OPTION 1000 DEF PROC OPTION 1010 CLS : BORDER 1: PAPER 1: PL ОТ 10,50: DRAW 210,0: DRAW 0,82:

DRAW -210,0: DRAW 0,-82 1020 PRINT AT 3,3; INK 2; FLASH 1;"** ПРОГРАММНОЕ МЕНЮ **" 1030 RESTORE 1120: FOR N»1 TO 5 1040 READ 0$: PRINT AT 4+2*N,3; INK 4;0$: NEXT N

1050 PRINT #0;AT 0,1; INK 2;"ПО ДТВЕРЖДЕНИЕ ВЫБОРА - "; INK 3;"< ENTER>"

1060 RESTORE 1120: FOR N=1 TO 5 1070 READ 0$: PRINT AT 4+2*N,2; INK 3;M>";0$;"<" 1080 PAUSE 0: IF INKEY$=CHR$ 13 Я

THEN GO TO ON N;1140,1150,1160,1 |

170/1180 |

1090 IF INKEY$-"" THEN GO TO 108 I

О В

1100 PRINT AT 4+2*N,2; INK 4; OV ER 1;">"; OVER 0;0$; OVER 1;"<" 1110 BEEP .1,14: NEXT N: GO TO 1 060

1120 DATA "ПОИСК ЗАТМЕНИЯ","КАЛЕ НДАРЬ СОЛНЦА И ЛУНЫ" ИЗО DATA "КАЛЕНДАРЬ СОЛНЦА" , "КА ЛЕНДАРЬ ЛУНЫ","ИНСТРУКЦИЯ" 1140 PROC ECLIP: PROC OPTION 1150 PROC SUN: PROC TIMESUN: BE EP .3,11: PROC FAZ: PROC MEMFAZ: PROC COORDM: PROC MCONV: PROC P RCM: PROC TIMEM: PROC PRFAZ: PRO С OPTION

1160 PROC SUN: PROC TIMESUN: PRO С SUNDAWN: BEEP .5,7: PRINT #0; INK 3;K$: PAUSE 0: PROC OPTION 1170 PROC DATA: PROC FAZ: PROC M EMFAZ: PROC COORDM: PROC MCONV: PROC PRCM: PROC TIMEM: PROC PRFA Z: PROC OPTION 1180 PROC INSTR 1190 END PROC

1200 DEF PROC CONST: REM ОБЪЯВЛЕ

НИЕ КОНСТАНТ

1210 LET RD-10

1220 LET GR-PI/180

1230 LET LATIT-56

1240 LET YEAR-365.2422

1250 LET ESUN-0.016718

1260 LET EMOONeO.0549

1270 LET LONG80-278.83354

1280 LET LONGP-282.596403

1290 LET LATSUN-0

1300 LET DLSUN-0.985647

1310 LET ECLIP-23.441884

1320 LET IMOON-5.145396

1330 LET MLONG80-64.975464

1340 LET MLONGP-349.383063

1350 LET MUZLONG-151.950429

1360 LET TETM*0.5181

1370 LET PIMOON-0.9507

1380 LET DELH-2

1390 LET K$a"НАЖМИТЕ ЛЮБУЮ КЛАВИ

ШУ": END PROC

1400 DEF PROC INTRO

1410 BORDER 1: PAPER 1: INK 6: С

LS

1420 DPOKE 23675,65112

1430 DPOKE 23606,54777

1440 END PROC

1450 DEF PROC HEADER

1460 PRINT AT 5,11; INK 7;"КАЛЕН

ДАРЬ";AT 6,9; INK 4;"СОЛНЦА И ЛУ

НЫИ;АТ 7,13; INK 2;"* * *" 1470 PRINT AT 10,4; INK 7;"ПОИСК

И ПРЕДВЫЧИСЛЕНИЕ";АТ 11,9; INK 2; FLASH 1;"ЗАТМЕНИЙ ЛУНЫ" 1480 PRINT AT 15,1; INK 3;"*"; I NK 4;" EDUCATIONAL ASTRO-SOFTWAR E "; INK 3;"*"; AT 16,8;"(C) SAM ARA 1994"

1490 PRINT #0;AT 0,5; INK 2;K$:

PAUSE 0

1500 END PROC

1510 DBF PROC DATA: REM КОЛ-ВО С УТОК И ЧАСОВ С О.,0.1980 1520 LET CQ»0: REM ДЛЯ ПРОЦЕДУРЫ Y1Y2

1530 CLS : DIM D(31) 1540 LET K«31: LET M=12: LET G«1 979: GO SUB 1700: LET D(1)«D 1550 INPUT "ГОД ?",G: LET MEMG-G 1560 INPUT "МЕСЯЦ(1-12) ?",M: LET MEMM=M

1570 INPUT "ЧИСЛО ?",K

1580 LET ED-31: LET RE«G-4*INT (

G/4)

1590 IF M«2 THEN LET ED«28 1600 IF RE=0 AND M«2 THEN LET E D»29

1610 IF M=4 OR M»6 OR M=9 OR M=1 1 THEN LET ED-30 1620 IF K>ED THEN GO TO 1570 1630 INPUT "ЧАС(ПО ГРИНВИЧУ) ? " ; LINE H$

1640 IF LEN H$>4 THEN GO TO 163 0

1650 LET H=VAL H$

1660 PRINT AT 0,21; INK 6;K;".";

M;".";G

1670 PRINT AT 1,21;H;"ЧАС.GMT" 1680 GO SUB 1700

1690 LET DATA«D-D(1): GO TO 1730 1700 IF M>*3 THEN GO TO 1720 1710 LET M-M+12: LET G»G-1 1720 LET M-M+l: LET C-INT (M*30. 6): LET U=INT (G*365.25): LET D= C+U+K-114: RETURN 1730 LET C=INT (D/7): LET DAY=1+ D-C*7

1740 DATA "ВОСКРЕСЕНЬЕ"

1750 DATA "ПОНЕДЕЛЬНИК"

1760 DATA "ВТОРНИК" /'СРЕДА"

1770 DATA "ЧЕТВЕРГ","ПЯТНИЦА"

1780 DATA "СУББОТА"

1790 RESTORE 1740

1800 LET NK»7: IF DAY=1 OR DAY»7

THEN LET NK~2 1810 FOR TO DAY: READ D$: NE

СПЕКТРУМ

XT d: PRINT AT 2,21;"

";: PRINT AT 2,21; INK NK;D$

1820 INPUT AT 0,4; INK 3;"НОВАЯ

ДАТА ?(Y/N)"; LINE A$

1830 IF A$»"y" OR A$«"Y" THEN G

О TO 1550

1840 END PROC

1850 DEF PROC FAZ: REM РАСЧЕТ ФА H

зы И

I860 LET FF»DATA+(Н+0.016666)/24 | : LET FN»360*FF/YEAR: LET ANGLE» H FN: PROC ANGLE: LET FN"ANGLE 1 1870 LET FM-FN+LONG8O-LONGP: LET 1 ANGLE=FM: PROC ANGLE: LET FM-AN Й GLE H

1880 LET SFM-SIN (FM*GR) 1890 LET FE=360*ESUN* SFM/PI 1900 LET F3-FN+FE+LONG80: LET AN GLE»FJ: PROC ANGLE: LET Fa-ANGLE 1910 LET FL»13.176396*FF+MLONG80 g : LET ANGLE-FL: PROC ANGLE: LET R FL=ANGLE

1920 LET FK»FL-0.111404*FF-MLONG P: LET ANGLE-FK: PROC ANGLE: LET FK»ANGLE

1930 LET FQ>MUZLONG-0.0529539*FF : LET ANGLE»FQ: PROC ANGLE: LET FQsANGLE

1940 LET FW»1.2739*SIN ((2*(FL-F 3)-FK)*GR): LET FI»0.1858*SFM: L ET FS»0.37*SFM

1950 LET FV»FK+FW-FI-FS: LET FA«

6.2886*SIN (FV*GR): LET FT-FL+FW

+FA-FI+0.214*SIN (2*FK*GR)

1960 LET FY«FT+0.6583*SIN ((2*(F

T-FJ)*GR))

1970 END PROC

1980 DEF PROC PRFAZ

1990 LET FDSMFY-MF3: LET ANGLE»F

D: PROC ANGLE: LET FD-ANGLE

2000 LET X-FD: PROC ROUND: LET F

D=X

2010 PRINT AT 18,0; INK 4;"B03PA CT: ";FD;" ГРАД." 2020 IF FD>~0 AND FD<90 THEN PR INT ; FLASH 1; INK 2;"НОВОЛУНИЕ" 2030'IF FD>=90 AND FD<180 THEN 8 PRINT ; FLASH 1; INK 2;"ПЕРВАЯ 4 g ЕТВЕРТЬ" и

2040 IF FD>»180 AND FD<270 THEN И PRINT ; FLASH 1; INK 2;"П0ЛН0ЛУ И НИЕ"

2050 IF FD>S270 AND FD<360 THEN

PRINT ; FLASH 1; INK 2;"П0СЛЕДН ЯЯ ЧЕТВЕРТЬ"

2060 LET FAZ»(1-COS (FD*GR))/2:

ШКОЛЕ

2070 LET X-FAZ: PROC ROUND: LET FAZ=X

2080 PRINT ; INK 4;"ФАЗА: ";FAZ:

BEEP .3,11 2090 PRINT INK 3;"КОМПЬЮТЕР РИС УЕТ..."

2100 PROC GRAFAZ 2110 BEEP .5,7

2120 PRINT AT 21,0; INK 3;K$: PA USE 0

2130 END PROC

2140 DEF PROC GRAFAZ: REM ГРАФИК А ФАЗ

2150 LET DIAMETR=40

2160 LET CVET«6: IF FAZ<=.03 THE

N LET CVET«0

2170 IF ANGLE>-345 AND ANGLE<»36 0 THEN LET CVET-0 2180 IF ANGLE>»0 AND ANGLE<»15 T HEN LET CVET"0

2190 IF FD>=0 AND FD<=180 THEN LET ZNAK=-1

2200 IF FD>180 AND FD<«360 THEN

LET ZNAK=1 2210 LET GF=ZNAK*(2*FAZ-1)*DIAME TR

2220 PLOT INK CVET;215,95: DRAW

INK CVET;0,-DIAMETR*2,ZNAK*PI 2230 REM ГРАФИКА ТЕРМИНАТОРА(ЭЛЛ ИПС)

2240 FOR Т»0 ТО 90

2250 LET GX=COSE(T*GR): LET GY=S

INE(T*GR)

2260 LET GXL=GF*GY+215: LET GYL»

DI AMETR*GX+9 5-DIAMETR

2270 PLOT INK CVET;GXL,GYL

2280 PLOT INK CVET;GXL,-GX*DIAM

ETR+95-DIAMETR

2290 NEXT T

2300 IF FD>=0 AND FD<180 THEN L ET XCV*GXL+1

2310 IF FD>e180 AND FD<360 THEN

LET XCV-GXL-1 2320 IF FAZ<ss0.03 THEN GO TO 23 40

2330 FILL INK CVET;XCV,55 2340 END PROC

2350 DEF PROC ANGLE: REM ПЕРЕВОД

УГЛА В ДИАПАЗОН 0-360 ГРАД. 2360 IF ANGLE>»0 AND ANGLE<*360 THEN GO TO 2380 2370 LET ANGLEsANGLE-SGN ANGLE*3 60: GO TO 2360 2380 END PROC

2390 DEF PROC ROUND: REM ОКРУГЛЕ НИЕ РЕЗУЛЬТАТА С ЗАДАННОЙ ТОЧНОС

ТЬЮ

2400 LET Y-SGN X: LET Z-ABS X*RD ♦RD+0.5

2410 LET XsINT Z/(RD*RD)*Y 2420 END PROC

2430 DEF PROC SUN: REM РАСЧЕТ КО ОРДИНАТ СОЛНЦА 2440 PROC DATA

2450 LET CSN»360*DATA/YEAR: LET ANGLE=CSN: PROC ANGLE: LET CSN=A NGLE

2460 LET CSMsCSN+LONG80-LONGP: L ET ANGLE-CSM: PROC ANGLE: LET CS MSANGLE

2470 LET CSE«360*ESUN*SIN (CSM*G R)/PI

2480 LET LOSUNsCSN+CSJ3+LONG80: L ET ANGLE-LOSUN: PROC ANGLE: LET

LOSUN=ANGLE 2490 PRINT AT 3,1; INK 3;"* СОЛН ЦЕ *"

2500 PROC ECLECV

2510 LET CONV-ALFA: PROC CONV

2520 PRINT • INK 4;"АЛЬФА :";D1;

"ЧАС."; USING "00";D2;"МИН."; US

ING "00";D3;"СЕК."

2530 LET DELTAMEM-DELTA

2540 LET CONVsABS DELTA: PROC CO

NV

2550 PRINT INK 4;"ДЕЛЬТА: ";SGN DELTA*D1;"ГРАД."; USING "00";D2

. H I H . Q3 .Ml Ml

2560 END PROC

2570 DEF PROC TIMESUN

2580 LET F=ALFA: LET TSDELTA

2590 LET LOSUNBLOSUN+DLSUN

2600 PROC ECLECV

2610 LET X=T: LET Y=F

2620 PROC GSTGMT

2630 LET STIR®A: LET ST1S=K

2640 LET X=DELTA: LET Y=ALFA

2650 PROC GSTGMT

2660 LET ST2R-A: LET ST2S»K

2670 LET X=ST1R: LET Y=ST2R

2680 PROC MSTAR

2690 LET TR=Z

2700 LET X=ST1S: LET Y»ST2S 2710 FROC MSTAR 2720 LET TS=Z

2730 LET B=COS ((T+DELTA)/2*GR) 2740 LET F=(ACS (SIN (LATIT/B*GR )))/GR

2750 LET Ys(ASN (SIN (0.835608*G R)/SIN (F*GR)))/GR 2760 LET T»240*Y/B: LET T=T/3600 2770 LET TR=TR-T: LET TS-TS+T 2780 LET U=TR: PROC GSGM 2790 LET GMTR=Y 2800 LET U=TS: PROC GSGN 2810 LET GMTS-Y

СПЕКТРУМ В ШКОЛЕ

2820 LET C0NV1»GMTR: PROC CONVl

2830 PRINT "ВОСХОД: ";D1;"4AC."

; USING "00";D2;"МИН."

2840 LET CONVl=GMTS: PROC CONVl

2850 PRINT "ЗАХОД :";D1;"ЧАС.";

USING "00";D2;"МИН."

2860 LET LD-GMTS-GMTR: LET CONVl

=LD

2870 PROC CONVl

2880 PRINT INK 4;"ДОЛГОТА ДНЯ:"

;D1;"ЧАС."; USING "00";D2;"МИН."

2890 IF DELTA>-0.245 AND DELTA<0

.245 THEN PRINT INK 2; FLASH 1

;"РАВНОДЕНСТВИЕ"

2900 END PROC

2910 DEF PROC COORDM

2920 LET MC=FQ-0.16*SIN (FM*GR)

2930 LET WR=FY-MC

2940 LET SWR»SIN (WR*GR)

2950 LET №IMOON*GR

2960 LET MD-SWR*COS IM

2970 LET CWRsC0S (WR*GR)

2980 LET Y»MD: LET X«CWR: PROC A

TN

2990 LET MG=Z: LET LOMOON=MG+MC 3000 LET LATMOON-(ASN (SWR*SIN I M))/GR

3010 END PROC

3020 DEF PROC MCONV: REM ПЕРЕВОД КООРДИНАТ(& 2 7)

3030 LET UM»LOMOON*GR: LET HM»LA TMOON*GR

3040 LET MB-SIN UM

3050 LET EMSECLIP*GR

3060 LET ME=C0S EM

3076 LET MF-SIN EM

3080 LET MI=SIN HM

3090 LET M0=MI*ME+COS HM*MF*MB

3100 LET MDELs(ASN M3)/GR

3110 LET MY»MB*ME-TAN HM*MF

3120 LET MX=COS UM

3130 LET Y=MY: LET X=MX

3140 PROC ATN

3150 LET MP-Z: LET MALF=MP/15 3160 END PROC

3170 DEF PROC PRCM: REM ПЕЧАТЬ К ООРДИНАТ ЛУНЫ

3180 PRINT INK 6;'" * ЛУНА *" 3190 LET CONV=MALF: PROC CONV 3200 PRINT ' INK 4;"АЛЬФА:";D1;" ЧАС."; USING "00";D2;"МИН."; USI NG "00";D3;"C."

СПЕКТР УМ

3210 LET CONV=ABS MDEL 3220 PROC CONV

3230 PRINT INK 4;"ДЕЛЬТА:";SGN MDEL*D1;"ГРАД."; USING "00";D2;"

'"; USING "00";D3;......

3240 END PROC

3250 DEF PROC GSTGMT: REM ПЕРЕВО

Д ДЛЯ ВОСХОДА,ЗАХОДА

3260 LET E«(ACS (-TAN (LATIT*GR)

*TAN (X*GR)))/GR/15

3270 LET A-24-E+Y

3280 IF A>24 THEN LET A-A-24

3290 LET K»Y+E

3300 IF K>24 THEN LET K=K-24 3310 END PROC

3320 DEF PROC ECLECV: REM ПЕРЕХ0 Д ОТ ЭКЛИПТИЧЕСКИХ КООРДИНАТ к э КВАТОРИАЛЬНЫМ 3330 LET QM-COS (ECLIP*GR) 3340 LET QN=SIN (ECLIP*GR) 3350 LET QQ-SIN (LOSUN*GR) 3360 LET QY»QQ*QM-TAN (LATSUN*GR ) *QN

3370 LET QXsCOS (L0SUN*GR) 3380 LET DELTAae(ASN (SIN (LATSUN *GR)*QM+C0S (LATSUN*GR)*QN*QQ))/ GR

3390 LET Y»QY: LET X»QX 3400 PROC ATN: LET ALFA»Z/15 3410 END PROC

3420 DEF PROC ATN: REM УСТРАНЕНИ E НЕОПРЕДЕЛЕННОСТИ ПО ATN 3430 LET Z»(ATN (Y/X)+ACS SGN AT N (Y/X)+ACS SGN Y)/GR: END PROC 3440 DEF PROC CONVl: REM ПЕРЕВОД ДОЛЕЙ ЧАСА;ГРАДУСА 3450 LET Dl-INT CONVl: LET D2»(C ONV1-D1)*60

3460 LET RD-1: LET X«D2: PROC RO

UND: LET D2=X: LET RD»10

3470 IF D2S60 THEN LET D1»D1-M:

IF D2-60 THEN LET D2-0 3480 END PROC

3490 DEF PROC CONV: REM ПЕРЕВОД ДОЛЕЙ ГРАД.

3500 LET D1=INT CONV: LET FD2»(C

ONV-INT CONV)*60: LET D2-INT FD2

: LET D3«((FD2-D2)*60)

3510 LET RD-l: LET X«D3: PROC RO

UND: LET D3«X: LET RD«10

3520 END PROC

3530 DEF PROC MSTAR: REM ИСТИННО E ЗВЕЗДНОЕ ВОСХОДА,ЗАХОДА СОЛНЦА 3540 LET Zs24.07*X/(24.07+X-Y) 3550 END PROC

3560 DEF PROC STMOON: REM ЗВЕЗДН

ШКОЛЕ

ОЕ ВОСХОДА,ЗАХОДА ЛУНЫ

3570 LET Z-12.03*Х/(12.03+X-Y)

3580 END PROC

3590 DEF PROC GSGM: REM ПЕРЕВОД GST В GMT

3600 RESTORE 3640: LET YE-MEMG-1 990

3610 IF G-2000 THEN LET YE»10 3620 IF G<1991 OR G>2000 THEN L ET YE-11: REM СРЕДНЕЕ ЗНАЧЕНИЕ 3630 FOR I»1 TO YE: READ CONST: NEXT I

3640 DATA 17.389402,17.405316 3650 DATA 17.355521,17.371435 3660 DATA 17.387349,17.403263 3670 DATA 17.353468,17.369382 3680 DATA 17.385297,17.401211,17 .38

3690 LET Х=ФАТА*0.0657098-CONST 3700 IF X>=0 AND X<=24 THEN GO TO 3720

3710 LET X=X-SGN X*24: GO TO 370 0

3720 LET Y=U-X

3730 IF Y>=0 AND Y<=24 THEN GO TO 3750

3740 LET Y-Y-SGN Y*24: GO TO 373 0

3750 LET YsY*0.99727 3760 END PROC

3770 DEF PROC TIMEM: REM ВРЕМЯ В

ОСХОДА,ЗАХОДА ЛУНЫ

3780 PRINT #0; INK 3; FLASH 1;"П

ОДОЖДИТЕ 45 СЕКУНД..."

3790 LET Н«0: PROC FAZ

3800 LET HOUR=12

3810 PROC ITER

3820 LET H>GMTR: PROC FAZ

3830 LET HOUR-0.5

3840 PROC ITER

3850 LET GMTREND»GMTR

3860 LET H*GMTS: PROC FAZ

3870 LET HOUR=0.5

3880 PROC ITER

3890 PROC MPRI: INPUT ""

3900 END PROC

3910 DEF PROC DE: REM ДЕЛЬТА ЛУН Ы

3920 LET DE=(ATN (COS (H1*GR)*(R CM*SIN (X*GR)-SCM)/(RCM*COS (X*G R)*COS (HCM*GR)-CCM)))/GR 3930 END PROC 3940 DEF PROC MEMFAZ 3950 LET MFY-FY: LET MFCJ=FD: END PROC

3960 DEF PROC HOUR: REM ПЕРЕСЧЕТ

КООРДИНАТ ЛУНЫ ДЛЯ ЧАСОВОГО ПЕР ЕМЕЩЕНИЯ "HOUR"

3970 LET DLAT=0.05*COS ((FY-MC)* GR)

3980 LET DLO=0.55+0.06*COS (FV*G R)

3990 LET LATMOON1■LATMOON+DLAT*H OUR

4000 LET LOMOON1=LOMOON+DLO*HOUR 4010 LET LATMOON«LATMOON1: LET L OMOON-LOMOON1: PROC MCONV 4020 END PROC

4030 DEF PROC POPR: REM РАСЧЕТ H

АБОРА КООРДИНАТ ЛУНЫ,ВРЕМЕНИ BOC

ХОДА,ЗАХОДА С ПОПРАВКОЙ ЗА ПАРАЛ

ЛАКС И РЕФРАКЦИЮ

4040 LET TACM=TAN (LATIT*GR)

4050 LET UCMS(ATN (0.996647*TACM

))/GR

4060 LET SCM=0.996647*SIN (UCM*G

R)+0.000009*SIN (LATIT*GR)

4070 LET CCM*COS (UCM*GR)+0.0000

09*COS (LATIT*GR)

4080 LET DCM«(MDELl+MDEL)/2

4090 LET HCM=(ACS (-TACM*TAN (DC

M*GR)))/GR

4100 LET RO»(l-EMOON*EMOON)/(l+E

MOON*COS ((FV+FA)*GR))

4110 LET RCMSRO*60.268322

4120 LET D1»(ATN (CCM*SIN (HCM*G

R)/(RCM*COS (DCM*GR)-CCM*COS (CO

S (HCM*GR)))))/GR

4130 LET D2=D1/15

4140 LET A1M=MALF1-D2: LET A2M-M

ALF-D2

4150 LET H1=HCM+D1

4160 LET X^MDELl: PROC DE: LET D

El-DE

4170 LET X=MDEL: PROC DE: LET DE 2=DE

4180 LET XSDE1: LET Y=A1M

4190 PROC GSTGMT

4200 LET STIR^A: LET ST1S=K

4210 LET X=DE2: LET Y=A2M

4220 PROC GSTGMT

4230 LET ST2R=A: LET ST2S=K

4240 LET X=ST1R: LET Y=ST2R

4250 PROC STMOON

4260 LET TRM»Z

4270 LET X-ST1S: LET Y»ST2S

4280 PROC STMOON

4290 LET TSM»Z

4300 LET TET=TETM/RO: LET DSR»(D E1+DE2)/2

4310 LET B=COS (DSR*GR)

4320 LET FI=(ACS (SIN (LATIT/B*G

СПЕКТРУМ В ШКОЛЕ

R)))/GR

4330 LET Х-О.567+ТЕТ/2

4340 LET Y«(ASN (SIN (X*GR)/SIN

(FI*GR)))/GR

4350 LET T»240*Y/B: LET T-T/3600

4360 LET TR-TRM-T: LET TS=TSM+T

4370 LET U=TR: PROC GSGM

4380 LET GMTR-Y

4390 LET U»TS: PROC GSGM

4400 LET GMTS=Y

4410 END PROC

4420 DEF PROC MPRI: REM ВОСХОД,3 АХОД ЛУНЫ

4430 LET CONVl-GMTREND: PROC CON VI

4440 IF D2-60 THEN LET Dl-Dl+1:

IF D2S60 THEN LET D2=0 4450 PRINT "ВОСХОД: ";D1;"4AC." ; USING "00";D2;"МИН." 4460 LET CONVlsGMTS: PROC CONVl 4470 IF D2-60 THEN LET Dl-Dl+1:

IF D2*60 THEN LET D2-0 4480 PRINT "ЗАХОД :";D1;"ЧАС."; USING "00";D2;"МИН* M 4490 END PROC

4500 DEF PROC ITER: REM ИТЕРАЦИЯ 4510 PROC COORDM: PROC MCONV 4520 LET MALF1-MALF: LET MDEL1-M DEL

4530 PROC HOUR: PROC POPR 4540 END PROC

4550 DEF PROC SUNDAWN: REM СУМЕР КИ,АЗИМУТ

4560 LET LA-LATIT*GR: LET DE-DEL TAMEM*GR

4570 LET HS«(ACS (-TAN LA*TAN DE ))/GR

4580 LET SUM«((COS (108*GR)-SIN LA*SIN DE)/(COS LA*COS DE)) 4590 IF ABS SUM>-1 THEN PRINT • INK 7; FLASH 1;"СУМЕРКИ ВСЮ НОЧ Ь !"

4600 IF ABS SUM»1 THEN GO TO 4 690

4610 LET HZ"(ACS SUM)/OR

4620 LET TS«0.9973*(HZ-HS)/15

4630 LET DAWS»GMTS+TS

4640 LET DAWR«GMTR-TS

4650 LET CONVl«DAWS: PROC CONVl

4660 PRINT INK 7;"КОНЕЦ ВЕЧЕРНИ

X"1" СУМЕРЕК:";D1;"ЧАС.";

USING "00";D2;"МИН."

4670 LET CONVl=DAWR: PROC CONVl

4680 PRINT INK 7;"НАЧАЛО УТРЕНН

ИХ"»" СУМЕРЕК:";D1;"ЧАС."

; USING "00";D2;"МИН." 4690 LET FD-SIN (DELTA*GR)/COS ( LATIT*GR)

4700 LET RA=(ACS FD)/GR

4710 LET SA=360-RA

4720 LET CONVl"SA: PROC CONVl

4730 PRINT • INK 4;"АЗИМУТ ЗАХОД

A:";D1;"ГРАД."; USING "00";D2;"«

и

4740 LET CONVl»RA: PROC CONVl 4750 PRINT INK 4;"АЗИМУТ ВОСХОД A: " ;D1; "ГРАД. " ; USING "00";D2;"'

и

4760 END PROC 4770 DEF PROC ECLIP 4780 PROC DATA

4790 PROC FAZ: PROC MEMFAZ: PROC ELEM1: PROC PRIELEM1: BEEP .3,1 1: PAUSE 0: PROC OPTION 4800 DEF PROC ELEM1: REM РАСЧЕТ БЭТА; ДЕЛЬТА 1,2 4810 LET MC»FQ-0.16*SIN (FM*GR) 4820 LET WR-FY-MC: LET ECR-COS ( WR*GR)

4830 LET FD-SIN (WR*GR)*C0S (IMO ON*GR)

4840 LET DR«FD/ECR: LET SA-SGN ( (ATN DR)/GR)

4850 LET ECG«(ATN DR)/GR+(ACS SA )/GR+(ACS (SGN DR))/GR 4860 LET ECS-SIN (WR*GR) 4870 LET ECH-(ASN (ECS*SIN (IMOO N*GR)))/GR: LET ECU-ECG+MC 4880 LET ECW-ECU-F3 4890 LET KV-ECW: PROC C0NV2: LET ECW'KX

4900 LET KV»WR: PROC CONV2: LET WR-KX

4910 IF WR>-90 THEN LET WR-180-WR

4920 END PROC 4930 DEF PROC PRIELEM1 4940 LET CONVl«WR: PROC CONVl 4950 BEEP .1,7: PRINT ' INK 4;"B 03PACT-M;ECW;M ГРАД, м,, INK 6; "РАССТОЯНИЕ ДО УЗЛА»";1/D1;" ГРА Д."; USING "00";D2;"МИН" 4960 IF ECW<178.2 AND ECW»2 THE N PRINT 11 INK 3; FLASH 1;" ДО ПОЛНОЛУНИЯ БОЛЕЕ ЗХ ЧАСОВ ": Р RINT AT 14,5; INK 6;"ВВЕДИТЕ НОВ УЮ ДАТУ"

4970 IF ECW>0.05 AND ECW<=2 THEN PRINT 1 INK 3; FLASH 1;" MOME HT ПОЛНОЛУНИЯ ПРОЙДЕН ": PRINT AT 13,5; INK 6;"ВВЕДИТЕ НОВУЮ ДА

ТУ" 4980 IF ECW>0.05 AND ECW<=2 THEN PAUSE 0

СПЕКТРУМ В ШКОЛЕ

4990 IF ECW>0.05 AND ECW<=2 THEN

GO TO 4780 5000 IF ECW<178.2 AND ECW>=2 THE N PAUSE 0

5010 IF ECW<178.2 AND ECW>=2 THE N GO TO 4780

5020 IF ECW>179.95 OR ECW<0.05 t HEN PROC PRECL

5030 LET DELH»DELH/2: IF DELH<0.

2 THEN LET DELH«0.2

5040 IF ECW>179.45 AND ECW<«180

THEN LET DELH-0.1

5050 IF ECW>178 OR ECW<=180 THEN

LET H»H+DELH 5060 IF ECW>178 OR ECW<=180 THEN PRINT AT 12,1; INK 3;"АВТОМАТИ ЧЕСКИЙ ПОИСК МОМЕНТА";AT 14,9;"П ОЛНОЛУНИЯ:"

5070 IF ECW>178 OR ECW<«180 THEN

GO TO 4790 5080 IF ECW>180 OR ECW<*2 THEN GO TO 4790 5090 END PROC 5100 DEF PROC PRECL 5110 IF WR>18.2 THEN PRINT 11 I NK 2;" ЗАТМЕНИЕ НЕВОЗМОЖНО"

" INK 2; FLASH 1;" РАССТОЯНИЕ Д О УЗЛА >18.2 ГРАД." 5120 IF WR>18.2 THEN PAUSE 0 5130 IF WR>18.2 THEN PROC OPTION 5140 IF WR<18.2 THEN PRINT •» IN К 2; FLASH 1;" ЗАТМЕНИЕ

!

5150 IF WR<=18.2 AND WR>12 THEN

PRINT 1 INK 2;" ПОЛУТЕН

EBOE "

5160 IF WR<=12 AND WR>=5.6 THEN

PRINT • INK 2;" ЧАСТНО

E"

5170 IF WR<5.6 THEN PRINT ' INK

2; OVER 1;" ПОЛНОЕ"

5180 PROC ELEM2 5190 END PROC

5200 DEF PROC ELEM2: REM РАСЧЕТ РАДИУСОВ-ПОЛУТЕНИ,ТЕНИ,ЛУНЫ;Y1 5210 LET ECX=(l-EMOON*EMOON)/(l+ EMOON*COS ((FY+FA)*GR)) 5220 LET ECZSTETM/ECX: LET ECD*P IMOON/ECX

5230 LET MASH=32/0.569: REM 0.5 69-РАЗНИЦА ЧАСОВЫХ ДВИЖЕНИЙ СОЛН ЦА И ЛУНЫ(ГРАД/ЧАС);1ЧАС® 3 2ПИКСЕ ЛА;6ЧАС.*192

5240 LET RPT=(ECD+0.27)*MASH 5250 LET RT=(ECD-0.27)*MASH 5260 LET RL«ECZ*MASH/2 5270 LET Y1=ECH*MASH 5280 PROC Y1Y2 5290 END PROC

СПЕКТРУМ

В

ШКОЛЕ |

5300 DEF PROC CONV2: REM ПЕРЕВОД (0-180 ГРАД.)

5310 LET Y=INT (ABS (KV)/180)*18 0

5320 LET KX=KV-Y*(KV>e180)+(180+ Y)*(KV<0) 5330 END PROC

5340 DEF PROC Y1Y2: REM КООРДИНА ТЫ ДЛЯ ГРАФИКИ

5350 LET CQ=CQ+1: REM CQ»0 В PRO С DATA

5360 IF CQ=2 THEN GO TO 5390 5370 LET ECY1-Y1: LET H=H-3 5380 PROC FAZ: PROC MEMFAZ: PROC

ELEM1: PROC ELEM2 5390 LET KC=(Y1-ECY1)/64 5400 BEEP .5,7: PAUSE 30: PROC G RAFECL: PAUSE 0: BORDER 1: PAPER

1: CLS : PROC OPTION 5410 END PROC

5420 DEF PROC GRAFECL: REM ГРАФИ KA ЗАТМЕНИЯ

5430 PAPER 1: BORDER 0: CLS 5440 LET CONVl=H+3: PROC CONV1 5450 PRINT #0;AT 1,1; INK 4;"MOM EHT НАИБОЛЬШЕЙ ФАЗЫ-";D1;":"; US ING "00";D2

5460 PRINT INK 6;AT 1,1;K;".";M EMM;".";MEMG;AT 2,1; INK NK;D$ 5470 PLOT INK 2;0,0: DRAW INK 2;0,175: DRAW INK 2;255,0: DRAW INK 2;0,-175: DRAW INK 2;-255

,0

5480 FOR T=32 TO 224 STEP 32 5490 PLOT INK 2;T,1: PLOT INK 2;T,2: NEXT T

5500 FOR T»32 TO 224 STEP 8 5510 PLOT INK 2;T,1: NEXT T 5520 CIRCLE INK 2;128,88,RPT 5530 CIRCLE OVER 1; INK 1;128,8 8 ,RT

5540 FILL INK 2;128,88 5550 LET CI=224: LET RJ*KC*CI 5560 LET END=0

5570 LET N«0: FOR I=CI TO 32 STE P -1

5580 IF INKEY$SCHR$ 32 THEN PRO С OPTION

5590 ON ERROR 5750

5600 LET PR=KC*I: LET KCPRI«88+Y

1+PR-R3

5610 CIRCLE OVER 1; INK 2;I,KCP RI,RL

5620 PLOT OVER 1; INK 2;1,1: PL ОТ OVER 1; INK 2,1,2: PLOT OVER 1; INK 2;1+1,1: PLOT OVER 1; I NK 2;I+1,2

5630 IF KCPRI>«173 OR KCPRI<»3 T HEN PRINT #0; J1 ФАЗА 3ATMEH

ИЯ МАЛА11

5640 IF KCPRI>e173 OR KCPRI<»3*T HEN PAUSE 200

5650 IF KCPRI>®173 OR KCPRI<«3 T

HEN PROC OPTION

5660 PLOT OVER 1; INK 2;I,KCPRI

: LET Y-KCPRI

5670 LET QsP0INT (I,Y)

5680 ON ERROR 5760

5690 CIRCLE OVER 1; INK 2;I,KCP

RI,RL

5700 IF Q»1 AND I<128 THEN GO S UB 5780

5710 IF Qs0 AND I<(128-RT+2) THE N GO SUB 5780

5720 IF Q«0 THEN GO SUB 5810

5730 ON ERROR 5570

5740 NEXT I: GO TO 5860

5750 IF ERROR»11 AND LINE-9080 T

HEN RETURN : CONTINUE

5760 IF ERROR»11 AND LINE=9120 T

HEN RETURN : CONTINUE

5770 GO TO 5860

5780 IF Q«1 AND END»1 THEN GO T О 5740

5790 IF Q«1 THEN LET END-1 5800 FOR 3=0 TO Y: PLOT INK 2;I ,3: NEXT 3: RETURN 5810 LET N=N+1

5820 IF Q«0 AND 1=128 THEN GO T О 5840

5830 IF Q=0 AND N>2 THEN GO TO 5740

5840 FOR 3-0 TO Y: PLOT OVER 1;

INK 2;I,3: NEXT 3 5850 RETURN

5860 PRINT #0;AT 1,1; INK 4;"MOM EHT НАИБОЛЬШЕЙ ФАЗЫ-";D1;":"; US ING "00";D2: REM ПОВТОР ДЛЯ СЛУЧ АЯ ON ERROR 5870 END PROC 5880 DEF PROC INSTR 5890 CLS : PRINT AT 0,3;"ЭТА ПРО ГРАММА ДЕМОНСТРИРУЕТ ШИРОЧАЙШИЕ ВОЗМОЖНОСТИ ПЕРСОНАЛЬНОГО КОМПЬ ЮТЕРА 1ZX-SPECTRUM1 В НАИБОЛЕЕ С ЛОЖНОЙ ОБЛАСТИ АСТРОНОМИЧЕСКИХ Р АСЧЕТОВ-ПРЕДВЫЧИСЛЕНИИЛУИНЫХ ЗАТ

СПЕКТРУМ

МЕНИЙ«"

5900 PRINT •1" АВТОР СОЖАЛЕЕТ Ч ТО ЕМУ НЕ УДА-ЛОСЬ СДЕЛАТЬ РАБОТ ОСПОСОБНЫМ РАЗДЕЛ 'КАЛЕНДАРЬ СОЛ НЦА1 ДЛЯ ЖИТЕ-ЛЕЙ ЗАПОЛЯРНОГО КР УГА,НО АВТОР УВЕРЕН,ЧТО МНОГОЧИ СЛЕННЫЕ ПОКЛОННИКИ 'ZX-SPECTRUM1 ,РАБОТАЮЩИЕ В АНТАРКТИДЕ И НА СЕ §ЕРНОМ ПОЛЮСЕ,САМИ ДОРАБОТАЮТ ПР ОГРАММУ."

5910 PRINT "" ВСЕ МОМЕНТЫ АСТР ОНОМИЧЕСКИХ ЯВЛЕНИЙ ДАНЫ В ПРОГР АММЕ ПО ВСЕМИРНОМУ ВРЕМЕНИ (GMT)

ДЛЯ ШИРОТЫ МОСКВЫ (56 ГРАД.)'1 5920 PRINT '" ДЛЯ ДРУГИХ ПУНКТО В НЕОБХОДИМО В СТРОКЕ 1230 ИЗМЕН ИТЬ KOHCTAHTyLATIT (ДОПУСТИМО У КАЗЫВАТЬ ДЕСЯТЫЕ ДОЛИ)." 5930 PRINT "' НАЧАЛО ОТСЧЕТА A3 ИМУТА:ОТ НАП-РАВЛЕНИЯ НА СЕВЕР."

''" ТАК КАК ДОЛГОТА СОЛНЦА ЗА СУТ-КИ ИЗМЕНЯЕТСЯ МАЛО,ДОПУСКАЕТ СЯ ВРАЗДЕЛЕ 'КАЛЕНДАРЬ СОЛНЦА' В ВОДИТЬ ЛЮБОЕ ЗНАЧЕНИЕ ЧАСА (РАСЧ ЕТ ПРОИЗВОДИТСЯ ДЛЯ О ЧАС.ЗАДАН НОЙ ДАТЫ)."

5940 PRINT "' В ОПИСАНИИ НУЖДАЕ ТСЯ ТОЛЬКО РАЗДЕЛ 'ПОИСК ЗАТМЕ

НИЯ' ...............КРАТКАЯ СПРАВК

А:"

5950 PRINT ''" ЛУННОЕ ЗАТМЕНИЕ МОЖЕТ ПРОИЗОЙ-ТИ ТОЛЬКО В ПОЛНОЛ УНИЕ.""" ЕСЛИ УГОЛ МЕЖДУ ЛИНИЕ Й УЗЛОВ (ЛИНИЯ ПЕРЕСЕЧЕНИЯ ПЛОС КОСТИ ЛУННОЙ ОРБИТЫ С ПЛОСКОСТЬЮ ЭКЛИПТИ-КИ) И НАПРАВЛЕНИЕМ НА Л УНУ БОЛЬ-ШЕ 18.2ГРАД.-ЗАТМЕНИЕ Н ЕВОЗМОЖН0"

5960 PRINT "' ЗАТМЕНИЕ МОЖЕТ БЫ ТЬ:ПОЛНЫМ, ЧАСТНЫМ ИЛИ ПОЛУТЕН ЕВЫМ. " ' ' " ПОЛУТЕНЕЮЕ ЗАТМЕНИЕ НЕВООРУ -ЖЕННЫМ ГЛАЗОМ НЕВИДИМО.

и

5970 PRINT '■" ПОИСК ЗАТМ

ЕНИЯ:"

5980 PRINT "" ПОИСК ЗАТМЕНИЯ С ЛЕДУЕТ НАЧАТЬ С ПОИСКА ДАТЫ ПОЛН ОЛУНИЯ(ПУНКТ 1КАЛЕНДАРЬ ЛУНЫ•).

и

5990 PRINT "' ЗАТЕМ ВЫБРАВ ПУНК Т 'ПОИСК ЗАТ-МЕНИЯ' ИЗМЕНИТЕ ЧАС

ДО МОМЕНТА ,КОГДА ВОЗР&СТ ЛУНН ПОПАДЕТ В ИН-ТЕРВАЛ 178-180 ГРАД .(Т МОМЕНТА ПОЛНОЛУНИЯ -3 ЧАСА) И НАЧНЕТСЯ АВТОМАТИЧЕСКИЙ ПОИС К МОМЕНТА ПОЛНОЛУНИЯ." 6000 PRINT '" ЕСЛИ ЗАТМЕНИЕ ВОЗ МОЖНО ПРОГРАММА ПЕРЕЙДЕТ К ГРАФИ КЕ И ПОКАЖЕТ ХОД ЗАТМЕНИЯ (5 МИН .20 СЕК.);"•"ВЫХОД ИЗ ГРАФИКИ <S PASE> . " • • " ЕСЛИ ЗАТМЕНИЕ НЕВОЗМ ОЖНО НЕОБ-ХОДИМО ПОВТОРИТЬ ПОИСК

В ШКОЛЕ

ДЛЯ МОМЕНТА ПОЛНОЛУНИЯ ДРУГОГО МЕСЯЦА."

6010 PRINT '" ПРИ ПОСЛЕДОВАТЕЛЬ НОМ ПОИСКЕ ПОМЕСЯЦАМ ХОРОШО ВИДН О КАК УМЕНЬШАЕТСЯ РАССТОЯНИЕ ДО УЗЛА,ПОКА НЕ СТАНЕТ <=18.2 ГРАД ,ЧТО ПОЗВОЛЯ-ЕТ УСКОРИТЬ ПОИСК,П РОПУСКАЯ МЕСЯЦЫ В КОТОРЫХ ВЕРОЯТ НОСТЬ ЗАТМЕ -НИЯ НИЗКА." 6020 PRINT '" ОПРЕДЕЛИТЬ ВИДИМО СТЬ ЗАТМЕНИЯ МОЖНО СРАВНИВ ВРЕМЕ НА ВОСХОДА И ЗАХОДА СОЛНЦА И ЛУН Ы ДЛЯ ДАТЫ ЗАТМЕНИЯ(РАЗДЕЛ 'КАЛЕ НДАРЬ СОЛНЦА И ЛУНЫ')" 6040 PRINT INK 4 ; ' ' " ЖЕЛАЕТЕ П РОЧИТАТЬ СНАЧАЛА ?•"••' (Y/N)"

6050 INPUT LINE Р$: IF P$="Y" О R Р$="у" THEN GO TO 5890 6060 PROC OPTION 6070 END PROC

Полное лунное затмение состоялось, например, в ночь с 9 на 10 декабря 1992 года. При настройке программы Вам, наверное, будет интересно посмотреть, как это происходило. Для этого, выбрав первый пункт меню программы "ПОИСК ЗАТМЕНИЯ", введите следующие данные.

НАШЕ ИНТЕРВЬЮ

На страницах ZX-РЕВЮ мы уже не раз рассказывали о новых перспективных моделях отечественных "Спектрум"-совместимых машин. Одной из таких популярных моделей в последние годы явился "Scorpion ZS 256". Эта машина сегодня распространена по всей России от Калининграда до курилл и мы получаем много писем от читателей, с благодарностью оценивающих работу С.-Петербургской фирмы "Scorpi-

ГОД: 1992 ЧИСЛО: 9

МЕСЯЦ: 12 ЧАС: 22

Далее начнется автоматический поиск момента полнолуния. После его нахождения будет зафиксировано ПОЛНОЕ ЛУННОЕ ЗАТМЕНИЕ! Программа любезно продемонстрирует Вам этот исторический момент:

9.12.1992

момент наибольшей 9mm-g3i54

* * *

Пользуясь случаем, сообщаем об опечатке, допущенной нами в гх-РЕВЮ-94, N3, на стр.15 (левая колонка, вверху). В Бейсик-строке 5000 вместо: ... РОКЕ 50001,U ... должно быть: ... РОКЕ 50002,U ... иначе декомпрессор экрана не будет работать.




СОДЕРЖАНИЕ:


  Оставте Ваш отзыв:

  НИК/ИМЯ
  ПОЧТА (шифруется)
  КОД



Темы: Игры, Программное обеспечение, Пресса, Аппаратное обеспечение, Сеть, Демосцена, Люди, Программирование

Похожие статьи:
Юмор - Анекдоты.
NАTЯGGG - Экзамены.
ZSock TCP/IP Stack - Железка для выхода в Internet.
Встпуление - На прошлой неделе состоялся съезд СисОпов. Было клево.
UFO II - как можно сделать побольше оружия типа 'ГАРПУН'.

В этот день...   21 ноября