Отправляет email-рассылки с помощью сервиса Sendsay

Всё о работе в Интернет

  Все выпуски  

Занятие 5.


Предыдущее занятие, уважаемый подписчик, мы закончили тем, что сформулировали общее правило “Выражения”. Теперь нам предстоит разобраться, как следует записывать разнотипные выражения конкретно. Начнём с выражений числового типа.

Напомним ещё раз! Выражения в алгоритмах на АЯ мы будем записывать по тем же правилам, что и в подпрограммах на языке Паскаль.

ВЫРАЖЕНИЯ ЧИСЛОВОГО ТИПА

Выражение считается имеющим числовой тип, если в результате его вычисления получено значение числового типа (целого, натурального или вещественного). При этом различают целочисленные выражения (целого или натурального типа) и вещественные выражения (вещественного типа).

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

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

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

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

В окончательном своём виде правило вычисления выражения формулируется следующим образом:

1) вычисляются значения всех функций и составных операндов;

2) поочерёдно слева направо выполняются арифметические операции в порядке убывания их приоритетов.  

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

Обозначения и свойства арифметических операций представлены в таблице:

Обозначение операции

Вид операции

Описание операции

+

унарная

не меняет знак операнда

унарная

изменяет знак операнда

*

бинарная мультипликативная

умножение

/

бинарная мультипликативная

деление

div

бинарная мультипликативная

целочисленное деление

mod

бинарная мультипликативная

вычисление остатка от деления

+

бинарная аддитивная

сложение

бинарная аддитивная

вычитание

Перечислим основные особенности арифметических операций:

1) операции div и mod могут выполняться только над целочисленными операндами;

2) результат операции будет вещественным, если является вещественным хотя бы один из операндов, или если это операция деления;

3) запрещено указание подряд двух и более бинарных операций;

4) допустимо указание нескольких знаков унарных операций подряд;

5) знак результата операции div определяется так же, как и для обычного деления; знак результата операции mod всегда совпадает со знаком делимого;

6) результаты операций div и mod связаны зависимостью (A div B) * B + A mod B = A.

Обозначения и описания стандартных функций представлены в таблице:

Обозначение функции

Описание функции

Abs(x)

абсолютное значение (модуль) аргумента

Sqr(x)

квадрат аргумента

Sqrt(x)

квадратный корень из аргумента

Pi

функция без аргументов, равная 3.1415926…

Sin(x)

синус аргумента, указанного в радианах

Cos(x)

косинус аргумента, указанного в радианах

ArcTan(x)

главное значение арктангенса, выраженное в радианах

Ln(x)

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

Exp(x)

экспоненциальная функция аргумента

Перечислим основные особенности стандартных функций:

1) все стандартные функции имеют вещественный тип; функции Abs(x) и Sqr(x) могут иметь целочисленный тип в случае целочисленного аргумента;

2) логарифмическую функцию аргумента x по основанию a вычисляют с помощью выражения Ln(x)/Ln(a); в частности десятичный логарифм вычисляют как Ln(x)/Ln(10);

3) значение функции tg(x) вычисляют с помощью выражения Sin(x)/Cos(x);

4) при необходимости использования градусной меры углов в функциях Sin(x), Cos(x) и ArcTan(x) используют переходные формулы A*Pi/180 – для преобразования значения угла A из градусов в радианы и A*180/Pi – для преобразования значения угла A из радиан в градусы;

5) для возведения положительного числа x в произвольную степень y пользуются выражением Exp(Ln(x)*y);

6) для извлечения корня произвольной степени y из положительного числа x пользуются выражением Exp(Ln(x)/y);

7) основание натуральных логарифмов число e можна вычислить как Exp(1).

Иногда возникает вопрос, в каких случаях для возведения в квадрат лучше пользоваться функцией Sqr(x), а в каких – обычным умножением x * x. Здесь следует исходить из соображений удобства записи выражения, а также из соображений сокращения количества вычислений. Например, записать возведение в квадрат выражения Sin(x) + Cos(x) разумнее через использование функции, чем через умножение.

Теперь рассмотрим возведение отрицательного числа x в положительную степень y.  Пусть показатель степени y является рациональным числом вида p / q (p и q – целые положительные взаимно простые числа). При этом возможны следующие  варианты:

1) число p – чётное; тогда пользуются выражением Exp(Ln(–x)*y);

2) числа p, q – нечётные; тогда пользуются выражением –Exp(Ln(–x)*y);

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

Уважаемый подписчик! Чтобы получить более подробное изложение материала занятия №5 “Выражения числового типа”, перейдите по ссылке http://a-morgun.narod.ru/a06-01/a0006-0001-0003.html

При необходимости задать вопрос, проконсультироваться, уточнить или обсудить что-либо обращайтесь через Гостевую книгу моего персонального сайта http://a-morgun.narod.ru

С уважением, Александр.


В избранное