Различные приемы «зависания» программы в режиме выполнения
Оформим «зависание» программ (более подробно об этом термине рассказывается в предыдущем параграфе) в виде отдельных подпрограмм. Первая версия «зависания» основана на использовании функций instat (проверке наличия в буфере клавиатуры символа от нажатия какой-либо клавиши):
zavis1: rem первая версия «зависания» while not instat ‘ пока буфер пуст locate 5,10:print “для продолжения нажмите любую клавишу” ‘ высвечено сообщение wend c$= inkey$ ‘ символ от нажатия любой клавиши считывается в символьную переменную c $, буфер очищается return |
Вторая версия «зависания» аналогична первой, но не использует функцию instat:
zavis2: c$=”” ‘ c $ - переменная, в которую записан символ от нажатия какой-либо клавиши, сначала заноситься пусто locate 24,10:print “для продолжения нажмите любую клавишу” do c$= inkey$ loop until c$<>”” return |
Третья версия «зависания» основана на диалоге работающей и задающей вопросы программы и возможных ответах пользователя:
zavis3: rem третья версия «зависания» - диалог с пользователем print “Если хотите ответить ДА, то нажмите клавиши Y или Д” print “Если хотите ответить НЕТ, то нажмите клавиши N или Н” answer$=”” ‘ символьная переменная answer $, в которой формируется ответ пользователя, сначала в эту переменную записывается «пусто» while answer$=”” or instr (“YyNn”,answer$)=0 ‘анализируются различные ответы пользователя в различных регистрах клавиатуры input answer$ wend return |
|
|
Четвертая версия реализует «зависание» программы до тех пор, пока пользователь не нажимает определенную (конкретную) клавишу. Здесь используется встроенная функция по обработке символьных переменных chr$, преобразующая коды ASCII в соответствующие символы. Рассмотрим пример, где продолжение работы программы осуществляется только после нажатия клавиши Enter (код 13):
zavis3: rem четвертая версия «зависания» программы – продолжение по нажатию клавиши Enter do if instat then c$=inkey$ loop until c$=chr$(13) return |
Если есть необходимость «очистить» символ, ранее введенный с клавиатуры, то можно использовать следующий фрагмент:
…………
c$=chr(0)
…………
Формирование меню и работа с ним
При построении программ сложной структуры разработчик стремиться создать удобную для работы программу, рассчитанную на обслуживание пользователей не специалистов в области информатики и ЭВМ. Для этого часто используется прием формирования так называемого меню – перечня (таблицы) возможных действий пользователя, отражающих значение тех или иных подпрограмм (процедур), используемых в программе. Меню высвечено на экране монитора, и пользователь выбирает тот или иной пункт меню для продолжения работы программы. Выбор (фиксация) пункта меню достигается либо указанием конкретного номера, либо установкой маркера на соответствующий пункт меню, либо нажатием какой-либо клавиши (чаще функциональной F1, F2,….., F12), например:
|
|
Меню 1. сортировка массива – F1 2. гистограмма – F2 3. таблица результатов – F3 4. выход – F4 для продолжения работы нажмите функциональную клавишу: F1 - : - F4 |
Основные операторы формирования меню
Двенадцать функциональных (программируемых) клавиш ПК используются для формирования не просто ASCII-кода, а целых последовательностей символов. Эти последовательности генерируются системной подпрограммой обработки прерываний от функциональной клавиатуры, а вид последовательности может задаваться пользователем. После запуска ТБ функциональным клавишам назначаются стандартные последовательности символов – значения функциональных клавиш – и на 25 строке дисплея высвечивается «строка подсказки (помощи)», в которой для каждой клавиши указаны первые шесть символов этого назначения. Для работы со значениями функциональных клавиш используется оператор key, который имеет три формы:
1. key n , c $ - определение функциональной клавиши;
|
|
2. key { on ! off ! list } – включение (высвечивание)или выключение (гашение) строки подсказки;
3. key n , chr $( c )+ chr ( k ) – определение комбинации клавиш.
Здесь под n подразумевается номер функциональной клавиши, клавиши управления курсором, а также номер комбинации клавиш, одна из которых специальная: shift , ctrl , alt и т. п. приведем таблицу принятых соглашений о нумерации клавиш в ТБ:
n | клавиша |
1 - : - 10 | функциональные клавиши F1 - : - F10 |
11 | стрелка вверх |
12 | стрелка влево |
13 | стрелка вправо |
14 | стрелка вниз |
15 - : - 25 | клавиши, определяемые 3-й формой оператора key |
30 - : - 31 | функциональные клавиши F11 - : - F12 |
Оператор key n , c $
Оператор назначает для функциональной клавиши, номер которой задан числовой константой n (n=1 - : - 10, 30, 31), новое значение, определяемое символьным выражением c$ с длинной не более 15 символов. Первые 6 значений c $ могут быть высвечены в строке подсказок (25 строка экрана дисплея), например:
…………….. key 3,”п/п#1” ‘ …………… | функциональной клавише F 3 ставиться в соответствие работа с первой подпрограммой |
После символьного выражения c $ можно записывать дополнение + chr $(13), которое означает, что после определения функциональной клавиши выполняется команда ввода, так как код 13 является клавишей Enter, этим исключается необходимость нажатия на саму клавишу, например:
|
|
………………………….
key on
key 10, “system”
key 9, “key list”+chr$(13)
…………………………..
В этом примере при нажатии клавиши F 9 в строке подсказки появляется команда key list и одновременное ее выполнение, при нажатии клавиши F 10 на экране появляется название команды system, но она может быть выполнена только, если дополнительно нажать клавишу Enter
Оператор key {on ! off ! list}
Данный оператор:
- включает (высвечивает) строку подсказок, если используется дополнение on (то первые 6 символов, что были записаны в символьном выражении c $ оператора key n). При этом 25 строка недоступна для вывода, попытка установить курсор оператором locate приводит к ошибке;
- отключает (гасит) строку подсказок, если записано дополнение off, но не отменяет эти значения;
- выводит на экран дисплея (в столбик) все функциональные клавиши, которым приданы новые значения, то есть печатается содержимое символьной переменной c $ без сокращения, например:
…………………
key 1, “п/п#1”
key 2, “график”
key on
…………………
На 25 строке экрана дисплея появляется следующая информация:
………………………………………………………………………. 1п/п #1 2 грфик 3…………………………….0 |
Оператор key n, chr$(c)+chr(k)
Оператор предназначен для определения комбинации клавиш, которая будет вызывать прерывания (а в дальнейшем это прерывание будет обрабатываться).
Здесь:
1. n – числовая часть в диапазоне от 15 до 25 включительно;
2. с – шестнадцатеричная константа, которая определяет специальную клавишу;
3. k - шестнадцатеричная константа, которая определяет расширенный код ASCII любой клавиши в диапазоне от1 до 83, за исключением значений от 59 до 68 (функциональные клавиши), 72, 75, 77, 80 (клавиши управления курсором).
Шестнадцатеричные константы в ТБ записываются с символом & H, за которым следуют шестнадцатеричные цифры. Приведем таблицу соответствия специальных клавиш и их шестнадцатеричных констант:
клавиша | шестнадцатеричная константа |
правый Shift | &H01 |
левый Shift | &H02 |
любой Shift | &H03 |
Ctrl | &H04 |
Alt | &H08 |
Num Lock | &H20 |
Caps Lock | &H40 |
Левый и правый Shift в ТБ не различаются, поэтому для отслеживания нажатий Shift можно использовать в качестве константы &H01 или &H02, или &H03, что соответствует нажатию любой из этих клавиш.
Для организации обработки прерываний от функциональных клавиш в программном режиме используются операторы key ( n ) и on key.
Дата добавления: 2021-11-30; просмотров: 24; Мы поможем в написании вашей работы! |
Мы поможем в написании ваших работ!