Различные приемы «зависания» программы в режиме выполнения



 

Оформим «зависание» программ (более подробно об этом термине рассказывается в предыдущем параграфе) в виде отдельных подпрограмм. Первая версия «зависания» основана на использовании функций 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; Мы поможем в написании вашей работы!

Поделиться с друзьями:






Мы поможем в написании ваших работ!