Ввод с клавиатуры

   Оператор INPUT список_переменных принимает числовые или текстовые значения с клавиатуры и присваивает их переменным из списка. Программа, дойдя до оператора INPUT, выводит на дисплей знак вопроса и ждет ввода с клавиатуры. Для общения с клавиатурой используется небольшая область памяти (буфер клавиатуры). При нажатии клавиши соответствующий символ (точнее, его код) попадает в буфер клавиатуры, оператор INPUT забирает его оттуда и отображает на экране. Ввод заканчивается при нажатии клавиши Enter.

   Имена переменных, предназначенных для хранения текстовых значений, должны заканчиваться знаком $. Имена переменных, хранящих числовые значения, могут в зависимости от типа значения заканчиваться знаком !, # или &. При отсутствии этих знаков в имени переменной считается, что она имеет тип, соответствующий восклицательному знаку. (Подробнее о типах данных рассказано в соответствующем разделе.)

   Примеры:

А)   В программе   

INPUT x, y

 

PRINT x, y

 

 

На дисплее   

? 30, 47 ¿

 

30   47

   В результате переменная “x” получит значение 30, а переменная “y” - значение 47.

   Если повторно запустить программу и ввести только одно значение, например, 30 , то Quick Basic предложит повторить ввод - выдаст сообщение “Redo from start”. То же самое сообщение мы получим, если захотим ввести значений больше, чем переменных в списке оператора INPUT.

Б)   В программе   

INPUT word$

 

PRINT word$

 

 

На дисплее   

? Антон ¿

 

Антон

   В результате переменная word$ будет содержать слово “Антон”. Обратите внимание, что вводимое слово в кавычки не берется, хотя в операторе присваивания word$ = “Антон” они обязательны!

   Запустим программу повторно и наберем на клавиатуре слово “Сергей”. К нашему удивлению, буква “р” не появляется на экране, хотя мы изо всех сил жмем ее на клавиатуре. Увы! Стандартными средствами языка ввести с клавиатуры строчную русскую “р” невозможно. (Мы вернемся к этой проблеме в разделе “Дополнительные возможности”.)

   Можно ли ввести число в переменную word$? Давайте в ответ на приглашение введем число 12. Программа “ответит” тем же значением, т.е. переменная word$ содержит сейчас текстовое (но не числовое!) значение “12”. Операции над текстовыми значениями (строками символов) выполняются совсем по другому, чем над числовыми. Выполним, например, программу:

 
n = 12 + 3
n$ = “12” + “3”
PRINT n, n$

   На дисплей будут выведены два значения: 15 и 123. Но если первое значение - число, полученное в результате арифметической операции сложения, то второе - текстовая константа “123”, которая получена в результата особой операции “склеивания” двух строк.

   Из строки символов можно выделить любую ее часть с помощью функции MID$:

   часть = MID$(строка, начальная_позиция, количество_символов)

   Оператор INPUT$(число) вводит заданное число символов без их отображения на экране. Нажимать Enter после ввода не требуется.

   Этот оператор удобно использовать при вводе пароля. Пример:

 
‘Запрос пароля
 
password$ = INPUT$(4)
IF password$ <> “aq” + CHR$(8) + CHR$(27)  THEN STOP
 
‘Основная программа
   ...

   Чтобы запустить основную программу, нужно нажать две буквенных клавиши - “a” и ”q. затем клавиши Backspace и Esc, коды которых (8 и 27) преобразуются функцией CHR$ в символы.

   С помощью операторов INPUT и INPUT$ нельзя обработать нажатие ряда клавиш: функциональных, клавиш управления курсором, Home, End, PageUp, PageDn и некоторых других. Для этого используется функция INKEY$. Эта функция берет символы из буфера клавиатуры (если он не пуст!), но не ждет нажатия клавиши. Если буфер пуст, INKEY$ возвращает значение “пустая строка” - две кавычки, между которыми ничего нет.

   При нажатии клавиши в буфер клавиатуры помещается одно или два числа - код клавиши. Если код клавиши состоит из двух чисел, то первое число обязательно равно 0. Коды некоторых клавиш приведены в таблице.

Клавиша

BS

Enter

Esc

пробел

+

2

G

g

я

Код

8

13

27

32

43

50

71

103

239

Клавиша

F1

F2

Home

é

PageUp

ç

è

ê

Ins

Код

0; 59

0; 60

0; 71

0; 72

0; 73

0; 75

0; 77

0; 80

0; 82

   Функция INKEY$ возвращает символ, соответствующий коду в буфере клавиатуры. Если она обнаруживает 0 в буфере клавиатуры, то возвращается “склейка” двух символов - CHR$(0) и следующего за ним.

Клавиши Alt, Shift и Ctrl являются клавишами-модификаторами: они изменяют код нажатой одновременно с ними клавиши, но сами не имеют кода. Например, клавиша F2, нажатая с клавишей Shift, генерирует код 0; 85, с клавишей Ctrl - 0; 95, с клавишей Alt - 0; 105.

   Задача. Написать программу, которая выводит на экран код нажатой клавиши. Выход из программы - по клавише Esc.

Решение. Для ввода символа воспользуемся уже известной нам функцией INKEY$. а для перевода символа в код - функцией ASC:

код = ASC(символ).

   Запишем алгоритм работы программы:

  1. Ждем нажатия клавиши.
  2. Выделяем первый символ полученной (из буфера клавиатуры) строки и выводим его код на печать.
  3. Если первый символ строки равен CHR$(27), то заканчиваем работу.
  4. Если первый символ строки равен CHR$(0), то выделяем и печатаем код второго символа.
  5. Переходим к пункту 1.
 
‘------------------Программа ------------------
 
‘Ждем нажатия клавиши
 
10 s$ = INKEY$: IF s$ = "" THEN GOTO 10
 
‘Выделяем и печатаем первый символ
 
first$ = MID$(s$, 1, 1)
PRINT ASC(first$)
 
‘Анализируем первый символ
 
IF first$ = CHR$(27) THEN STOP
 
‘Выделяем и печатаем второй символ
 
IF first$ = CHR$(0) THEN
   next$ = MID$(s$, 2, 1)
   PRINT ASC(next$)
END IF
GOTO 10

 

Сайт создан в системе uCoz