Программирование прибыли: от азов к секретам мастерства. Читайте, спрашивайте, делитесь опытом.
Бонус за сообщение 0.5$
Ответственный Модератор - Haos
Сообщений: 63
•
1, 2, 3, 4, 5 ... 7
Арифметические операции.
Рэндом » 01 авг 2013, 00:57
Арифметические операции относятся к целым и к вещественным типам, но не все. Те операции которые относятся только к целым будут выделены. Помните о том что тип datatime может соответствовать целому типу без знака.
- Код: выделить все
Сумма величин i = j + 2;
Вычитание величин i = j - 3;
Изменение знака x = - x;
Умножение величин z = 3 * x;
Частное от деления i = j / 5;
Остаток от деления (только для целых) minutes = time % 60;
Добавление 1 к значению переменной i++;
Добавление 1 к значению переменной ++i;
Вычитание 1 от значения переменной k--;
Вычитание 1 от значения переменной --k;
Операции добавления и вычитания единицы (i++) применяются только к переменным. Важно помнить о том что если плюсы или минусы в операция добавления стоят после переменной, то сначала выполняются другие действия, а затем сама операция.
Пример:
- Код: выделить все
h=i++;
Здесь сначала будет выполнена операция присваивания, а затем i будет увеличено на 1.
Если плюсы или минусы идут перед переменной, то сначала будет выполнено увеличение или уменьшение на 1, а затем другие операции.
-
Рэндом
- Специалист MQL
-
- Сообщений: 13700
- Зарегистрирован: 18 июл 2013, 08:05
- Средств на руках: 31.45
- Группа: Администраторы
- Благодарил (а): 1131 раз.
- Поблагодарили: 3174 раз.
Каждый заблуждается в меру своих возможностей.
Операции присваивания.
Рэндом » 02 авг 2013, 03:45
Кроме простой операции присваивания (x=y). Есть сложные операции совмещенные с другими операциями. Слева от операции присваивания может быть только переменная.
- Код: выделить все
Увеличение значения переменной у на x у += x;
Уменьшение значения переменной y на x y -= x;
Умножение значения переменной y на x y *= x;
Деление значения переменной y на x y /= x;
Остаток от деления значения переменной y на x y %= x;
Сдвиг двоичного представления y вправо на x бит y >>= x;
Сдвиг двоичного представления y влево на x бит y <<= x;
Побитовая операция И двоичных представлений y и x y &= x;
Побитовая операция ИЛИ двоичных представлений y и x y |= x;
Побитовая операция исключающее ИЛИ
двоичных представлений y и x y ^= x;
Некоторые операции вам не знакомы, но мы познакомимся с ними позже. А теперь давайте рассмотрим смысл этих операций. Легче всего он объясняется на примерах. Так выражение у += x эквивалентно y=y+x.
И последний тип присваивания. Множественное присваивание:
- Код: выделить все
x=y=3;
Здесь переменным x и y присваивается значение 3. Переменных может быть больше двух, а 3 можно заменить выражением.
-
Рэндом
- Специалист MQL
-
- Сообщений: 13700
- Зарегистрирован: 18 июл 2013, 08:05
- Средств на руках: 31.45
- Группа: Администраторы
- Благодарил (а): 1131 раз.
- Поблагодарили: 3174 раз.
Каждый заблуждается в меру своих возможностей.
Операции отношения.
Рэндом » 05 авг 2013, 03:47
Операции отношения тесно связанны с типом bool, который может принимать два значения Истина (true) и Лож (false). Но это относиться к результату вычислений операций отношения, т.е. их результат имеет тип bool, а сами операции выполняются над числовыми типами. Эти операции используются при ветвлении программ, т.е. выполнения разных участков кода в зависимости от условия. А так же в операциях цикла, повторного выполнения ( от 0 до бесконечности) некоторого участка программы.
Операции:
- Код: выделить все
Истина, если a равно b a == b;
Истина, если a не равно b a != b;
Истина, если a меньше b a < b;
Истина, если a больше b a > b;
Истина, если a меньше или равно b a <= b;
Истина, если a больше или равно b a >= b;
Одно важное замечание. Нельзя использовать операцию равенства с вещественными числами. Для сравнения этих чисел необходимо нормализовать их разницу (функция NormalizeDouble) и сравнить с 0. Что такое функция вы узнаете позже.
-
Рэндом
- Специалист MQL
-
- Сообщений: 13700
- Зарегистрирован: 18 июл 2013, 08:05
- Средств на руках: 31.45
- Группа: Администраторы
- Благодарил (а): 1131 раз.
- Поблагодарили: 3174 раз.
Каждый заблуждается в меру своих возможностей.
Логические операции.
Рэндом » 06 авг 2013, 02:12
Логические операции применяются к типу bool и возвращают тип bool.
Логическое отрицание (НЕ).
Операция обозначается как !. Это операция с одним операндом (значение или переменная), которая ставиться перед ним. Если операция применяется к true, то ее результат будет false. Если к false, то результат true.
Пример:
- Код: выделить все
!x
!(x==y)
Логическое И.
Операция обозначается как &&. Это операция с двумя операндами, которая ставиться между ними.
Смысл операции:
- Код: выделить все
true && true == true
false && false == false
true && false == false
false && true == false
Пример:
- Код: выделить все
k<x && x>y
Логическое ИЛИ.
Операция обозначается как ||. Это операция с двумя операндами, которая ставиться между ними.
Смысл операции:
- Код: выделить все
true || true == true
false || false == false
true || false == true
false || true == true
Пример:
- Код: выделить все
x==1 || x==2
При вычеслении цепочки логических операция их вычесление прекращается как только можно однозначно сказать каким будет результат всего выражения.
-
Рэндом
- Специалист MQL
-
- Сообщений: 13700
- Зарегистрирован: 18 июл 2013, 08:05
- Средств на руках: 31.45
- Группа: Администраторы
- Благодарил (а): 1131 раз.
- Поблагодарили: 3174 раз.
Каждый заблуждается в меру своих возможностей.
Побитовые операции
Рэндом » 07 авг 2013, 03:13
Побитовые операции выполнятся над каждым битом целых типов. На низком уровне любое число представляется в двоичной системе. Бит - это один разряд двоичного представления который может принимать значение 0 или 1.
Сдвиг вправо.
Операция обозначается как >>. Сдвиг числа x на y разрядов. Если сдвигается безнаковое число, то старшие (левые) биты заполняются нулями. Если сдвигается знаковое число, то старший разряд распростроняется влево.
Пример:
- Код: выделить все
k=x>>y;
Сдвиг влево.
Операция обозначается как <<. Сдвиг x влево на y разрядов, младшие разряды заполняются нулями.
Пример:
- Код: выделить все
k=x<<y;
Побитовое НЕ.
Операция обозначается как ~. Значение каждого бита операнда меняется на противоположный. Т,е. 0 меняется на 1, а 1 на 0.
Пример:
- Код: выделить все
k=~x;
Побитовое И.
Операция обозначается как &. Операция применяется к каждому биту по отдельности.
Смысл операции:
- Код: выделить все
0&0==0
1&1==1
0&1==0
1&0==0
Пример:
- Код: выделить все
k=x&y;
Побитовое ИЛИ.
Операция обозначается как ^. Операция примкеняется к каждому биту по отдельности.
Смысл операции:
- Код: выделить все
0^0==0
1^1==1
0^1==1
1^0==1
Пример:
- Код: выделить все
k=x^y;
-
Рэндом
- Специалист MQL
-
- Сообщений: 13700
- Зарегистрирован: 18 июл 2013, 08:05
- Средств на руках: 31.45
- Группа: Администраторы
- Благодарил (а): 1131 раз.
- Поблагодарили: 3174 раз.
Каждый заблуждается в меру своих возможностей.
Выражения
Рэндом » 08 авг 2013, 02:55
Выражения - это основной элемент программы. Выражения состоят из одного или нескольких операндов и операций. Операнд это число или переменная. Каждое выражение заканчивается точкой с запятой. В выражениях так же можно использовать круглые скобки, что меняет порядок выполнения операций. О порядке выполнения операций мы поговорим далее. Операции в скобках выполняются раньше других.
Пример:
- Код: выделить все
k=(x+y)/2;
Смысл этого выражения в следующем сложить x и y, поделить результат на 2, и присвоить его k.
Выражения могут записываться в несколько строк, только важно не забывать в конце выражения ставить точку с запятой.
-
Рэндом
- Специалист MQL
-
- Сообщений: 13700
- Зарегистрирован: 18 июл 2013, 08:05
- Средств на руках: 31.45
- Группа: Администраторы
- Благодарил (а): 1131 раз.
- Поблагодарили: 3174 раз.
Каждый заблуждается в меру своих возможностей.
Операции ветвления.
Рэндом » 09 авг 2013, 03:22
Используя то что вы изучили ранее можно написать последовательную программу. Но случаи когда программа работает последовательно крайне редки. Часто возникает необходимость выполнить те или иные действия в зависимости от условия. Для этого существуют специальный оператор if. Он имеет следующий синтаксис:
- Код: выделить все
if(условие)
выражение1;
else
выражение2;
Условие должно иметь тип bool. Если условие true, то выполняется выражение1, иначе выражение2. Ключевое слово else не обязательно. Если оно отсутствует, то при true выполняется только выражение1.
Важно помнить что в местах где должно быть выражение, можно записать только одно выражение. Но это можно обойти если записать последовательность выражений в фигурных скобках.
Пример:
- Код: выделить все
if(x>0)
{
k=x+10;
g=k/2;
}
else
{
k=x-10;
g=k*2;
}
-
Рэндом
- Специалист MQL
-
- Сообщений: 13700
- Зарегистрирован: 18 июл 2013, 08:05
- Средств на руках: 31.45
- Группа: Администраторы
- Благодарил (а): 1131 раз.
- Поблагодарили: 3174 раз.
Каждый заблуждается в меру своих возможностей.
Циклы.
Рэндом » 12 авг 2013, 03:00
Часто необходимо повторять какие либо действия в зависимости от условия. Для этого существуют циклы с условием. Их есть два вида с проверкой перед выполнением повторяющихся действий, и с проверкой после выполнения выражения.
- Код: выделить все
while(условие)
выражение;
Пока условие истинно будет выполнятся выражение. Здесь сначала проверяется условие, а затем выполняется выражение.
- Код: выделить все
do
выражение;
while(условие)
Здесь выполняется выражение пока условие истинно. Сначала выполняется выражение, затем проверяется условие. В этом цикле выражение будет выполнено как минимум один раз.
Помните о том что выражения можно объединять в блоки.
-
Рэндом
- Специалист MQL
-
- Сообщений: 13700
- Зарегистрирован: 18 июл 2013, 08:05
- Средств на руках: 31.45
- Группа: Администраторы
- Благодарил (а): 1131 раз.
- Поблагодарили: 3174 раз.
Каждый заблуждается в меру своих возможностей.
Цикл for
Рэндом » 13 авг 2013, 03:11
Этот тип цикла используется для организации цикла со счетчиком.
- Код: выделить все
for(выражение1;выражение2;выражение3)
оператор;
Выражение1 это инициализация цикла. Оно состоит из объявления переменной или присвоения ей значения.
Пример:
- Код: выделить все
int i;
for(i=1;;)
for(int i=0;;)
Выражение2 это условие завершения цикла. Если оно истинно, то выполняется оператор.
Пример:
- Код: выделить все
for(int i=1;i<=1000;)
Выражение3 предназначено для изменение переменной цикла.
Пример:
- Код: выделить все
for(int i=1;i<=100;i++)
Buf[i]=high[i];
Этот цикл будет выполняться сто раз.
-
Рэндом
- Специалист MQL
-
- Сообщений: 13700
- Зарегистрирован: 18 июл 2013, 08:05
- Средств на руках: 31.45
- Группа: Администраторы
- Благодарил (а): 1131 раз.
- Поблагодарили: 3174 раз.
Каждый заблуждается в меру своих возможностей.
Оператор break
Рэндом » 14 авг 2013, 04:20
Этот оператор предназначен для выхода из цикла. Т.е. используя этот оператор, можно прекратить выполнение цикла. Самое логичное, если будет сделана проверка на какое-нибудь условие, а как результат этой проверки будет вызван оператор break. В случае вложенных циклов, выход происходит из того цикла, в котором вызван этот оператор.
Пример:
- Код: выделить все
for(int i=0;i<1000;i++)
{
double h=high[i];
if(h>1.3200) break;
}
-
Рэндом
- Специалист MQL
-
- Сообщений: 13700
- Зарегистрирован: 18 июл 2013, 08:05
- Средств на руках: 31.45
- Группа: Администраторы
- Благодарил (а): 1131 раз.
- Поблагодарили: 3174 раз.
Каждый заблуждается в меру своих возможностей.
Кто сейчас на форуме?
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 96
Права доступа к форуму
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения