СРЕДСТВА И МЕТОДЫ ОРГАНИЗАЦИИ ДИАЛОГА
В Бейсике
сильно развиты команды и функции ввода-вывода данных, позволяющие осуществлять диалог (интерактивный интерфейс) с пользователем.
Для осуществления клавиатурного управления программой, помимо уже известных операторов ввода INPUT и вывода PRINT, используют функцию INPUT$(n), возвращающею значение введенной символьной строки из п символов с ожиданием, функцию INKEYS, принимающею символьное значение нажатой клавиши без ожидания, функции STICK(n), STRIG(O), определяющие коды стрелок или направления джойстика (внешнего управляющего устройства для компьютерных игр и тренажеров).
Часто при разработке компьютерных программ необходимо использовать коды клавиш в ASCI-представлении. Следующая программа печатает код нажатой клавиши и может оказаться полезной при отсутствии под рукой таблицы ASCI кодов.
Программа 77 5 ' ************ коды символов ************
10 cls
20 f$ =
INPUT$(1)
30 PRINT "символ="; f$; "код="; ASC(f$)
40 PRINT 50 GOTO 20
Полную таблицу кодов символов можно получить и другим способом, см. программу 78.
Программа 78 5 ************ до коду печать символа **************
10 FOR i = 1 ТО 256
20 PRINT "код="; i, "символ="; CHR$(i)
30 a$ = INPUT$(1)
40 NEXT I
Функцию INPUTS часто используют для приостановки выполнения программы до нажатия любой клавиши:
п г$ = INPUTS(l): IF r$ = "" THEN n
В отличие от оператора INPLT ф\ нкцпя не ставит знак "?"и не высвечивает вводимые символы. Это свойство удобно использовать для защиты доступа к какой-либо информации. В следующем примере демонстрируется фрагмент проверки «своего» клиента с помощью пароля. Если при вводе четырехсимвольного пароля ("") трижды допущена ошибка, программа приостанавливает работу.
Программа 79 ;
5 ********** пароль *********'**
7 CLS
8 PRINT "нажми любую клавишу"
9 r$=INPUT$(l) : IF r$=""THEN 9
10 code$ = "1996" : k = О
20 INPUT "Имя"; а$
30 PRINT "Пароль"
40 р$ = INPUT$(4)
50 IF p$ = code$ THEN GOTO 80
60 k = k + 1 70 IF k < 3 THEN GOTO 30 ELSE PRINT "До свидания" : END
80 . PRINT 90 PRINT a$, "добро пожаловать"
100 END
С помощью строковой переменной INKEYS аналогично можно осуществлять временную задержку программы до нажатия любой клавиши:
n sS=INKEYS: IF sS=""THEN n
Ниже приведен пример назначения некоторых клавиш, управляющих процессом рисования точек (простейший графический редактор). Здесь код 27 (строка 20) означает клавишу Esc.
Программа 80
•^ i ********** простейший графический редактор ************ 5 SCREEN 2
6 х =
100: у = 100: h = 2
7 PSET (х, у)
10 g$ = INKEY$
20 IF g$ = CHR$(27) THEN 80
30 IF g$ = "A" OR g$ = "a " THEN х = х - h
40 IF g$ = "S" OR g$ = "s " THEN х = х + h
50 IF g$ = "Z" OR g$ = "z" THEN у = у + h
60 IF g$ = "W" OR g$ = "w" THEN у = у - h
70 GOTO 7
80 END
При разработке компьютерных программ полезно бывает использовать функциональные клавиши в качестве «горячих» (НОТ KEY). Назначение команд функциональным клавишам осуществляет оператор KEY. Его работу можно изучить по следующей демонстрационной программе.
Программа 81
5 ' ********** назначение функциональных клавиш ********
10 FOR i = 1 ТО 10
20 KEY i, "+ STR$(i)
30 NEXT i
40 KEY 30, "
50 KEY 31, "+ CHR$(13)
60 KEY LIST
70 KEY ON
80 r$ = INPUT$(1): IF r$ = ""THEN 80