ГЛАВА 3
В данной главе собраны программы производящие различные виды
преобразования информации: перевод чисел из одной системы счисления
в другую, сортировку строк символов, решение систем линейных
уравнений, вывод сообщений в виде "бегущей строки" и крупными буквами.
3.1 ФОРМИРОВАНИЕ БОЛЬШИХ БУКВ.
Иногда бывает необходимо вывести на экран надпись крупными
буквами. Программа 3.1 позволяет сделать это. В программе каждый пиксел
заменяется символом "S" (Рис 3.1). В строке 750 вместо "S" можно
использовать псевдофафический символ или A$(i), тоща каждая большая
буква будет состоять из маленьких (Рис. 3.2).
100 LET A$-*SPECTRUM"
105 BORDER 5: PAPER 2: INK 5: CIS
110 LET U-0: LET V-0
120 GOSUB 500
130 STOP
500 REM
510 FOR 1-1 TO LEN AS
520 LET C- CODE A$(l)
525 LET C-C-32
530 GOSUB 700
540 LET U-U+8
550 IF U>24 THEN LET U-0: LET V-10
560 NEXT I
570 RETURN
700 FOR J-0 TO 7
710 LET Z-PEEK (15616+*-8*C)
720 LET P-128
730 FOR K-U TO U+7
740 LET B-Z >- P
750 IF В THEN PRINT AT V+J,K;'S';:LET Z-Z-P
760 LET P-P/2
770 NEXT К
780 NEXT J
790 RETURN
999 BORDER 7: PAPER 7: INK 0: CIS
Программа 3.1 Программа выводящая большие буквы.
3.2 ПРЕОБРАЗОВАНИЕ ДЕСЯТИЧНЫХ ЧИСЕЛ В ЧИСЛА
С ПРОИЗВОЛЬНЫМ ОСНОВАНИЕМ (ОТ 2 ДО 16)
СИСТЕМЫ СЧИСЛЕНИЯ.
Программы 3.2 и 3.3 производят перевод чисел из одной системы
счисления в другую. Первая программа производит перевод из д есятичной
системы в любую другую (с основанием от 2 до 16), вторая производит
обратное преобразование. При необходимости перевод а числа, например
из восьмиричной системы в шестнадцатиричную, можно сначала
воспользоваться второй программой и перевести восьмиричное число и
десятичное, а затем используя первую программу перевести его в
шестнадцатиричное.
10 DIM L(16)
100 PRINT "CONVERTER OF BASIS9
105 PRINT "DECIMAL TO (FROM BIN TO HEX)
106 PRINT
110 PRINT "DECIMAL!-";
120 INPUT Z
125 PRINT Z
130 PRINT "BASIS";
135 INPUT В
140 PRINT В
200 LET 1-0
205 LET M+1
210 LET R-{Z/B-INT(Z/B)rB
215 LET L(l)-R
220 LET Z-INT (Z/B)
225 IF Z>-B THEN GO TO 205
230 LET H+1
235 LET L|l)-Z
300 PRINT'EQUAL:-;
305 LET N$-"ABCDEF
310 FOR И TO 1 STEP -1
315 IF Ц4>- Ю THEN GO TO 350
320 PRINT №
330 NEXT J
340 STOP
350 LET t|J)-L|J|-?
360 PRINT N$(1(4);
370 GO TO 330
999 STOP
Программа 3.2 Преобразование десятичных чисел в числа с произвольным
основанием (от 2 до 16) системы счисления.
3.3 ПРЕОБРАЗОВАНИЯ ЧИСЕЛ С ПРОИЗВОЛЬНЫМ
ОСНОВАНИЕМ (ОТ2 ДО 1*) СИСТЕМЫ
СЧИСЛЕНИЯ В ДЕСЯТИЧНЫЕ.
100 PRINT "CONVERTER OF BASIS";
105 PRINT "BIN - HEX TO DECIMAL"
106 PRINT
110 INPUT Z$
120 PRINT Z$ 130 PRINT "BASIS:";
140 INPUT В
150 PRINT В
160 LETN-0
170 LET L- LEN Z$
175 GOSUB 300
180 FOR 1-1 TO 1-1
182 LET E-CODE Z$|l)
184 IF E>58 THEN LET E-E-7
190 LET N-(N+ E -48)*B
200 NEXT I
205 LET E-CODE Z$|l)
207 IF E>58 THEN LET E-E-7
210 LET N-N+ E -48
220 PRINT" DECIMAL: ";N
230 STOP
300 FOR 1-1 TO L
305 LET C-CODE Z$(l)-48
306 IF C>10 THEN LET C-C-7
310 IF C>-B THEN GO TO 350
315 NEXT I
320 RETURN
350 PRINT "CONVERTING NOT ABLE"
999 STOP
Программа 3.3 Программа преобразования чисел с произвольным
основанием (от2до 16) системы счисления в десятичные.
3.4 БЕГУЩАЯ СТРОКА.
50 LET WAIT-500
100 LET A$-"HELLOWI I AM A "SPECTRUM"
105 LET L-LEN A$
110 FOR K-1 TO L-1
120 PRINT AT 10,32-K;A$(1 TO K)
125 GOSUB WAIT
130 NEXT К
140 FOR K-32-L TO 1 STEP -1
150 PRINT AT 10,K;A$;
160 GOSUB WAIT
170 NEXT К
180 FOR K-1TOL
190 PRINT AT 10ДА$(К TO L)
195 GOSUB WAIT
200 NEXT К
210 GOTO 110
500 FOR J-1 TO 20: NEXT J: RETURN
Программа 3.4 "Бегущая сорока".
Программа 3.4 генерирует "бегущую строку". Текст задается в строке
100. Не забывайте о необходимости пробела в конце строки заключенной
в кавычки для стирания предыдущего текста. Скорость движения строки
определяется задержкой, которая задается в строке 500.
3.S ПЕРЕВОД АРАБСКИХ ЧИСЕЛ В РИМСКИЕ.
Программа 3.5 выполняет перевод десятичных чисел в "римские".
Максимальное значение переводимого числа ограничивается в строке
140 и равняется 3000.
10 REM
20 LET AUS-1000
100 INPUT "Z-';Z
120 PRINT Z;*-*;
130 LET B-Z
140 IF B<- 3000 THEN GOTO 200
150 PRINT'NUMBER BIG*
160 GOTO 100
200 GOTO 500
210 LET B- INT (Z/F)
220 GOSUB AUS+30*(B-0)
230 LET Z-Z-B*F
240 RETURN
500 LET F-1000: LET A$-"M*: GOSUB 210
510 LET F-900: LET A$-*CM": GOSUB 210
520 LET F-500: IET A$-"D*: GOSUB 210
530 IET F-400: LET A$-"CD': GOSUB 210
540 LET F-100: LET A$-"C": GOSUB 210
550 LET F-90: LET A$-"XC: GOSUB 210
560 LET F-50: LET A$-"L': GOSUB 210
570 LET F-40: LET A$-"XL": GOSUB 210
580 LET F—10: LET A$-X: GOSUB 210
590 LET F-9: LET A$-'IX": GOSUB 210
600 LET F-5: LET A$-V: GOSUB 210
610 LET F-4: LET A$-"IV*: GOSUB 210
620 LET F-l: LET A$-T: GOSUB 210
999 STOP
1000 FOR 1-1 TO В
1010 PRINT AS;
1020 NEXT I
1030 RETURN
Программа 3.5 Перевод десятинных чисел в "римские"
В качестве примера попробуйте перевести 1993. Должно получиться М
3.« СИСТЕМА ЛИНЕЙНЫХ УРАВНЕНИЙ С ТРЕМЯ
НЕИЗВЕСТНЫМИ.
Было бы неправильно, если в сборнике программ для компьютера
отсутствовали программы для решения математических задач. Для
решения такого рода задач и начала создаваться вычислительная техника.
В качестве примера "математической задачи" доя компьютера в дополнение
к программе 1.15 приведем программу решающую систему линейных
уравнений с тремя неизвестными вида:
а(1,1) *Х+а(1,2) *У+ш(1^) *Z - Ь(1)
а(2,1) *X+a(2,2J *Y+e(2,3) *Z - b(2)
a(3,1) *X+a(3,2) *Y+a(3^) *Z - b(3)
В программе производ ится ввод коэффициентов (строки
100-140,300 -350) вычисление детерминанта (строки200 - 225),
проверка его на отличие от нуля (строка 1025) и вычисление значений
переменных (строки 400 -320).
10 DIM А(3,3)
12 DIM Н(3)
IS DIM В(3)
20 GOTO 1000
100 PRINT'INPUT 3X3MATR:'
105 FOR 1-1 TO 3
110 PRINT l;-.ROW:*;
115 FOR >1 ТОЗ
120 INPUT AM
125 PRINT AM;'
130 NEXT J
135 PRINT
140 NEXT I
150 RETURN
200 IET D-A(1,1 )*(A(2(2)*A(3,3)-A(2,3)*A(3,2))
210 LET D-D-A(l ,2)*(A(2,1 )*A(3,3)-A(2,3)*A(3,1})
220 LET D-D+A(1,3)*(A|2,1 )*A(3,2)-A(2,2)*A(3,1))
225 RETURN
300 PRINT 'INPUT B(l):-
310 FOR 1-1 TO 3
320 INPUT B(l): PRINT В<(): NEXT I
350 RETURN
400 LET J-l: GOSUB 600: LET L-D
410 GOSUB 200: LET X-D/L
420 PRINT "X-";X
430 GOSUB 700: LET J-2: GOSUB 600: GOSUB 200
440 LET Y-D/L PRINT "Y-";Y
450 GOSUB 700:LET >3: GOSUB 600: GOSUB 200
460 LET Z-D/L:PRINT "Z-";Z
520 GOTO 700
600 FOR 1-1 ТОЗ
610 LET H(I)-A{I,J)
620 LET A(I,J)-B(I)
з
630 NEXT I
640 RETURN
700 TOR 1-1 ТО 3
710 LET Afl,J|-H(l)
720 NEXT I
730 RETURN
10OO GOSUB 100
1002 PRINT
1005 PRINT' DETERMINANT
1010 GOSUB 200
1020 PRINT "DET-";D
1025 IF D<> 0 THEN GOTO 1050
1030 PRINT
1032 PRINT 'NO SOLUTIONS!"
1035 GOTO 9999
1050 GOSUB 300
1060 GOSUB 400
9999 STOP
Программа 3.6 Программа решения системы линейных уравнений с тремя
неизвестными.
3.7 ФОРМИРОВАНИЕ ЛИСТИНГА.
Следующая программа позволяет осуществлять ввод с клавиатуры
строк длинной до 20 знаков, формирование списка из 40 строк, сортировку
строк в порядке возрастания кодов составляющих их символов и удаление
ошибочно введенных строк.
50 DIM А$|40,20)
60 LET N-1
70 DIM D$(20)
200 CLS
210 LET M-18
215 LET K-0
220 PRINT TAB M;"I)NPUT"
230 PRINT TAB M;"D)ELETE"
240 PRINT TAB M;"l)ISr
250 PRINT TAB M;"E)ND"
260 IF INKEYS -T THEN GOTO 500
265 IF INKEYS - V THEN GOSUB 1100
270 IF INKEYS -"E* THEN GOTO 900
280 IF INKEYS -"D* THEN GOSUB 1500
300 IF K-1 THEN GOTO 200
310 GOTO 260
500 CLS
520 INPUT *INPUT:";DS
525 PRINT DS
530 IF DS(1K' THEN GOTO 220
535 LET BS-DS
540 GOSUB 1205
550 GOTO 520
900 CLS
910 PRINT AT 11,13;"END"
920 STOP
1100 CLS
1110 FOR 1-1 TON-1
1120 PRINT ASP)
1125 NEXT I
1130 PAUSE 4E4
1135 LET K-1
1140 RETURN
1205 LET J-1
1210 IF N-l THEN GO TO 1330
1220 IF BS<AS(1) THEN GO TO 1330
1230 LET Jl-1
1235 LET J2-N
1240 LET J-INT ((J1+J2J/2)
1250 LET CS-A$(J|
1260 IF C$-B$ THEN GO TO 1390
1270 IF B$<C$ THEN LET J2-J
1280 IF B$>C$ THEN LET J1-J
1290 IF Jo INT ((J1+J2)/2) THEN GO TO 1240
1295 LET J-JH
1330 LET Jl-N+1
1340IFJKJ+1 THEN GO TO 1370
1350 LET A${J1)-A$(J1-1)
1360 LET Jl-JM
1365 GO TO 1340
1370 LET A${J|-B$
1380 LET N-N+1
1382 LET K-l
1385 RETURN
1390 PRINT AT 3,1;"EX»ST IN LIST"
1392 PAUSE 4E4
1395 LET K-1
1399 RETURN
1500 REM DELETE
1505 CLS
1510 PRINT'DELETE:';
1515 INPUT D$
1517 LET B$-D$
1520 PRINT B$
1525 LET J-l
1530 IF No 1 THEN GO TO 1550
1535 PRINT'DELETE BEFORE INPUT
1540 PAUSE 4E4
1545 GO TO 500
1550 LET Jl-1
1555 LET J2-N
1560 LET J- INT P+J2)/2)
1565 LET C$-A$(J|
1570 IF C$-B$ THEN GO TO 1600
1575 IF B$<C$ THEN GO TO 1585
1580 LET J1-J
1582 GO TO 1590
1585 LET J2-J
1590 IF Jo INT ((J1+J2)/2)THEN GO TO 1560
1595 PRINT "NO IN LIST*
1597 LET K-1
1598 PAUSE 4E4
1599 RETURN
1600 LET Jl-J
1610 IF Jl-N THEN GO TO 1650
1620 LET A$|J1)-A$(J1+1)
1630 LET Jl-Jl+1
1640 GO TO 1610
1650 LET N-N-l
1655 LET K-1
1660 RETURN
Программа 3.7 Формирование листинга.
3.8 СОРТИРОВКА.
Программа 3.8 производит сортировку имен введенных с клавиатуры. В
строках 170 и 550 ограничивается количество строк выводимых на экран
(15). Сортировка производится в соответствии с возрастанием кодов
символов. Время затрачиваемое на сортировку зависит от количества
введ енных имен.
10 DIM А$(100,10)
20 LET N-l
100 CLS
110 PRINT AT 1,3;*INPUT:"
120 LET 1-4
130 INPUT A$(N)
140 IF A$|N,1K * THEN GO TO 500
142 PRINT AT 1,3;*
145 PRINT AT l,3;A${N)
150 LET N-N+l
160 LET l-l+l
170 IF l>15 THEN LET 1-4
190 GO TO 130
500 CLS
502 PRINT AT 10,5;"SORr
505 GOSUB 1000
507 CLS
510 PRINT AT l,3;*OUTPUT:"
515 LET 1-4
520 FOR J-l TO N
525 PRINT AT 1,3;*
530 PRINT AT l,3;A${J|
540 LET H+l
550 IF l>15 THEN LET 1-4
560 NEXT J
570 STOP
1000 REM SHELL-METZNER SORT
1010 LET M-N
1020 LET M-INT (M/2)
1030 IF M-0 THEN RETURN
1040 LET J-1
1045 LET K-N-M
1050 LET I-J
1060 LET L-l+M
1070 IF A$(l) <- A$(L) THEN GO TO 1120
1080 LET H$-A$(l)
1083 LET A$p)-A${L)
1086 LET A$(L)-H$
1090 (.ET И-М
1100 IF l<1 THEN GO TO 1120
1110 GO TO 1060
1120 LET J-J+l
1125 IF >K THEN GOTO 1020
1130 GO TO 1050
Программа 3.8 Сортировка.
3.9 КАЛЕНДАРЬ-ЕЖЕДНЕВНИК.
Следующая программа устроена как ежедневник: необходимую запись
можно найти по введенной вместе с ней дате. В программе можно
осуществлять ввод данных с клавиатуры, вывод на экран соответствующего
дате сообщения, удаление ненужных записей, вывод на экран списка всех
занесенных дат и окончание работы с программой.
10 DIM А$(50,50)
20 DIM D$(1,8)
30 DIM Е$(1,41)
40 LET N-1
100 CLS
110 PRINT AT 3,3;"NOTEBOOK"; AT 3,18;"I)NPUT"
120 PRINT AT 4,18;"0)UTPUT"
130 PRINT AT 5,18;"D)ELETE*
135 PRINT AT 6,18;"L)IST OF DATE"
140 PRINT AT 7,18;"E)ND"
150 IF INKEYS -"" THEN GO TO 150
160 IF INKEYS -T THEN GO TO 500
170 IF INKEYS -"O" THEN GO TO 700
180 IF INKEYS -"D" THEN GO TO 900
190 IF INKEYS -"E" THEN GO TO 998
195 IF INKEYS -"I" THEN GO TO 800
199 GO TO 100
200 PRINT AT 10,1;"DATE:TT.MM.YY";
210 INPUT D$(1)
220 PRINT AT 10,7;D$(1)
230 RETURN
500 CLS
505 GOSUB 200
510 PRINT AT 12,1;"TEXT ";
520 INPUT E$(l)
530 PRINT E$|l)
560 GOSUB 1200
570 PRINT AT 2Q,6;"INPUT? (Y/N)"
— . ШШШ
580 IF INKEYS THEN GO ТО 580
590 IF INKEYS -T THEN GO TO 500
599 GO TO 100
700 CLS
710 GOSUB 200
720 GOSUB 1500
730 IF B-1 THEN GO TO 100
740 PRINT AT 12,1;"TEXT:",A$(J,9 TO 41)
750 PAUSE 4E4
760 GO TO 100
800 CLS
810FOR J-l TON
820 PRINT A$(J,1 TO 8)
830 NEXT J
840 PAUSE 4E4
850 GO TO 100
900 CIS
910 GOSUB 200
920 GOSUB 1500
930 IF B-1 THEN GO TO 100
940 GOSUB 1600
950 GO TO 100
998 CLS
999 PRINT ATI 0,10;"END"
1000 STOP
1200 REM SORT
1205 LET >1
1210 IF N-1 THEN GO TO 1370
1220 IF D${1)<A${1,1 TO 8) THEN GO TO 1330
1230 LET Jl-1
1235 LET J2-N
1240 LET J-INT {(J1+J2J/2)
1250 LET C$-A$(J,1 TO 8)
1260 IF C$-D$(l) THEN GO TO 139Q
1270 IF D$(1)<C$ THEN LET J2-J
1280 IF D$(1)>C$ THEN LET Jl-J
1290 IF J<> INT |{J1+J2)/2) THEN GO TO 1240
1300 LET J-J+1
1330 LETJ1-N+1
1340 IF JKJ+1 THEN GO TO 1370
1350 LET A$(J1)-A$(J1-1)
1360 LET J1-J1-1
1365 GO TO 1340
1370 LET A$(J)-D$(1)+E$(1|
1380 LET N-N+l
1390 RETURN
1500 REM
1510 LET B-0
1525 LET J-l
1530 IF N<> 1 THEN GO TO 1550
1535 PRINT "NO RECORDS"
1540 PAUSE 4E4
1545 GOTO 100
1555 LET Jl-1
1550 LET J2-N
1560 LET J-INT |(J1+J2)/2)
1565 LET C$-A$(J,1 TO 8)
1570 IF C$-D$(1) THEN GO TO 1599
1575 IF D$(1)<C$ THEN GO TO 1585
1580 LET Jl-J
1582 GO TO 1590
1585 LET LET J2-J
1590 IF J<> INT ((J1+J2)/2) THEN GO TO 1560
1595 PRINT "NO IN LIST"
1596 LET B-1
1597 PAUSE 4E4
1599 RETURN
1600 REM DELETE
1610 LET Jl-J
1615 IF Jl-N THEN GO TO 1650
1620 LET A$(J1)-A$(J1+1)
1630 LET J1-J1+1
1640 GO TO 1615
1650 LET N-N-1
1660 RETURN
Программа 3.9 Календарь-ежедневник.
3.10 СОРТИРОВКА СПИСКА ИМЕН.
Следующая программа производит сортировку десяти введенных с
клавиатуры слов. Это удобно для составления алфавитного списка. Результат
работы программы может выглядеть так:
Слова сортируются в порядке возрастания кодов символов.
10 PRINT 'INPUT 10 NAMES' 20 PRINT
100 LET N-10
105 DIM N$(N,15): DIM Z(N)
110 GOSUB 500
120 GOSUB 200
130 GOSUB 1000
140 GOSUB 1020
150 STOP
200 REM SOPT
210 LET P-0
220 IF P-0 THEN LET Z|1)-0: LET P-1
230FOR >2TON
240 LET И»
250 IF N$|4<N${P) THEN LET Z(J|-P: LET P-J: GO TO 295
260 LETK-I: LET l-Z(l)
265 IF 1-0 THEN LET Z(K)-J: LET Z(J|-0: GO TO 295
270 IF N$ (JHN^W THEN LET Z(K)-i LETZ(JH GO TO 295
290 GO TO 260
295 NEXT J
299 RETURN
500 REM INPUT
510 FOR J-1 TO N
520 INPUT V;N$(J)
530 NEXT J: RETURN
1000 FOR 1-1 TO N
1005 PRINT AT l,0;N$(l)
1010 NEXT I: RETURN
1020 LET l-P: LET-J-1
1030 IF 1-0 THEN RETURN
1040 PRINT AT J,16;N$(I): LET »1
1050 LET l-Z(l): GO TO 1030
Программа 3.10 Сортировка списка имен.
3.11 КАРТОТЕКА С ПОИСКОМ ПО КЛЮЧЕВЫМ
СЛОВАМ.
Очередная программа выполняет функцию картотеки с поиском
нужной информации по ключевым словам. При вводе информации
программа предлагает сначала ввести ключевое слово и затем связанный
с ним текст. При просмотре информации с клавиатуры вводится
ключевое слово и на экране отображается соответствующий ему текст.
Символы <----> подсказывают, что нажимая клавиши 5 и 8
можно просматривать содержимое картотеки вперед и назад.
100 LET N-40: LET Z-0: LET C-0
105 DIM N$(N,15): DIM R(N): DIM Щ
110 DIM К$|3,Ю): DIM V${10): DIM E$(N,50): DIM l${20): DIM
U$(15)
120 LET K$(1)-"INPUT"
130 LET K${2)-'SE ARCH"
140 LET K${3)-"END"
145 LET L$-" REM 20 SPACE
150 LET ERR-9000
199 GO TO 1000
200 REM
210 LET P-0
220 IF P-0 THEN LET R|1)-0: LET L|l)-0: LET P-l
230 FOR >2 TO Z
240 LET l-P
250 IF N$(J|<N$(P) THEN LET R|J)-P:LET L(J)-0: LET L(P)-J: LETP-J:
GO TO 295
260 LET K-l: LET l-R|l)
265 IF 1-0 THEN LET R|K)-J: LETR{J|-0: LET L(J|-K:GO TO 295
270 IF N$(J)<N$(I) THEN LET R|K)-J: LET R(J)-I: LET L|J|-K: LET L(l)-J:
GO TO 295
290 GO TO 100 260
295 NEXT J
298 LET C-1
299 RETURN
1000 CIS: PRINT AT 2,5;"INPUr; AT 3,5; "SEACH <XXXX>';AT
4,5;"END"
1002 INPUT'?';!$
1005 PRINT AT 20,0;L$
1010 LET L-LEN 1$
1020 FOR 1-1 TO L
1030 IF 1$М-"" THEN GO TO 1100
1040 NEXT I
1050 GO TO ERR
1100 LET V$-l${? TO 1-1)
1105 LET U$-I$(l+1 TO L)
1110 FOR 1-1 ТОЗ
1120 IF V$-K$(l) THEN GO TO 1200
1130 NEXT I
1140 GO TO ERR
1200 IF V$(1 TO 3)-"INP" THEN GO TO 2000
1210 IF V${1 TO 3)-"SEA" THEN GO TO 3000
1220 IF V${1 TO 3)-*ENO* THEN GO TO 4000
2000 LET Z-Z+1
2005 INPUT "SEARCH KEY:";N$(Z)
2010 INPUT "TEXT:";E$(Z)
2015 PRINT AT 20,0;"--> V
2020 LET C-0
2025 PAUSE 100
2030 IF INKEYS -"" THEN GO TO 2030
2040 IF INKEYS -"8" THEN GO TO 2000
2050 GO TO 1000
3000 CIS
3010 IF C-0 THEN PRINT "ERROR IN KEY": GOSUB 200
3030 LET l-P
3040 IF 1-0 THEN GO TO 3080
3050 IF N$|l)-U$ THEN CLS: PRINT AT 1,2;N$(t); AT 4,0;E$(I); AT
20Д" <-- -> r=GO TO 3100
3060 LET I-R0): GO TO 3040
3080 PRINT AT 20,0;l$;" V. GO TO 9005
3100 PAUSE 100
3105 IF INKEYS THEN GO TO 3100
3110 IF INKEYS -"8" THEN LET K-1: LET l-R(l): GO TO 3200
3120 IF INKEYS -"5" THEN LET K-1: LET 1-Ц1): GO TO 3200
3130 GO TO 1000
3200 CLS
3210 IF 1-0 THEN GO TO 3230
3220 PRINT AT 1,2;N$(I); AT 4,0;E$fl)
3225 PRINT AT 20,0;" <-- «> Г: GO TO 3100
3230 PRINT "END "
3250 LET l-K
3260 PAUSE 100
3270 IF INKEY$ -- THEN GO TO 3270
3280 GO TO 3210
4000 STOP
9000 PRINT AT 20,0;V$;" Г 9005 IF INKEY$ THEN GO TO
9005
9010 GO TO 1000
Программа 3.11 Картотека с поиском по ключевым словам.
3.12 "ВЕЧНЫЙ" КАЛЕНДАРЬ.
В БЕЙСИКЕ компьютера СПЕКТРУМ имеются неточности, с одной из
которых мы встретимся в очередной программе. Попробуйте вычислить:
PRINT 0.6*5 равно 3 PRINT INT(0.6*5) равно 2 PRINT
INT(0.6000001*5) равно 3
Поэтому, для получения верного результата, в строке 260 появляется
несколько необычный коэффициент. Программа предлагает ввести дату в
виде:
DATE: 01.02.1993
и выдает результат
TODAY IS: МО
(Сегодня понедельник)
100 PRINT "CALENDAR"
110 PRINT TNPUT:DOJHM.YYYY"
120 INPUT "DATE: "*$
200 LET D- VAL A$(1 TO 2)
210 LET M- VAl A$(4 TO 5|
220 LET J-VAL A$(7 TO 10)
230 IF M>2 THEN GO TO 260
240LETM-M+12:LET »1
260 LET N-0+2*M+ NT (.600000T(M+l))+> INT
(J/4HNT (J/100K INT (У400Н-2
270 LET N- INT |N/7-INT (N/7T7+0.5)
280 LET N-244+1
290 LET W$-"SASUMOTUWETHFR"
300 PRINT TODAY IS:";W$(N TO N+l)
Программа 3.12 "Венный*календарь.