Главная » Bascom-8051, Basic, Железо » Проверка условий и изменение хода выполнения программы Bascom-8051

0

В  описываемой  версии  Bascom-8051,  как  и  в  классическом  Бейсике,  основу   организации  работы отдельных   частей   (модулей)   программы   обеспечивают   операторы   проверки   условий   и   изменения   хода выполнения программы. Компилятор Bascom-8051  предоставляет возможность проверки значений всех типов переменных. Причем, проверяемая  переменная может сравниваться как с константой, так с другой переменной, такого же типа.

Все  числовые  переменные  могут  проверяться  на  соответствие  условиям  соотношения   с  числовым значением и значением другой переменной. Bascom позволяет проверять переменные на соответствие условиям: равенства ( знак соотношения « = »), неравенства (« <> »), меньше (« < »), больше (« > »), меньше или равно (« <=

») и больше или равно («>=»). Задаваемое значение константы, записываемое в выражение  сравнения, должно

соответствовать типу проверяемой переменной таким образом, чтобы не вызывать трудностей компилятору при переводе этого числа в исполняемый код. Сравнение производится с учетом знака переменных и констант.

Битовые переменные могут сравниваться только с числами 0 и 1 или с другой битовой  переменной.

Bascom   также   обеспечивает   проверку   битов   одно-,   двух-   и   четырех   байтовых   переменных,   даже   не расположенных в битовой области внутренней памяти.

Строковые переменные могут сравниваться друг с другом или с непосредственно  заданной строкой. В примере, приведенном ниже, показаны   примеры использования операторов  проверки условий с различными

типами  переменных.  Мы  видим,  что  имеется  возможность  выключать  или  включать  исполнение  отдельных

участков программы, а также осуществлять переход в другие точки программы с помощью  операторов GOTO. Применение операторов RETURN (или команды RET) внутри конструкции IF…END IF запрещено, т.к. при этом нарушается баланс стека.

‘——————————— ‘ тестирование операций сравнения

‘———————————

Dim Bt1 As Bit , Bt2 As Bit , Bd As Byte , Wd As Word , Ld As Long Dim Sd1 As Single , Sd2 As Single

Dim Temp As String * 16 , Tmp1 As String * 16

M1:

Input Sd1 : Sd2 = 2.345

If Sd1 < Sd2 Then         ‘сравнение чисел в формате с пл. точкой

Print "ok" : Goto M2

End If

Print "no"

M2:

Input Temp : Input Tmp1   ‘ввести строковые переменные

If Temp = Tmp1 Then

Print "equ" : Goto M3 ‘если переменные равны – выход

Elseif Temp = "stop" Then

Goto Mend             ‘а если введено "stop" – закончить

End If

Print "no"

M3:                       ‘проверка числовых переменных

Input Bd : Input Wd : Input Ld ‘ввести значения

If Bd = &H0A Then       ‘проверим байтовую переменную

Print "=" : Goto M4

Else                    ‘если она не равна 10, проверим остальные

If Wd >= 1000 Then  ‘двухбайтовая больше 1000?

Print ">>" : Goto M4   ‘да – пойдем дальше

Elseif Ld <= 1000000 Then  ‘нет – проверим четырехбайтовую

Print "<<<<"    ‘если меньше 1000000 отпечатали

End If End If

M4:                       ‘сравнение битовых переменных

Bt1 = 0 : Bt2 = 1

If Bt1 = Bt1 Then Print "ok"

End If Goto M1

Mend: End

Для  того,  чтобы  программа  работала  быстрее,  надежнее  и  затрачивала  меньше   ресурсов,  следует применять максимально простую конструкцию операций проверки условий и использовать наиболее компактный тип сравниваемых данных. Не рекомендуется без особой необходимости сравнивать числа в формате с плавающей точкой и строковые переменные длиной более двух-трех символов.

В последних версиях компилятора стала возможной классическая запись операции  проверки условий в одну строку в простом:

If Wd >= 1000 Then Goto M4

Или расширенном виде:

If Wd >= 1000 Then  Print ">>" Else Print "<<"    ‘если меньше 1000000

При этом нужно иметь в виду, что качестве действия на истинность или не истинность  проверяемому условию  может  быть  применен  только  один  оператор.  Двоеточие  в  этой   строке  понимается  как  начало следующего оператора, выполняемого безусловно.  Также понимается и оператор в следующей строке.

Еще  одна  новинка  Bascom  версии  2.xx  –  возможность  проверки  значения  индексированных  битов.

Причем индекс может быть задан байтовой переменной:

Dim X As Byte

X = 6                      ‘X = 0 – 7

If P2.X=1 Then             ‘проверка индексированного бита

P2.X = 0             ‘изменение индексированного бита

End If

Источник: М.Л.Кулиш, СПРАВОЧНИК ПО ПРОГРАММИРОВАНИЮ BASCOM-8051, Краснодар 2001

По теме:

  • Комментарии