Главная » Basic » АРИФМЕТИЧЕСКИЕ ВЫРАЖЕНИЯ

0

В одном операторе LET можно выполнять несколько арифметических операций: 10LETA = 3.14159*R↑2

10LETV = A*B + C/2.1

10LETX= (Y+22.7)/180

В  Бейсике  существует  строго  определенный  порядок  выполнения  арифметических   операций (правила старшинства), в достаточной степени соответствующий алгебраическим  правилам, и его недопонимание  может   приводить  к   странным  на   первый   взгляд   результатам.  Эти   правила старшинства взяты не произвольным образом, а с таким расчетом,  чтобы гарантировать один, и только один результат у любого выражения, входящего в состав  оператора Бейсика. Старшинство операций определяется следующим образом:

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

б) затем производятся операции возведения в степень;

в) затем выполняются умножения и деления;

г) последними производятся сложения и вычитания.

Эти правила дополняются правилом, согласно которому в случае, если два соседних действия равны по старшинству, вычисления производятся слева направо.

Предположим, что в примерах табл. 1.3 В = 100, С = 50и D = 20. Содержащиеся в ней выражения на Бейсике  сконструированы  с  помощью  приведенных  выше  правил  так,  что  они   эквивалентны алгебраическим формулам левой колонки.

Если бы правил старшинства не было, то выражение примера 6 можно было бы  интерпретировать как (100*50-20)/50 = 4980/50 =99.6, что не совпадает с правильным результатом 4999.6, полученным выше. Помните, что система с Бейсиком всегда следует этим правилам, так что и Вам, программисту, всегда надо им следовать. Эти правила позволяют записать приведенный  выше пример 4 в форме B/C/D, что эквивалентно (B/C)/D = (100/50)/20 = 2/20 = 0.1 и приводит к правильному результату, но такая запись имеет несколько "обескураживающий вид", поэтому ее лучше избегать.

Будьте внимательны со скобками. Пример 3 нельзя записать в виде В+C/D=100+(50/20)=102.5,  что соответствует алгебраической формуле b+c/d, а не тому, что требуется. Аналогично, если бы пример 7 был записан в виде В + C↑10/D, то результатом было бы В+(С↑10)/D = 100+ (50↑10)/20 большое

число, являющееся результатом b + c10/d, а не заданной формулы.

Оператор LET

Общая форма записи:

LET переменная = выражение

"Переменная" имя переменной (ячейки данных), которая может хранить целые или вещественные числа либо строки символов.

"Выражение " дает результат того же типа (целый, вещественный, строка символов), что и  у переменной в левой части.

Оператор LET присваивает переменной результат вычисления выражения. Все элементы данных,

входящие в состав выражения в правой части, должны к моменту вычисления иметь определенное значение. Другими словами, они должны предварительно получить значение с помощью операторов INPUT, LET или READ {последний обсуждается в разд. 4.4).

Для большинства систем служебное слово LET можно опускать.

Применение оператора LET в случае, когда по обе стороны от знака присваивания (=) указана одна и та же переменная, может вызвать недоумение, если Вы не вполне усвоили тот факт, что правая часть вычисляется до того, как результат копируется в левую часть. Оператор

LET N=N+1

возьмет текущее значение переменной N, добавит к нему 1 и затем скопирует полученный результат обратно в N; Если N первоначально содержала 10, то в результате вычислений в N  попадет 11. Операторы такого вида широко используются в программах на Бейсике, так как их действие состоит

в добавлении 1 к N (в приращении значения N) при каждом исполнении оператора. В этом случае N

действует как счетчик. Аналогично допускаются операторы вида

LET A=А*10 17

В данном случае первоначальное значение А умножается на 10 и результат возвращается в А.

Обычно служебное слово LET в  таких операторах разрешается опускать, что и будет делаться  в последующих главах этой книги. Употребление слова LET обязательно только на персональной ЭВМ (ПЭВМ) ZX81 фирмы Sinclair.

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

По теме:

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