46398 (665535), страница 4
Текст из файла (страница 4)
Комплекс обучающих программ по теме “Векторы на плоскости” состоит из следующих программ:
-
Сложение векторов. Учащемуся предлагается построить два вектора на координатной плоскости, ввести их координаты и посчитать координаты вектора суммы. Затем учащемуся предлагается построить вектор суммы.
-
Вычитание векторов. Учащемуся предлагается построить два вектора на координатной плоскости, ввести их координаты и посчитать координаты вектора разности. Затем учащемуся предлагается найденный вектор суммы.
-
Умножение вектора на число. Учащемуся предлагается построить вектора на координатной плоскости, ввести его координаты и посчитать координаты вектора равного произведению построенного вектора и числу загаданному компьютером. Затем учащемуся предлагается построить вектор произведения.
Каждая программа состоит из 10 однотипных заданий.
Все три программы имеют одинаковый внешний вид.
При входе в выбранную программу в правой части экрана появляется задание которое необходимо выполнить. В левой части экрана появляется изображение координатной плоскости. В правом верхнем углу нарисовано 10 яблок, которые являются индикатором степени выполняемости заданий. Если в процессе выполнения задания учащийся не допускает ошибок, то яблоко закрашивается в красный цвет, если учащийся допустил 1 ошибку яблоко приобретает желтую окраску, 2 ошибки - зеленый цвет, 3 ошибки - синий, 4 и более ошибок - белый.
Рассмотрим вариант программы (Умножение вектора на число). При запуске программы на в левой части экрана изображается координатная плоскость и стрелочка-курсор. Учащийся при помощи клавиш управления курсором перемещает стрелочку до места, где он предполагает отметить начало вектора и нажимает клавишу <ПРОБЕЛ>, тем самым отмечая на координатной плоскости начало вектора. Затем аналогичным образом он отмечает конец вектора. После этого все события переходят в правую часть экрана, где испытуемому предлагается указать координаты построенного вектора. При неправильном указании координат испытуемому предлагается повторить ввод координат.
На следующем этапе работы с программой учащемуся предлагается ввести координаты вектора произведения равного произведению построенного испытуемым вектора на число загаданное компьютером. При правильном построении на экране появляется сообщение о количестве ошибок и предлагается выполнить следующее задание.
Выйти из программы можно нажав клавишу .
Программы построены таким образом, что от пользователя практически не требуется никаких навыков работы с персональным компьютером, благодаря удачному пользовательскому интерфейсу. В каждой программе выходными данными является количество ошибок за тестирование. Количество ошибок не говорит о точном оценивании знаний учащегося, так как неизвестен “уровень претензий” предъявляемых к тестируемому.
Благодаря обширной системе подсказок пользователь может в том или ином месте программы нажав клавишу получить всегда хорошую помощь в виде сообщения на экране.
Программа написана на языке программирования Qbasic. Программа требует для работы персональной компьютер совместимый с IBM PC 386 и выше. Обязательно должен быть загружен драйвер кириллицы.
3. Приложения
Приложение №1
Файл - modul.bas
REM ГЛАВНОЕ МЕНЮ
CLS
FILEHLP$ = "GLMENU.HLP"
menuha:
'вывод на экран меню
baz$ = "menu.dat"
dlin = 30
m = 1
GOSUB menu
IF rez1$ = "Работа в системе" THEN GOTO rmp
IF cur = 2 THEN GOSUB reklama
IF rez1$ = "Выход" THEN CLS : SYSTEM
GOTO menuha
rmp:
REM вывод на экран меню с темами
baz$ = "prog.dat"
baz$ = parh$ + baz$
dlin = 30
GOSUB menu
finalshow:
OPEN "bat.bat" FOR OUTPUT AS #1
FOR i = 1 TO LEN(rez2$)
IF MID$(rez2$, i, 1) = "." THEN rash$ = MID$(rez2$, i + 1, 3)
NEXT i
PRINT #1, "@echo off "
IF rash$ = "bas" THEN PRINT #1, "@qbasic.exe /run "; rez2$
IF rash$ = "com" OR rash$ = "exe" OR rash$ = "bat" THEN PRINT #1, rez2$
PRINT #1, "@del bat.bat"
CLOSE #1
CLS
SYSTEM
reklama:
OPEN FILEHLP$ FOR INPUT AS #1
S = 0
DO
ON ERROR GOTO 0
LINE INPUT #1, stran$
S = S + 1
LOOP UNTIL EOF(1)
CLOSE #1
IF FIX(S / 18) >= (S / 18) THEN KS = FIX(S / 18) ELSE KS = FIX(S / 18) + 1
DIM stran$(S)
OPEN FILEHLP$ FOR INPUT AS #1
FOR i = 1 TO S
ON ERROR GOTO 0
LINE INPUT #1, stran$(i)
NEXT i
CLOSE #1
NS = 1
GOSUB stran
obrabotka:
A$ = INKEY$
IF A$ = CHR$(0) + CHR$(73) THEN NS = NS - 1: GOSUB stran
IF A$ = CHR$(0) + CHR$(81) THEN NS = NS + 1: GOSUB stran
IF A$ = CHR$(27) THEN ERASE stran$: RETURN
GOTO obrabotka
stran:
IF NS < 1 THEN NS = 1: RETURN
IF NS > KS THEN NS = KS: RETURN
n = 18 * NS
'SLC:
LOCATE 1, 1
PRINT "г"; STRING$(64, "="); "T=============¬"
PRINT "¦"; STRING$(15, " "); : COLOR 15, 0: PRINT "ИНФОРМАЦИОННО - СПРАВОЧНАЯ СИСТЕМА"; : COLOR 7, 0: PRINT STRING$(15, " ");
IF NS < 10 THEN PRINT "¦ Страница "; NS; "¦" ELSE PRINT "¦ Страница"; NS; "¦"
PRINT "¦"; STRING$(64, " "); "L=============¦"
FOR i = n - 17 TO n
IF i > S THEN PRINT "¦"; STRING$(78, " "); "¦" ELSE PRINT "¦ "; stran$(i); STRING$((76 - LEN(stran$(i))), " "); "¦"
NEXT i
PRINT "L"; STRING$(78, "="); "-"
COLOR 1, 7: PRINT " Выход - Esc ";
IF NS = 1 THEN COLOR 8, 7 ELSE COLOR 1, 7
PRINT " Предыдущая страница - PageUp ";
IF NS = KS THEN COLOR 8, 7 ELSE COLOR 1, 7
PRINT " Следующая страница - PageDown "
COLOR 7, 0
RETURN
menu:
COLOR 7, 0
CLS
OPEN baz$ FOR INPUT AS #2
DIM mas$(150, 2)
INPUT #2, R$
i = 0
DO
i = i + 1
INPUT #2, mas$(i, 1)
INPUT #2, mas$(i, 2)
LOOP UNTIL EOF(2)
CLOSE #2
m = i
IF m > 10 THEN m = 10
R = INT((25 - m) / 2)
nashalo:
u = 1: cur = 1: cur1 = 1
uold = LEN(R$): uold = dlin - uold: uuold = INT(uold / 2): uuuold = uold - uuold
R1$ = STRING$(uuuold, "=") + R$ + STRING$(uuold, "=") ' Формирование заголовка таблицы
tablisha:
LOCATE R, 1
PRINT STRING$(21, " "); "г"; R1$; "¬"
PRINT STRING$(21, " "); "¦"; STRING$(dlin, " "); "¦"
schet = 0
FOR t = u TO u + m - 1
schet = schet + 1
COLOR 7, 0: PRINT STRING$(21, " "); "¦";
IF cur1 = schet THEN COLOR 0, 7
' установка стандартной длинны фразы
uold = LEN(mas$(t, 1)): uold = dlin - uold: uuold = INT(uold / 2): uuuold = uold - uuold
t$ = STRING$(uuuold, " ") + mas$(t, 1) + STRING$(uuold, " ")
PRINT t$;
COLOR 7, 0: PRINT "¦"
NEXT t
PRINT STRING$(21, " "); "L"; STRING$(dlin, "="); "-"
GOSUB smotr
chetire:
kbd$ = INKEY$
flag = 0
SELECT CASE kbd$
CASE CHR$(0) + "H": cur = cur - 1: cur1 = cur1 - 1: flag = 1
CASE CHR$(0) + "P": cur = cur + 1: cur1 = cur1 + 1: flag = 1
CASE CHR$(0) + CHR$(61): GOTO dopoln
CASE CHR$(13): GOTO final
CASE CHR$(27): CLS : SYSTEM
END SELECT
IF flag = 0 THEN GOTO chetire
IF cur = 0 THEN u = i - m + 1: cur = i: cur1 = m: GOTO tablisha
IF cur = i + 1 THEN GOTO nashalo
IF cur1 = 0 THEN u = u - 1: cur1 = 1
IF cur1 = m + 1 THEN : u = u + 1: cur1 = m
GOTO tablisha
smotr:
LOCATE 1, 1: COLOR 15, 3: PRINT STRING$(80, " ")
ddl = (80 - LEN(mas$(cur, 2))) / 2
LOCATE 1, 1: COLOR 15, 3: PRINT STRING$(ddl, " "); mas$(cur, 2)
COLOR 7, 0
RETURN
final:
rez1$ = mas$(cur, 1)
rez2$ = mas$(cur, 2)
ERASE mas$
RETURN
dopoln:
CLS
LOCATE 10, 20: COLOR 7, 0: PRINT "Добавление новой темы в меню"
LOCATE 12, 10: COLOR 7, 0: PRINT "Для отмены нажмите или для продолжения"
mmm:
kbd$ = INKEY$
SELECT CASE kbd$
CASE CHR$(0) + CHR$(61): GOSUB pop
CASE CHR$(27): CLS : GOTO rmp
END SELECT
GOTO mmm
pop:
CLS
LOCATE 10, 10: COLOR 7, 0
PRINT "Введите название новой темы"
LOCATE 12, 10
PRINT "Введите имя файла"
COLOR 0, 7
LOCATE 10, 40: PRINT STRING$(31, " ")
LOCATE 12, 40: PRINT STRING$(31, " ")
LOCATE 10, 40: INPUT "", a1$
LOCATE 12, 40: INPUT "", a2$
ERASE mas$
CLS
OPEN baz$ FOR APPEND AS #1
PRINT #1, a1$
PRINT #1, a2$
CLOSE #1
GOTO rmp
Приложение №2
Файл - vector1.bas
REM СУММА ВЕКТОРОВ
'Константы
speed = 800 'Скорость
FILEHLP$ = "vector.hlp"
filerez$ = "vector.rez"
oshibka = 0 'Общее количество ошибок
k = 10 'Длина пера вектора
k1 = 3 'Ширина пера вектора
radius = 2 'Радиус начала вектора
zakr = 1 'Закраска начала вектора
zakrstr = 1 'Закраска стрелки вектора
c = 12 'Цвет стрелки - курсора
curx = 0: cury = 0 'Установка начальниых координат положения стрелки
DIM colora(10)
DIM slovo$(5)
DIM zapusk$(18)
SCREEN 9, , 0, 0
OPEN filerez$ FOR APPEND AS #3
PRINT #3, DATE$; " СТАРТ ПРОГРАММЫ - "; TIME$;
GOSUB coord 'Построение координатной плоскости
GOSUB zapusk 'Страничка с заданиями
FOR shag = 1 TO 10
PRINT #3, : PRINT #3, "Задание - "; shag
glupo = 0
GOSUB coord 'Построение координатной плоскости
p = 1: GOSUB slov
FOR ccc = 10 TO 13 STEP 3
GOSUB telo
IF ccc = 10 THEN abx = curx - curoldx: aby = cury - curoldy ELSE cdx = curx - curoldx: cdy = cury - curoldy
NEXT ccc
PRINT #3, "AB("; abx; ","; aby; ")"; TAB(15); "; CD("; cdx; ","; cdy; ")"; " ;"; TAB(34); "m("; cdx + abx; ", "; cdy + aby; ")";
GOSUB analis
NEXT shag
GOSUB coord
LOCATE 10, 53: PRINT "Вы допустили "; oshibka; " ошибок"
PRINT #3,
PRINT #3, "Количество допущенных ошибок - "; oshibka
PRINT #3,
CLOSE #3
DO WHILE INKEY$ = "": LOOP
GOTO alis
telo:
GOSUB preobr:
GOSUB zapomin ' Запоминает
GOSUB strelka ' Рисует стрелку
GOSUB vibor '
GOSUB oldstrelka ' Закрашивает место, где была стрелка
IF fl = 2 THEN fl = 0: RETURN
GOTO telo
vibor:
flag = 0
kbd$ = INKEY$
SELECT CASE kbd$
CASE CHR$(0) + "H": IF cury < 10 THEN cury = cury + 1: flag = 1
CASE CHR$(0) + "P": IF cury > -10 THEN cury = cury - 1: flag = 1
CASE CHR$(0) + "K": IF curx > -11 THEN curx = curx - 1: flag = 1
CASE CHR$(0) + "M": IF curx < 11 THEN curx = curx + 1: flag = 1
CASE CHR$(0) + CHR$(59): GOSUB reklama
CASE CHR$(32): GOSUB final: IF fl = 2 THEN RETURN
CASE CHR$(27): GOSUB vihod
END SELECT
IF flag = 0 THEN GOTO vibor
kx = x: ky = y
GOSUB preobr
RETURN
strelka:
'==== x y c ============ Рисует стрелку ========
PSET (x, y), c
DRAW "r6g2f4g2h4g2u6"
PAINT (x + 1, y + 1), c
PSET (x, y), 15
DRAW "r6g2f4g2"
RETURN
zapomin:
'==== x y ============ zap(9,9) ========
DIM zap(9, 9)
FOR i = 1 TO 9
FOR j = 1 TO 9
zap(i, j) = POINT(i + x - 1, j + y - 1)
NEXT j
NEXT i
RETURN
oldstrelka:
'==== kx ky zap(9,9) ==== Рисует ====
FOR i = 1 TO 9
FOR j = 1 TO 9
PSET (i + kx - 1, j + ky - 1), zap(i, j)
NEXT j
NEXT i
ERASE zap
RETURN
preobr:
x = curx * 16 + 203
y = 160 - cury * 14
RETURN
final:
kx = x: ky = y: GOSUB oldstrelka
IF fl = 1 THEN x2 = x: y2 = y: GOSUB strvect: IF ccc = 10 THEN p = 2: GOSUB slov ELSE p = 5: GOSUB slov
IF fl = 0 THEN curoldx = curx: curoldy = cury: x1 = x: y1 = y: CIRCLE (x, y), radius, ccc: IF zakr = 1 THEN PAINT (x, y), ccc
IF ccc = 10 AND fl = 0 THEN p = 3: GOSUB slov
IF ccc = 13 AND fl = 0 THEN p = 4: GOSUB slov
IF ccc = 14 AND fl = 0 THEN p = 6: GOSUB slov
fl = fl + 1
GOSUB zapomin: GOSUB strelka: RETURN
coord:
COLOR 15: CLS
'LINE (0, 0)-(639, 349), 15, B
LINE (10, 10)-(395, 311), 15, B
LINE (10, 10)-(394, 310), 7, B
LINE (400, 10)-(629, 311), 15, B
LINE (400, 10)-(628, 310), 7, B
FOR g = 27 TO 380 STEP 16
LINE (g, 15)-(g, 305), 8, B
NEXT g
FOR g = 20 TO 300 STEP 14
LINE (19, g)-(387, g), 8, B
NEXT g
FOR g = -10 TO 10 STEP 2
LOCATE 13, g * 2 + 25
IF g <> 0 THEN PRINT g
NEXT g
FOR g = -10 TO 10 STEP 2
LOCATE 12 - g, 24
PRINT g
NEXT g
LINE (19, 160)-(387, 160), 7, B
LINE (384, 158)-(387, 160), 7
LINE (384, 162)-(387, 160), 7
LINE (203, 15)-(203, 305), 7, B
LINE (200, 18)-(203, 15), 7
LINE (206, 18)-(203, 15), 7
LOCATE 2, 28















