Русский

Учебник по MQL4  Основы языка  Константы и переменные

Константы и переменные


Понятия "константа" и "переменная" рассматриваются в одном разделе, потому что эти понятия очень близки по своей сущности.

Понятие константы


Константа — это составная часть программы; объект, имеющий значение.

Понятие "константа" в программе аналогично тому же понятию, используемому в математических уравнениях. Это — неизменная величина. Для более полного описания сущности константы, используемой в алгоритмическом языке, обратимся к известным физическим и математическим константам.

Человечеством открыты такие константы, значение которых от нас не зависит. К ним в физике относится, например, ускорение свободного падения, равное 9,8 м/с/с, а в математике - число пи = 3,14. Константы такого рода не могут быть признаны аналогией константы в алгоритмическом языке.

В математических уравнениях также используется понятие константы. Например, в уравнении Y = 3 * X + 7 числа 3 и 7 являются константами. Значение таких констант в полной мере зависит от воли человека, составившего уравнение. Это - ближайшая аналогия констант, используемых в программах на MQL4.

Константа (в виде значения) заносится программистом в код на этапе его создания. Константа характеризуется только своим значением, поэтому термины "константа" и "значение константы" являются полными синонимами.

Примеры констант:
37, 3.14, true, "Kazan"


Рис. 4. Константа в памяти компьютера.


Свойства констант


Свойством константы является её способность удерживать значение, заданное программистом, в течение времени работы программы и сообщать это значение программе при запросах программы (рис. 5). Для каждой константы, содержащейся в программе, компьютер отводит часть памяти необходимого размера. Значение константы не может быть изменено во время исполнения программы ни программистом, ни компьютером (рис. 6).


Значение константы всегда остаётся неизменным.


Рис. 5. Состояние ячейки памяти константы при сообщении значения программе.


Значение константы не может быть изменено в процессе работы программы.


Рис. 6. Изменение значения константы во время работы программы невозможно.


Понятие переменной


Переменная - это составная часть программы, имеющая значение и название.

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

Термин "идентификатор переменной" является полным синонимом терминов "имя переменной" и "название переменной". Переменная заносится создателем кода в его текст на этапе программирования в виде имени переменной. Имя переменной (идентификатор) может состоять из букв, цифр, знака подчёркивания. Однако начинаться оно должно с буквы. Язык MQL4 чувствителен к регистру букв, т.е. S и s - не одно и то же.

Примеры идентификаторов переменных: Alpha, alFa, beta, NuMbEr, Num, A_37, A37, qwerty_123
Следующие идентификаторы представляют названия разных переменных: a_22 и А_22; Massa и MASSA.
Примеры значений переменных: 37, 3.14, true, "Kazan".

Свойства переменной


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



Рис. 7. Переменная в памяти компьютера.


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

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


При сообщении значения переменной программе оно остаётся неизменным. Название (имя) переменной никогда не изменяется.


Рис. 8. Состояние ячейки памяти переменной при сообщении значения программе.


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

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


Значение переменной может быть изменено в результате воздействия программы. Название (имя) переменной остаётся неизменным всегда.


Рис. 9. Состояние ячейки памяти переменной при получении значения от программы.

Примеры констант и переменных в программе


В программе константы и переменные встречаются в операторах. В данном тексте программы А и В являются переменными, а 7 и 3 - константами:

A = 7;             // Строка 1
B = A + 3; // Строка 2

Проследим, как программа работает с константами и переменными. Исполняя эти строки, программа выполнит следующие шаги:

Первая строка:

  1. Константа 7 сообщает своё значение программе.
  2. Переменная А получает значение 7 от программы.

Вторая строка:

  1. Программа обнаружила выражение справа от знака равенства и стремится его вычислить.
  2. Константа 3 сообщает своё значение программе.
  3. Программа обращается к переменной А по имени.
  4. Переменная А сообщает своё значение (7) программе.
  5. Программа производит вычисления (7 + 3).
  6. Переменная В получает значение 10 от программы.

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

В = 33;            // Строка 3

В этом случае при исполнении программы будет выполнено следующее:

  1. Константа 33 сообщает своё значение программе.
  2. Переменная В получает (новое) значение 33 от программы.

Легко заметить, что на некотором этапе выполнения программы переменная В получает значение 10, а в ходе дальнейших вычислений - значение 33. В результате этих событий название переменной В остаётся неизменным, а значение переменной изменяется.

На рис. 10 показаны константы и переменные в тексте программы:


Рис. 10. Константа и переменная в программе.