Главная » Basic » РАСШИРЕНИЯ БЕЙСИКА

0

В этой главе описываются некоторые дополнительные средства, которыми обладают многие версии Бейсика. В ней наряду с вполне стандартными средствами, например оператором PRINT  USING и логическими операторами, обсуждаются расширения Бейсика, например управляющие  структуры типа  циклов  REPEAT  (ПОВТОРЯТЬ  ДО),  различные  типы  переменных  и  средства  получения псевдографических изображений.

Некоторые расширения Бейсика превратились в самостоятельные языки, например COMAL, который будет вкратце описан, чтобы показать возможное направление развития Бейсика в будущем.

5.2.  ВЫРАЖЕНИЯ

В  подразд.  1.2.5  детально  обсуждались  требования,  предъявляемые  к  соглашениям  о   порядке вычисления арифметических выражений; в данном разделе обсуждаются все типы  операций и их упорядочение по старшинству.

На рис. 6.1. показан относительный приоритет всех операций, доступных в большинстве  версий Бейсика. Наивысшее старшинство имеют скобки, поэтому  во  вложенных выражениях  в  первую очередь  вычисляются те  части  выражений, которые  заключены  в  скобки  на  самом  внутреннем уровне. Таким образом, при вычислении выражения

D + X*(C + X*(B+X))

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

D+C*X+B*X*X+X*X*X

Если одно и то же старшинство имеет более чем одна операция, то они выполняются слева направо.

T)

DIV)

MOD)

вычитание

Операции отношения

Низкий приоритет

<> 

<=>= NOT AND OR

XOR                 (В Бейсике ВВС используется EOR) IMP                  (В некоторых системах)

EQV                 (В некоторых системах)

Рис.  6.1.  Перечень  операций  в  порядке  старшинства.  Вначале  выполняются  операции   с наивысшим   приоритетом;   если   соседние   операции   имеют   равный   приоритет   то   они выполняются по порядку слева направо

так как отрицание по старшинству выше умножения, но некоторые системы отвергают такую запись и требуют форму

В = С*(-А)

которую легче понять как программисту, так и системе.

В некоторых системах предусмотрена операция целочисленного деления, обозначаемая  обратной косой чертой (\) или словом DIV. Операцию можно указывать как между целыми,  так и между вещественными  переменными  (см.  разд.  6.2)  ,  но  перед  выполнением  деления   оба  операнда округляются  до  целых  чисел,  и  для  большинства  микроЭВМ  результат   округления  должен находиться в допустимом диапазоне —32 768 . . . +32 767. Целочисленное  деление выполняется несколько быстрее по сравнению с делением вещественных чисел. К примеру,

17\4 дает 4 17 DIV 4 дает 4

и

3.142\2 дает 1 171

Функция  MOD  также  имеет  дело  с  целочисленным  делением,  но  возвращает  целое  значение,

являющееся остатком от такого деления. Таким образом, 17 MOD 4 дает 1

Как DIV, так и MOD можно применять к вещественным значениям, и системы округляют их  до ближайших целых чисел перед выполнением этих операций:

3.142\1.7дает 1

и

3.142 MOD 1.7 дает 1

поскольку вычисляются как 3/2 (после округления), что дает результат 1 и остаток 1.

В некоторых системах (например, в Бейсике ВВС) вместо округления производится  отбрасывание дробной части; при таком подходе

3.142 DIV 1.7 дает 3 и

3.142 MOD 1.7 дает 0 что получается в результате вычисления 3/1.

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

А > = В правильно

А > = В = С неправильно

Для  конструирования  сложных  выражений,  подобных  последнему  из  приведенных  выше,  надо применять логические операторы, обсуждаемые в следующем разделе. Операции отношения введены для формирования логического результата по  значениям двух арифметических  выражений. Этот логический  результат  —  ИСТИНА  или  ЛОЖЬ  —  используется  в   условных   (или  булевских) выражениях всюду, где это требуется в Бейсике, например в операторе

IF А > = В + С THEN 200

или в расширенной управляющей структуре вида REPEAT UNTIL A > = В

Общее правило для всех систем таково: "ИСТИНА"≠0 "ЛОЖЬ"=0

Как же значения ИСТИНА и ЛОЖЬ представляются в ЭВМ? В Бейсике они представляются в виде двоичных целых значений, так что

Нулевому значению эквивалентна ЛОЖЬ Ненулевому значению эквивалента ИСТИНА

Таблица 6.1. Значения, используемые логическими операциями и операциями отношения

Так  как  операции отношения образуют  логические выражения, то  они должны  производить указанные выше значения для значений ИСТИНА и ЛОЖЬ. Вообще говоря, так и делается, но чаще всего вместо случайного ненулевого значения для представления значения ИСТИНА в зависимости от системы выбирается +1 или -1. В табл. 6.1 приведены эти значения для некоторых систем. Таким образом, если в системе ИСТИНА представляется числом -1,то

PRINT (5 > 3)  изобразит -1 PRINT (5 > 7) изобразит 0

и в результате выполнения оператора А = (5 > = 2)

переменной А будет присвоено значение -1. Наличие скобок не обязательно, однако в некоторых системах  их отсутствие  считается  ошибкой.  Можно пользоваться и  переменными, как, например, в выражении

С = (А > В)

и сложными выражениями, например С= ((А>В) AND(Z< = Y))

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

Источник: Уолш Б.    Программирование на Бейсике: Пер. с англ. М.: Радио и связь, 1988. 336 с: ил.

По теме:

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