Что такое функция. Определение функции Язык си математические функции
В составе MQL4 имеются математические и тригонометрические функции. Использование большинства из них не вызывает никаких затруднений. Например, функция MathMax() возвращает максимальное из двух числовых значений, указанных в списке параметров вызова функции. Использование других функций требует определённой внимательности и вдумчивости. Рассмотрим одну из таких функций.
Функция MathFloor()
double MathFloor (double x )Функция возвращает числовое значение, представляющее наибольшее целое число, которое меньше или равно x.
Параметры:
x - числовое значение.
Обратите внимание, значение, возвращаемое функцией, является действительным числом (типа double), в то же время в назначении функции указано, что функция возвращает целое число. Это нужно понимать так, что функция возвращает действительное число, у которого во всех разрядах после разделительной точки указаны нули. Например, функция MathFloor() может вернуть 37.0 (положительное число типа double) или -4.0 (отрицательное число типа double).
В описании также указано, что функция возвращает максимальное из возможных чисел, которое меньше заданного. Например, если значение передаваемого параметра х равно 13.5, то максимальное действительное число, имеющее после разделительной только нули, равно 13.0. Если же в вызове функции указано отрицательное число -13.5, то максимальное меньшее целое число равно -14.0. Таким образом, изменение знака передаваемого параметра приводит к разным результатам, а именно, получаемые значения не равны по модулю.
В некоторых случаях использование подобных функций оказывается очень удобным. Для примера рассмотрим фрагмент расчёта количества лотов для новых ордеров:
int Percent = 30 ; // % свободных средствdouble Free = AccountFreeMargin () ; // Свободные средства
double One_Lot = MarketInfo (Symb , MODE_MARGINREQUIRED ) ; //Стоим. 1 лота
double Step = MarketInfo (Symb , MODE_LOTSTEP ) ; // Шаг изменен размера
double Lots_New = MathFloor (Free * Percent /100 /One_Lot/ Step ) * Step ;
Значение переменной Percent задаётся пользователем. В данном случае пользователь выделил для новых ордеров 30% свободных средств. В соответствии с правилами, установленными дилинговым центром, правильно вычисленное количество лотов должно быть кратно минимальному шагу изменения размера лотов (Step). Для расчёта необходимы также значения свободных средств на счёте (Free) и стоимости одного лота (One_Lot).
Рассмотрим логику рассуждений программиста, составившего формулу для расчёта искомого количества лотов Lots_New для новых ордеров. Используем для наглядности численные значения переменных. Пусть Free = 5000.0, One_Lot = 1360.0 (в большинстве ДЦ стоимость 1 лота для валютной пары, в знаменателе которой USD, пропорциональна цене по валютному инструменту), Step = 0.1. В этом случае программную строку для вычисления Lots_New можно переписать так:
Lots_New = MathFloor(5000.0*30/100/1360.0/0.1)*0.1;
Значением выражения 5000.0*30/100 является количество средств, выделенных пользователем для открытия нового ордера. В данном случае стоимость нового ордера может достигать 1500.0. Потратив все эти средства можно открыть один ордер, количество лотов у которого равно 1500.0 / 1360.0 = 1.102941. Однако дилинговый центр не примет заявку на такое количество лотов, т.к. минимальный шаг (в большинстве дилинговых центров) Step = 0.1. Для вычисления искомого количества лотов необходимо отбросить "лишние" цифры в дробной части и заменить их нулями.
Для этого можно воспользоваться рассматриваемой математической функцией:
Lots_New = MathFloor(1.102941/0.1)*0.1;
Результатом вычисления MathFloor(1.102941/0.1) будет число 11.0, а вычисленным значением переменной Lots_New - число 1.1 лота. Это значение соответствует правилам, установленным дилинговым центром, поэтому его можно использовать как заявляемое количество лотов для новых ордеров.
Математические функции
Функция | Краткое описание |
---|---|
MathAbs | Функция возвращает абсолютное значение (значение по модулю) переданного ей числа. |
MathArccos | Функция возвращает значение арккосинуса x в диапазоне 0 к π в радианах. Если x меньше -1 или больше 1, функция возвращает NaN (неопределенное значение) |
MathArcsin | Функция возвращает арксинус x в диапазоне от -π/2 до π/2 радианов. Если x -, меньше -1 или больше 1, функция возвращает NaN (неопределенное значение). |
MathArctan | Функция возвращает арктангенс x . Если x равен 0, функция возвращает 0. MathArctan возвращает значение в диапазоне от -π/2 до π/2 радианов. |
MathCeil | Функция возвращает числовое значение, представляющую наименьшее целое число, которое больше или равно x . |
MathCos | Функция возвращает косинус угла. |
MathExp | Функция возвращает значение числа e в степени d . При переполнении функция возвращает INF (бесконечность), в случае потери порядка MathExp возвращает 0. |
MathFloor | Функция возвращает числовое значение, представляющее наибольшее целое число, которое меньше или равно x . |
MathLog | Функции возвращают натуральный логарифм x в случае успеха. Если x отрицателен, функция возвращает NaN (неопределенное значение). Если x равен 0, функция возвращает INF (бесконечность). |
MathMax | Функция возвращает максимальное из двух числовых значений. |
MathMin | Функция возвращает минимальное из двух числовых значений. |
MathMod | Функция возвращает вещественный остаток от деления двух чисел. Функция MathMod рассчитывает вещественный остаток f от x / y таким образом, что x = i * y + f , где i является целым числом, f имеет тот же знак, что и x , и абсолютное значение f меньше, чем абсолютное значение y . |
MathPow | Функция возвращает значение основания, возведенного в указанную степень. |
MathRand | Функция возвращает псевдослучайное целое число в дипазоне от 0 до 32767. Перед первым вызовом функции необходимо использовать функцию MathSrand , чтобы перевести генератор псевдослучайных чисел в начальное состояние |
MathRound | Функция возвращает значение, округленное до ближайшего целого числа указанного числового значения. | или к разделу "Справка" в редакторе MetaEditor.
Чаще всего среди доступных групп функций пользователи Экселя обращаются к математическим. С помощью них можно производить различные арифметические и алгебраические действия. Их часто используют при планировании и научных вычислениях. Узнаем, что представляет собой данная группа операторов в целом, и более подробно остановимся на самых популярных из них.
С помощью математических функций можно проводить различные расчеты. Они будут полезны студентам и школьникам, инженерам, ученым, бухгалтерам, планировщикам. В эту группу входят около 80 операторов. Мы же подробно остановимся на десяти самых популярных из них.
Открыть список математических формул можно несколькими путями. Проще всего запустить Мастер функций, нажав на кнопку «Вставить функцию» , которая размещена слева от строки формул. При этом нужно предварительно выделить ячейку, куда будет выводиться результат обработки данных. Этот метод хорош тем, что его можно реализовать, находясь в любой вкладке.
Также можно запустить Мастер функций, перейдя во вкладку «Формулы» . Там нужно нажать на кнопку «Вставить функцию» , расположенную на самом левом краю ленты в блоке инструментов «Библиотека функций» .
Существует и третий способ активации Мастера функций. Он осуществляется с помощью нажатия комбинации клавиш на клавиатуре Shift+F3 .
После того, как пользователь произвел любое из вышеуказанных действий, открывается Мастер функций. Кликаем по окну в поле «Категория» .
Открывается выпадающий список. Выбираем в нем позицию «Математические» .
После этого в окне появляется список всех математических функций в Excel. Чтобы перейти к введению аргументов, выделяем конкретную из них и жмем на кнопку «OK» .
Существует также способ выбора конкретного математического оператора без открытия главного окна Мастера функций. Для этого переходим в уже знакомую для нас вкладку «Формулы» и жмем на кнопку «Математические» , расположенную на ленте в группе инструментов «Библиотека функций» . Открывается список, из которого нужно выбрать требуемую формулу для решения конкретной задачи, после чего откроется окно её аргументов.
Правда, нужно заметить, что в этом списке представлены не все формулы математической группы, хотя и большинство из них. Если вы не найдете нужного оператора, то следует кликнуть по пункту «Вставить функцию…» в самом низу списка, после чего откроется уже знакомый нам Мастер функций.
СУММ
Наиболее часто используется функция СУММ . Этот оператор предназначен для сложения данных в нескольких ячейках. Хотя его можно использовать и для обычного суммирования чисел. Синтаксис, который можно применять при ручном вводе, выглядит следующим образом:
СУММ(число1;число2;…)
В окне аргументов в поля следует вводить ссылки на ячейки с данными или на диапазоны. Оператор складывает содержимое и выводит общую сумму в отдельную ячейку.
СУММЕСЛИ
Оператор СУММЕСЛИ также подсчитывает общую сумму чисел в ячейках. Но, в отличие от предыдущей функции, в данном операторе можно задать условие, которое будет определять, какие именно значения участвуют в расчете, а какие нет. При указании условия можно использовать знаки «>» («больше»), «<» («меньше»), «< >» («не равно»). То есть, число, которое не соответствует заданному условию, во втором аргументе при подсчете суммы в расчет не берется. Кроме того, существует дополнительный аргумент «Диапазон суммирования» , но он не является обязательным. Данная операция имеет следующий синтаксис:
СУММЕСЛИ(Диапазон;Критерий;Диапазон_суммирования)
ОКРУГЛ
Как можно понять из названия функции ОКРУГЛ , служит она для округления чисел. Первым аргументом данного оператора является число или ссылка на ячейку, в которой содержится числовой элемент. В отличие от большинства других функций, у этой диапазон значением выступать не может. Вторым аргументом является количество десятичных знаков, до которых нужно произвести округление. Округления проводится по общематематическим правилам, то есть, к ближайшему по модулю числу. Синтаксис у этой формулы такой:
ОКРУГЛ(число;число_разрядов)
Кроме того, в Экселе существуют такие функции, как ОКРУГЛВВЕРХ и ОКРУГЛВНИЗ , которые соответственно округляют числа до ближайшего большего и меньшего по модулю.
ПРОИЗВЕД
Задачей оператора ПРИЗВЕД является умножение отдельных чисел или тех, которые расположены в ячейках листа. Аргументами этой функции являются ссылки на ячейки, в которых содержатся данные для перемножения. Всего может быть использовано до 255 таких ссылок. Результат умножения выводится в отдельную ячейку. Синтаксис данного оператора выглядит так:
ПРОИЗВЕД(число;число;…)
ABS
С помощью математической формулы ABS производится расчет числа по модулю. У этого оператора один аргумент – «Число» , то есть, ссылка на ячейку, содержащую числовые данные. Диапазон в роли аргумента выступать не может. Синтаксис имеет следующий вид:
ABS(число)
СТЕПЕНЬ
Из названия понятно, что задачей оператора СТЕПЕНЬ является возведение числа в заданную степень. У данной функции два аргумента: «Число» и «Степень» . Первый из них может быть указан в виде ссылки на ячейку, содержащую числовую величину. Второй аргумент указывается степень возведения. Из всего вышесказанного следует, что синтаксис этого оператора имеет следующий вид:
СТЕПЕНЬ(число;степень)
КОРЕНЬ
Задачей функции КОРЕНЬ является извлечение квадратного корня. Данный оператор имеет только один аргумент – «Число» . В его роли может выступать ссылка на ячейку, содержащую данные. Синтаксис принимает такую форму:
КОРЕНЬ(число)
СЛУЧМЕЖДУ
Довольно специфическая задача у формулы СЛУЧМЕЖДУ . Она состоит в том, чтобы выводить в указанную ячейку любое случайное число, находящееся между двумя заданными числами. Из описания функционала данного оператора понятно, что его аргументами является верхняя и нижняя границы интервала. Синтаксис у него такой:
СЛУЧМЕЖДУ(Нижн_граница;Верхн_граница)
ЧАСТНОЕ
Оператор ЧАСТНОЕ применяется для деления чисел. Но в результатах деления он выводит только четное число, округленное к меньшему по модулю. Аргументами этой формулы являются ссылки на ячейки, содержащие делимое и делитель. Синтаксис следующий:
ЧАСТНОЕ(Числитель;Знаменатель)
РИМСКОЕ
Данная функция позволяет преобразовать арабские числа, которыми по умолчанию оперирует Excel, в римские. У этого оператора два аргумента: ссылка на ячейку с преобразуемым числом и форма. Второй аргумент не является обязательным. Синтаксис имеет следующий вид:
РИМСКОЕ(Число;Форма)
Выше были описаны только наиболее популярные математические функции Эксель. Они помогают в значительной мере упростить различные вычисления в данной программе. При помощи этих формул можно выполнять как простейшие арифметические действия, так и более сложные вычисления. Особенно они помогают в тех случаях, когда нужно производить массовые расчеты.
В C++ определены следующие арифметические операторы.
Cложение;
– вычитание;
* умножение
/ деление
% деление по модулю
– – декремент (уменьшение на 1)
Инкремент (увеличение на 1).
Действие операторов +, –, * и / совпадает с действием аналогичных операторов в алгебре. Их можно применять к данным любого встроенного числового типа.
После применения оператора деления (/) к целому числу остаток будет отброшен. Например, результат целочисленного деления 10/3 будет равен 3. Остаток от деления можно получить с помощью оператора деления по модулю (%). Например, 10%3 равно 1. Это означает, что в С++ оператор % нельзя применять к нецелочисленным типам данных.
Операторы инкремента (++) и декремента (– –) обладают очень интересными свойствами. Поэтому им следует уделить особое внимание.
Оператор инкремента выполняет сложение операнда с числом 1, а оператор декремента вычитает 1 из своего операнда. Это значит, что инструкция:
аналогична такой инструкции:
А инструкция:
аналогична такой инструкции:
Операторы инкремента и декремента могут стоять как перед своим операндом (префиксная форма), так и после него (постфиксная форма). Например, инструкцию
можно переписать в виде префиксной
Х;//префиксная форма оператора инкремента
или постфиксной формы:
х++;//постфиксная форма оператора инкремента
В предыдущем примере не имело значения, в какой форме был применен оператор инкремента: префиксной или постфиксной. Но если оператор инкремента или декремента используется как часть большего выражения, то форма его применения очень важна. Если такой оператор применен в префиксной форме, то C++ сначала выполнит эту операцию, чтобы операнд получил новое значение, которое затем будет использовано остальной частью выражения. Если же оператор применен в постфиксной форме, то С++ использует в выражении его старое значение, а затем выполнит операцию, в результате которой операнд обретет новое значение.
Математические функции
В языке С++ имеются специальные функции для расчета алгебраических выражений. Все такие функции находятся в отдельном заголовочном файле math.h. Поэтому для использования функций в коде программы необходимо подключить данный файл с помощью директивы
#include
Приведем основные алгебраические функции С++.
abs(x) - модуль целого числа;
labs(x) - модуль «длинного» целого;
fabs(x) - модуль числа с плавающей точкой;
sqrt(x) - извлечение квадратного корня;
pow(x,y) - возведение x в степень y;
cos(x) - косинус;
sin(x) - синус;
tan(x) - тангенс;
acos(x) - арккосинус;
asin(x) - арксинус;
atan(x) - арктангенс;
exp(x) - експонента в степени x;
log(x) - натуральный логарифм;
log10(x) - десятичный логарифм
При возведении числа в дробную степень, знаменатель дробной степени нужно записывать в вещественном виде. Например: квадратный корень из а записывается так: pow(a,1/2.0 )
Продемонстрируем использование функций на примерах.
5. Операторы ввода/вывода на языке С++
Для вывода сообщения на экран используется следующий оператор C++:
cout<<”текст”;
#include
Информация, заключенная в двойные кавычки, является сообщением, которое должно быть выведено на экран. В языке C++ любая последовательность символов, заключенная в двойные кавычки, называется строкой потому, что она состоит из нескольких символов, соединяемых вместе в более крупный блок (элемент).
Строка в операторе COUT может содержать так называемые подстановочные символы - символы, которых нет на клавиатуре или они заняты под ключевые символы в тексте программы. Перед каждым таким подстановочным символов ставится символ «\».
Приведем перечень таких символов:
\a – звуковой сигнал
\n – переход на новую строку
\t – горизонтальная табуляция
\v – вертикальная табуляция
\\ - обратный слеш
\’ – одинарная кавычка
\” – двойная кавычка
\? – знак вопроса.
Например, оператор вида:
cout>>“пример\nтекста”;
Слово «пример» выведет на одной строке, а слово «текста» на другой.
Оператор вида:
cout>>“магазин\»”чайка\””;
Слово «Чайка» отобразит в двойных кавычках.
Кроме текса оператор может выводить на экран значения переменных, комбинируя их с текстом.