Радио-86РК/Радио 12-87/Вечный календарь

Материал из Emuverse
Версия от 09:40, 2 июля 2008; Panther (обсуждение | вклад) (http://retro.h1.ru/RK86/Games/Kalend.html)
(разн.) ← Предыдущая версия | Текущая версия (разн.) | Следующая версия → (разн.)
Данный материал защищён авторскими правами!

Использование материала заявлено как добросовестное, исключительно для образовательных некоммерческих целей.

Автор: А. СОРОКИН

Источник: http://retro.h1.ru/RK86/Games/Kalend.html

Попробуйте представить себе, как осложнилась бы жизнь, не изобрети наши предки календарь, Мы бы сейчас не знали, что живем на пороге XXI века, не ведали, сколько нам лет, когда вести детей в школу, когда уходить на пенсию… Когда, наконец, встречать новый год и что это будет за год — кошки или собаки, в чем его встречать — в белом или красном…

Одним словом, без календаря нам пришлось бы туго. К счастью, предки не ударили в грязь лицом и изобрели даже несколько календарей. Один из них, пользующийся в канун Нового года особой популярностью, мы и предлагаем вниманию владельцев «Радио-86РК». А подготовил его для вас московский школьник Андрей СОРОКИН.

Воспользовавшись программой «Вечный календарь», вы сможете узнать день недели любой заинтересовавшей вас дат с 1581-го по 4000 год (переход со старого стиля на новый учитывается автоматически), название года по восточному календарю и соответствующий ему цвет.

  10 Dim N$(11),W$(6),K(12),JK$(11)
  20 Cls:Cur 17,24:Print  "ВЕЧНЫЙ КАЛЕНДАРЬ (ОТ 1581Г.)"
  30 For I=0 To 11: Read N$(I): Next I
  40 For I=0 To 6: Read W$(I): Next I
  50 For I=0 To 11:Read K(I): Next I
  60 For I=0 To 11: Read JK$(I): Next I
  70 Print : Print  Tab(17);"ВВЕДИТЕ:МЕСЯЦ,ГОД";:Input ME,G
  80 XY=0: D=1:If G/4=Int(G/4) Then K(1)=29
  90 Rem * ПОПРАВКА НА СТИЛЬ ЛЕТОИСЧИСЛЕНИЯ *
 100 If G<1918 Then D=0
 110 GE=G:M=ME
 120 GoSub 140: Goto 220
 130 Rem * ВЫЧИСЛЕНИЕ ДНЯ НЕДЕЛИ *
 140 If M>=3 Then M=M-2: Goto 170
 150 If M<3 Then M=M+10
 160 If M>10 Then G=G-1
 170 CE=Int(G/100): G=G-CE*100
 180 Z=Int(2.6*M-0.1):DD=Z+D+G+Int(G/4)+Int(CE/4)-2*CE
 190 L=DD+777 : DN=L-7*Int(L/7)
 200 If DN=0 Then DN=7
 210 Return
 220 Cls: Cur 4,24
 230 GoSub 760
 240 Y=DN-1 : SP=21 :U=2
 250 Rem * ЦИКЛ МЕСЯЦЕВ *
 260 For I=ME-1 To 11 Step 2
 270 If I+1>11 Then U=1
 280 If I=ME+7 OR I=ME+3 OR I=ME+11 Then GoSub 620
 290 Cur 23,SP: Print  N$(I)
 300 If U<>1 Then Cur 44,SP:Print  N$(I+1)
 310 Rem * ЦИКЛ ДНЕЙ НЕДЕЛИ *
 320 For SH=0 To 6
 330 Cur 0,SP-SH-1: Print  W$(SH): Next SH
 340 X=15
 350 For V=1 To U: If V=1 Then DK=I
 360 If V=2 Then DK=I+1
 370 Rem * ЦИКЛ ЧИСЕЛ *
 380 For J=1 To K(DK)
 390 Y=Y+1
 400 If SP-Y=SP-8 Then Y=1: X=X+3
 410 Cur X,SP-Y: Print  J
 420 Next J
 430 X=36: Next V
 440 SP=SP-9: Next I: XY=1
 450 Rem * ПЕЧАТЬ РИСУНКА *
 460 GoSub 620: Cls: Cur 0,24
 470 Print  Tab(6); "Ш"
 480 Print  Tab(5) ;"ШШШ"
 490 Print  Tab(4) ;"ШШШШШ"
 500 Print  Tab(3) ;"ШШШШШШШ"
 510 Print  Tab(2) ;"ШШШШШШШШШ"
 520 Print  Tab(1) ;"ШШШШШШШШШШШ"
 530 Print "ШШШШШШШШШШШШШ"
 540 Print  Tab(6);"Ш"
 550 Print  Tab(6);"Ш"
 560 GE=GE+1: Print  Tab(17);"С  НОВЫМ  ГОДОМ !!!"
 570 GoSub 760
 580 PR=Usr(-2045)
 581 Cls
 582 U=2:K(1)=28
 583 If GE=1918 Then ME=1:G=1918 :Goto 80
 590 Cls
 591 Cur 0,24
 592 GoSub 760: ME=1: If GE/4=Int(GE/4) Then K(1)=29
 600 Goto 260
 610 Rem * ВВОД ДАННЫХ И ИХ ОБПАБОТКА ДЛЯ ПРОДОЛЖЕНИЯ ПЕЧАТИ *
 620 Cur 22,2: Input "ДАЛЬШЕ (ДА/НЕТ)"; DA$
 630 If LEFT$(DA$,1)<>"Д" AND LEFT$(DA$,1)<>"D" Then 660
 640 Cls: SP=21: If XY=1 Then XY=0:Return
 650 Cls:Cur 0,24: GoSub 760: Return
 660 Cls:Cur 10,22: Print  "ДОЛГИХ ВАМ ЛЕТ ЖИЗНИ !!!"
 670 K(1)=28: Goto 70
 680 Rem * ОПИСАНИЕ ДАННЫХ *
 690 Data ЯНВАРЬ,ФЕВРАЛЬ,МАРТ,АПРЕЛЬ,МАЙ,ИЮНЬ,ИЮЛЬ,АВГУСТ
 700 Data СЕНТЯБРЬ,ОКТЯБРЬ,НОЯБРЬ,ДЕКАБРЬ
 710 Data ПОНЕДЕЛЬНИК,ВТОРНИК,СРЕДА,ЧЕТВЕРГ,ПЯТНИЦА,СУББОТА,ВОСКРЕСЕНЬЕ
 720 Data 31,28,31,30,31,30,31,31,30,31,30,31
 730 Data ОБЕЗЬЯНЫ,КУРИЦЫ,СОБАКИ,СВИНЬИ,МЫШИ,КОРОВЫ
 740 Data ТИГРА,ЗАЙЦА,ДРАКОНА,ЗМЕИ,ЛОШАДИ,ОВЦЫ
 750 Rem *ОПРЕДЕЛЕНИЕ И ВЫВОД НАЗВАНИЯ ГОДА ПО ВОСТОЧНОМУ КАЛЕНДАРЮ*
 760 OS=GE-12*Int(GE/12)
 770 W$=JK$(OS)
 780 Print  Tab(5);"ПО ВОСТОЧНОМУ КАЛЕНДАРЮ ";GE;" ГОД - ГОД ";W$
 790 GC=GE-1563-Int((GE-1564)/60)*60
 800 CO=VAL(RIGHT$(STR$(GC),1))
 810 If CO=1 OR CO=2 Then CO$="СИНИЙ":Goto 860
 820 If CO=3 OR CO=4 Then CO$="КРАСНЫЙ":Goto 860
 830 If CO=5 OR CO=6 Then CO$="ЖЕЛТЫЙ":Goto 860
 840 If CO=7 OR CO=8 Then CO$="БЕЛЫЙ" :Goto 860
 850 CO$="ЧЕРНЫЙ."
 860 Print  Tab(17); "ЦВЕТ ГОДА-"; CO$
 870 Return

Для этого достаточно ввести текст программы в компьютер и запустить ее оператором RUN. На экране появится надпись «ВЕЧНЫЙ КАЛЕНДАРЬ», и компьютер предложит вам ввести месяц и год интересующей даты. Когда это будет сделано, на экране возникнет несколько месяцев календаря «заказанного» года и компьютер поинтересуется, нужны ли последующие месяцы. При положительном ответе («да») он их «распечатает», причем переход на следующий год будет сопровождаться появлением на экране компьютера новогоднего поздравления,

Вообще, история возникновения календаря очень интересна и тем, кто хочет познакомиться с ней подробнее, рекомендую книгу: Климишин И. А. Календарь и хронология.— М.: Наука, 1985.

А. СОРОКИН, г. Москва