Лекция: СРЕДСТВА И МЕТОДЫ ОРГАНИЗАЦИИ ДИАЛОГА
ВБейсике сильно развиты команды и функции ввода-вывода данных, позволяющие осуществлять диалог (интерактивный интерфейс) с пользователем.
Для осуществления клавиатурного управления программой, помимо уже известных операторов ввода 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