Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
lecton.DOC
Скачиваний:
4
Добавлен:
15.04.2019
Размер:
980.99 Кб
Скачать

5.2.7. Выражения

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

Простейшими выражениями являются:

  • константа. Непосредственно задает данное. Например, 3.14159;

  • имя переменной. Задает данное, хранимое в переменной. Нап­ри­мер, X или ABCD;

  • вызов функции. Задает данное, вычисляемое указанной функцией для ука­занных аргументов. Во всех языках записывается как имя фун­к­ции, за ко­торым в круглых скобках сле­дуют через запятую все ее аргу­мен­­ты (данные операции, выполняемой этой функ­ци­ей). Каждый из дан­­ных также задается выра­жени­ем. Например, SIN(2*X). В каждом из языков имеется некоторый набор встроенных стандартных функ­ций обработки данных. Это обычные числовые функции (три­го­но­мет­ри­че­ские и т.д.) и различные функции обра­ботки строковых данных. Кро­ме стандартных функций программисту предостав­ляется воз­мож­ность задавать свои собственные нестандартные функ­ции.

Более сложные выражения записываются с помощью последовательности встроенных в язык опера­ций (арифметических, логических, символьных и т.д.). Так, на­пример, в Basic: SIN(2+COS(3*Y))-(5+A) или

(2*A>3‑B AND X>=0) OR B<C.

Операции, составляющие выражение, выполняются в по­рядке стар­­шин­ства их приоритетов. Наивысший приоритет имеет вызов фун­к­ции, за ним, как и в математике, следует опера­ция возведения в сте­пень, затем операции ум­но­же­­ния/деления, затем опера­ции сложе­ния/вычитания, затем операции срав­не­­ния, затем логические опера­ции в порядке (НЕ, И, ИЛИ и т.д.). Для управления порядком вы­пол­не­ния опе­ра­ций в выражениях могут использовать­ся пар­ные круглые скоб­ки.

5.2.8. Ариф­ме­ти­че­ские вы­ра­же­ния

Ариф­ме­ти­че­ские вы­ра­же­ния в языке Basic соот­ветст­вуют общепри­нятым в математи­ке алгебраическим выражениям и со­став­ля­ют­ся

  • из чи­сло­вых кон­стант (це­лых и ве­ще­ст­вен­ных),

  • имен пе­ре­мен­ных чи­сло­во­го ти­па,

  • ариф­ме­ти­че­ских опе­ра­ций,

  • круг­лых ско­бок (управ­ляю­щих по­сле­до­ва­тель­но­стью вы­чис­ле­ний).

Арифметические опе­ра­ции. Ос­нов­ные из них:

  • обращение к арифметической функции (вычисление функции). Имеет вид имяФунк­ции (списокАргументовФункцииЧерезЗапятую);

  • воз­ве­де­ние в сте­пень (^);

  • ум­но­же­ние (*) и де­ле­ние (/);

  • сложение (+) и вычитание (-).

В языке Basic имеется целый набор ариф­ме­ти­че­ских функ­ций (ина­че на­зы­вае­мых стан­дарт­ны­ми ариф­ме­ти­че­ски­ми функ­ция­ми) для вы­чис­ле­ния раз­лич­ных об­ще­упот­ре­би­тель­ных в ма­те­ма­ти­ке функ­ций. Ка­ж­дая из них обо­зна­ча­ет­ся не­ко­то­рым ключевым (за­ре­зер­ви­ро­ван­ным) сло­вом, на­при­мер, сло­вом SIN для функ­ции си­нус. Пе­ре­чис­лим не­ко­то­рые из них:

Об­ра­ще­ние к функции

(X - лю­бое ариф­ме­ти­ческое вы­ра­же­ние.

Функ­ция

При­ме­ча­ние

SIN  (  X  )

sin x

си­нус, x в радианах

COS  (  X  )

cos x

ко­си­нус, x в радианах

TAN  (  X  )

tg x

тан­генс, x в радианах

ATN  (  X  )

arctg x

арк­тан­генс в радианах

ABS  (  X  )

| x |

аб­со­лют­ная ве­ли­чи­на

SQR  (  X  )

квад­рат­ный ко­рень

ЕХР  (  X  )

ex

экс­по­нен­та

LOG  (  X  )

ln x

на­ту­раль­ный ло­га­рифм

INT  (  X  )

наи­боль­шее це­лое, не пре­вос­хо­дя­щее X

На­при­мер:

INT(1) рав­но 1; INT(7.2) рав­но 7;

INT(12.999) рав­но 12; INT(-1) рав­но -1;

INT(-7.2) рав­но -8; INT(-12.99) рав­но -13

SGN  (  X  )

знак чис­ла: для X<0 рав­но -1;

для X=0 рав­но 0; для X>0 рав­но 1

При­мер ариф­ме­ти­че­ско­го вы­ра­же­ния, со­дер­жа­ще­го об­ра­ще­ния к стан­дартным функ­ци­ям: SIN(2.0*ABS(3.1415926+COS(1.2)))

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

На­при­мер, выражение  A^3.0*45.234*4/67.1+34.2*4^2  эк­ви­ва­лент­но

сле­дую­ще­му выражению ((((A^3.0)*45.234)*4)/67.1)+(34.2*(4^2))

Пример про­грам­мы, применяющей ариф­ме­ти­че­ские вы­ра­же­ния:

DIM   A   AS   SINGLE,   D35   AS   DOUBLE

A   =   3.1415+TAN(0.001)

D35   =   SIN(2.0*A/ABS(3.1415926+COS(1.2-A)))^A

В язы­ке Basic су­ще­ст­ву­ют еще две ариф­ме­ти­че­ские опе­ра­ции: де­ле­ние на­це­ло (\) и ос­та­ток от де­ле­ния на­це­ло (ис­поль­зу­ет­ся за­ре­зер­ви­ро­ван­ное сло­во MOD). Опе­ран­ды этих опе­ра­ций пе­ред вы­пол­не­ни­ем ок­руг­ля­ют­ся до це­лых, а за­тем вы­чис­ля­ет­ся ча­ст­ное или ос­та­ток. На­при­мер,

11\4 рав­но 2

25.87\6.87 рав­но 3 (по­лу­ча­ет­ся как 26\7)

25.5\6.13 рав­но 4 (по­лу­ча­ет­ся как 26\6)   

11  MOD  4 рав­но 3 (ос­та­ток от 11\4)

25.87  MOD  6.87 рав­но 5 (ос­та­ток от 26\7)

25.5  MOD  6.13 рав­но 2 (ос­та­ток от 26\6)   

В ариф­ме­ти­че­ском выражении, в отличие от математиче­ских алгеб­раических выра­жений, знак умножения опускать нельзя. Так напри­мер, ве­личина 2sin x на языке Basic запи­сывается выраже­нием 2*SIN (X), а не 2 SIN (X).

В ариф­ме­ти­че­ском выражении могут быть данные раз­личных чи­сло­вых типов. Выполнение арифметической операции над данными од­но­го и того же типа приводит к ре­зультату того же типа. Сочетание цело­го и ве­щест­венного операндов приводит к результату вещественного типа. Со­четание дан­ных оди­нарной и двойной точно­сти приводит к резуль­тату двойной точности.

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

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]