СПЕКТРУМ В ШКОЛЕ
Сегодня мы предлагаем Вашему вниманию несложную экзаменующую программу, которая может быть использована для проверки элементарных знаний учащихся по любому предмету. Она пригодится и тем, у кого есть маленькие дети. Опыт показал, что при всей ее простоте она привлекает к себе детское внимание. Программа воспринимается ими, как игра "Викторина". Может так случиться, что именно с этой программы Ваш ребенок начнет свой путь в большую компьютеризацию.
Программа управляется от несложной системы меню и не требует никаких инструкций по работе - она самообеспечена. В ней есть два основных режима работы:
1. Режим тестирования.
2. Режим заполнения вопросов и ответов.
После первого запуска командой RUN программа еще не содержит ни вопросов, ни ответов. Сначала вы должны их ввести. Вы можете иметь 5 серий (вариантов) вопросов и ответов на разные темы. Каждая серия содержит 8 вопросов и ответов.
Выбрав, какой вариант Вы хотите заполнить, вводите вопросы и ответы по указанию от компьютера. Закончив заполнение варианта, проверьте его на отсутствие ошибок. Если не все в порядке, Вам надо будет снова войти в этот режим. На этот раз компьютер предложит Вам выбор:
1 - внести изменения
2 - заменить вариант
В режиме тестирования компьютер предложит учащемуся выбрать вариант, с которым он хочет поработать. Разумеется, для выбора будут предложены только те варианты, которые уже заполнены вопросами и ответами.
Учащийся сам может выбрать, в каком порядке он будет отвечать на предложенные вопросы. В случае правильного ответа на экране появляется веселая физиономия и играет веселая музыка. При неправильном ответе и музыка и физиономия становятся печальными.
При вводе программы у Вас будут, конечно, проблемы с вводом символов русского алфавита. Мы не можем сделать это за Вас, поскольку не можем заранее знать Ваших возможностей. Многие работают на компьютерах с русифицированным ПЗУ и имеют команды для переключения с одного шрифта на другой. У некоторых даже есть как бы дополнительный символьный регистр. Если у Вас ничего в этом смысле в компьютере нет, то Вам надо русифицировать компьютер программно. Как это делается, мы уже многократно писали, но должны предостеречь Вас от русификации путем использования символов графики пользователя UDG. Дело в том, что программа уже использует графические символа от "А" до "F" для изображения "физиономий". Эти символы в распечатке программы подчеркнуты и набирать их следует в графическом режиме. Блок данных, задающий "конструкцию" этих символов, расположен в строках 1000. . . 1050.
Может быть, Вы решите отказаться от изображения этих "физиономий" и тогда вернете возможность использования символов UDG для изображения прописных букв русского алфавита. В этом варианте тоже есть своя прелесть, т.к. тогда возможны двуязычные экраны и Вы сможете применить программу для проверки знаний по иностранному языку.
Issue #14: Krieg Der Sterne
Может быть, Вы захотите организовать несколько банков символов графики пользователя и оперативно переключаться между ними, когда это надо. Как это делается, мы писали в недавно вышедшем первом томе, посвященном графике "Спектрума" -"Элементарная графика" (М:,"ИНФОРКОМ", 1992г., 208 стр.).
Но по всей видимости, Вам лучше русифицировать компьютер полной сменой символьного набора. Из наших последних публикации на эту тему посмотрите пожалуйста статью Алексеева А.Г., посвящённую полной русификации программы "MASTERFILE-09" в "ZX-PEBЮ-92" на стр. 29-32,71-75. Полезными будут советы этого автора, приведенные и в данном выпуске "ZX-РЕВЮ" в статье "Профессиональный подход".
При вводе и отладке программы обратите особое внимание на следующие обстоятельства:
1. Подчеркнутые символы А..^ являются символами графики пользователя UDG и вводиться должны в графическом режиме (курсор G).
2. Только первый запуск программы можно выполнять командой RUN. После того, как вы заполните хотя бы одну серию вопросов и ответов, эту команду уже подавать нельзя, так как по команде RUN обновляется содержимое программных переменных и массивов и Вам придется снова заполнять вопросы и ответы.
При втором и последующем запусках вместо RUN давайте команду GO TO 70.
ВИКТОРИНА
10 REM здесь Вы можете разместить 20 REM необходимые Вам 30 REM процедуры, например для 40 REM русификации компьютера.
49 REM
50 DIM h$(5,32): DIM q$(5,8.28): DIM a$(5,8,13): DIM p$(8): DIM t$(5): DIM e$*(1) 60 LET t$="O0000"
70 BORDER 7: PAPER 7: INK 0: CLS
80 RESTORE 1000: GO SUB 1000: LET new=0
90 REM *** Начало работы
100 DIM c$(8): CLS
120 FOR y=1 TO 13 STEP 6
130 FOR x=1 TO 29 3TKP 28
140 PRINT AT y,x; INK 4;"AB";AT y+1,x;"CD";AT y+3,x; INK 2; "AB"; AT y+4,x;"EF" 150 NEXT x 160 NEXT y
170 PRINT INK 4;AT 19,1: "AB"; AТ 20,1 ;"CD"; AT 19,29; "AB"; AT 20,29;"CD"
180 PRINT AT 8,5; " Выберите режим работы:"
190 PRINT AT 11,4; "1 = Ответы на вопросы"
200 PRINT AT 13,4; "2 - Ввод новых вопросов"
210 PRINT AT 15,4; "3 = Конец работы"
220 PRINT AT 19,5; BRIGHT 1;"Нажмите нужную клавшу"
230 IF INKEY$="1" THEN GO TO 280
240 IF INKEY$="2" THEN GO TO 600
250 IF INKEY$="3" THEN GO TO 900
260 GO TO 220
270 REM
230 REM ** Ответы на вопросы** 281 REM
290 CLS : INPUT "": PRINT AT 0,7; BRIGHT 1; "Подумай и ответь" 300 GO SUB 1300
310 PAUSE 30: PRINT #0;AT 0,0;"Введи номер варианта " 320 GO SUB 1210: LET n=i: IF n>5 THEN GO TO 320
330 IF t$(n)="0" THEN PRINT AT 6,6; FLASH 1; "Этот вариант не готов": INPUT "": PAUSE 150:
GO TO 90 340 CLS: LET p$=" 12345678" 350 FOR x=1 TO 8
360 LET r=INT (RND*8)+1: IF p$(r)<>" " THEN GO TO 380
370 GO TO 360
380 IF x=r THEN GO TO 360
390 LET c$(x)=p$(r): LET p$(r)=" ": NEXT x
400 GO SUB 1100: PRINT INK 1;AT 0, 0;h$(n): FOR x=1 TO 8
410 PRINT AT 2*x+2,0;x;AT 2*x+2,2;q$(n,x)(1 TO 14);AT 2*x+3,2;q$(n, x) (15 TO 28);AT
2*x+2,17; a$(n, VAL c$(x));AT 2*x+2,31;x 420 NEXT X
430 LET p$="12345678": LET t=0
440 INPUT "": PRINT #0;AT 0, 0; "Номер вопроса ?"
450 GO SUB 1210: LET q=i
460 IF p$(q)=" " THEN PRINT #0;AT 0,0; BRIGHT 1;"Ha этот вопрос Вы уже ответили": ВЕЕР 1,12: PAUSE 50: GO TO 440 470 PRINT BRIGHT 1: AT 2*q+2,2; q$(n,q)(1 TO 14);AT 2*q+3,2;q$(n,q)(15 TO 28) 480 INPUT "": PAUSE 30: PRINT #0; AT 0,0; "Правильный ответ ?" 490 GO SUB 1210: LET a=i 500 PRINT AT 2*a+2,31; FLASH 1;a: PAUSE 50
510 IF VAL c$(a)=q THEN PRINT #0; AT 0.0; "Правильный ответ " ; INK 4;"AB CD": GO TO 530
520 PRINT #0;AT 0,0; "Нет, ответ неверный "; INK 2; "AB EF":
GO SUB 2200: PRINT AT 2*a+2,31;a: GO TO 480 530 PRINT AT 2*a+2,31;a;AT 2*a+2,17; BRIGHT 1;a$(n,VAL c$(a)):GO SUB 2000 540 PRINT AT 2*q+2,2;q$(n,q)(1 TO 14); AT 2*q+3,2;q$(n,q)(15 TO 28); AT 2*а+2,17; a$(n,VAL c$(a))
550 LET p$(q)=" ": LET t = t+1: IF t = 8 THEN GO TO 570 560 GO TO 440
570 INPUT "": PRINT#0;AT 0,0; BRIGHT 1; "Нажми любую клавишу" 580 PAUSE 0 590 GO TO 90
599 REM
600 REM**Ввод новых вопросов** 605 REM
610 CLS : PRINT AT 0,7; BRIGHT 1; "Ввод новых вопросов"
620 PRINT AT 2,0; "Эта программа может содержать до 5 вариантов вопросов и отве- тов.
Каждый вариант имеет номер" 625 PRINT AT 5,0; "от 1 до 5. Здесь вы можете узнать, какой вариант готов или внести
нужные изменения и дополнения." 630 GO SUB 1300: PRINT AT 19,3; "для выхода нажмите клавишу 6" 640 INPUT "": PRINT #0; AT 0,0;" Какой вариант будем заполнять?" 650 GO SUB 1210: LET n=i: IF n>6 THEN GO TO 650 660 INPUT "": IF n=6 THEN GO TO 90 670 IF t$(n)="0" THEN GO TO 790
680 INPUT "Исправление или замена? Нажмите i или z (прочие клавиши - конец."; LINE е$
690 IF е$ = "z" THEN GO TO 790
700 IF е$ <>"i" THEN GO TO 90
710 CLS : GO SUB 1100: PRINT INK 1;AT 0,0;h$(n)
720 FOR x=1 TO 8: GO SUB 880: GO SUB 890: NEXT x
730 INPUT "Какой вопрос будем исправлять? (Клавиша 9 - конец работы)"; х
740 LET x=INT x: IF x<1 OR х>9 THEN GO TO 730
750 IF х=9 THEN GO TO 90
760 PRINT AT 2*x+2,0; BRIGHT 1;x: GO SUB 860
770 PRINT AT 2*x+2,31; BRIGHT 1;x: GO SUB 870
780 LET new=1: GO TO 730
790 CLS : INPUT "Заголовок (до 32 букв)? ", LINE h$(n) 800 GO SUB 1100: PRINT INK 1;AT 0,0;h$(n) 810 FOR x=1 TO 8: GO SUB 860: G0 SUB 870: NEXT x 820 LET t$(n)="1": LET new=1
830 INPUT "": PRINT #0;AT 0,0; BRIGHT 1: "Нажмите любую клавишу" 840 PAUSE 0 850 GO TO 90
860 INPUT "Вопрос (до 28 букв)? ", LINE q$(n,x): GO SUB 880: RETURN
870 INPUT "Ответ (до 13 символов)? ", LINE a$(n,x): GO SUB 890: RETURN
880 PRINT AT 2*x+2,0;x;AT 2*x+2,2;q$(n,x)(1 TO 14); AT 2*x+3,2;q$(n,x)(15 TO 28): RETURN
890 PRINT AT 2*x+2,17: a$(n,x);AT 2*x+2,31; x: RETURN
899 REM
900 REM ** Конец программы ** 905 REM
910 IF new THEN SAVE "Victorina" LINE 70: PAUSE 30
920 CLS : STOP 990 REM
995 REM *Данные UDG-графики*
999 REM
1000 DATA "a",7,31,48,96,76,204,192,193 1010 DATA "b", 224,248,12,6,50,51,3,131 1020 DATA "c", 193,192,216,79,99,46,31,7 1030 DATA "d",131,3,27,242,198,12,248,224 1040 DATA "e",193,192,195,71,108,,46,31,7 1050 DATA "f",131,3,195,226,54,12,248,224 1060 FOR x=1 TO 6: READ e$
1070 FOR y=0 TO 7
1080 READ i: POKE USR e$+y,i
1090 NEXT y: NEXT x: RETURN
1095 REM
1100 REM **Дизайн экрана$**
1101 REM
1102 PLOT 0,164: DRAW 255,0 1104 PLOT 0,163: DRAW 255,0 1110 PLOT 0,148: DRAW 255,0 1120 PLOT 0,147: DRAW 255,0 1130 PLOT 0,10: DRAW 255,0 1140 PLOT 0,11: DRAW 255,0 1145 PLOT 0,148: DRAW 0,15 1150 PLOT 131,11: DRAW 0,152 1160 PLOT 132,11: DRAW 0,152 1165 PLOT 255,146: DRAW 0,15 1170 PLOT 11,11: DRAW 0,136 1180 PLOT 244,11: DRAW 0,136
1190 PRINT INK 1;AT 2,4;"ВОПРОСЫ"; АТ 2,20; "ОТВЕТЫ"
1200 RETURN 1204 REM
1206 REM *Прием нажатой клавиши*
1208 REM
1210 LET e$=INKEY$
1220 LET i=CODE e$-48
1230 IF i>0 AND i<9 THEN RETURN
1240 GO TO 1210
1299 REM
1300 REM **Готовность данных** 1305 REM
1310 PRINT AT 11,8; BRIGHT 1; " ВАРИАНТ ГОТОВНОСТЬ "
1320 FOR i=1 TO 5
1330 PRINT AT i+12, 11;i;AT i+12,19;("ГОТОВ" AND t$(i)="1")+("HE ГОТОВ" AND t$(i)="0")
1340 NEXT i
1350 RETURN
1999 REM
2000 REM** Правильный ответ** 2005 REM
2010 LET w=0.07
2020 BEEP 3*w,12: BEEP w,16: BEEP 2*w,14: BEEP w,17: BEEP 3*w,16: BEEP 5*w,12
2030 PAUSE 100
2040 RETURN
2199 REM
2200 REM **неправильный ответ** 2205 REM
2210 LET w=0.1
2220 BEEP 1.5*w,7: BEEP w,4: BEEP 1.5*w,0: BEEP w,4: BEEP .8*w,2: BEEP 2*w,2
2230 RETURN