Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Нажимаем F1 и читаем:
Справочник MQL4 - Основы языка - Синтаксис
Синтаксис языка программирования торговых стратегий MQL4 синтаксически очень похож язык программирования Си, за исключением некоторых возможностей:
отстутствует адресная арифметика;
отсутствует оператор do ... while;
отсутствует оператор goto ...;
отсутствует операция [условие]?[выражение 1]:[выражение 2];
отсутствуют сложные типы данных (структуры);
невозможны сложные присваивания. Например, val1=val2=0; arr[i++]=val; cond=(cnt=OrdersTotal)>0; и т.п.;
вычисление логического выражения производится до конца и не прерывается досрочно.
Я предлагаю придерживаться терминологии, указанной в учебнике.
Вообще говоря, название, термин можно придумать какой угодно и он будет работать, если его правильно определить. Кроме того, все термины должны быть определены с учётом определений всех других терминов в рамках одного изложения.
В учебнике многократно упоминается понятие переменная, в том определении, которое дано в словаре терминов.
Зачастую речь идёт о присвоении переменной некоторого одного значения.
Если согласиться, что массив - это контейнер = одна переменная, то возникает терминологическое разногласие: массиву нельзя присвоить значение. Значение можно присвоить только элементу массива и в этом смысле каждый элемент массива являет отдельную переменную.
Да, нельзя, но только из-за бедности языка MQL. Впрочем.... ArrayCopy и т.п. .
Я не согласен с утверждением, что массив это набор переменных.
Переменная -- это поименованные данные. А индекс -- это положение элемента данных в общей совокупности данных переменной, в данном случае массива.
Нажимаем F1 и читаем:
Я не согласен с утверждением, что массив это набор переменных.
Переменная -- это поименованные данные. А индекс -- это положение элемента данных в общей совокупности данных переменной, в данном случае массива.
В языке программирования (т.е. в такой области деятельности, где закон зависит от воли человека) человек может определять термины по своему усмотрению. В конце концов это дело вкуса.
Но повторяю, в Вашей терминологии не пройдут некоторые правила, содержащие фразы "переменная", "присвоение значения переменной" и т.п. В этой трактовке у читателя мгновенно возникнет вопрос: как присвоить значение массиву?
Чтобы не возникало путаницы, все термины выверены в отношении друг друга и в контексте учебника употребляются формулировки в рамках терминов, указанных в приложении (https://book.mql4.com/ru/appendix/glossary).
Кстати, а где можно почитать стандарт языка MQL4?
Именно стандарт языка MQL4, я не знаю. Это к разработчикам.
Но думаю такого единого документа в природе нет, да и не будет.
(производные - COBOL, SQL)
Bпервые в железе термин "набор данных" был реализован IBM в проекте "серия 360"
изюминка того времени состояла в том, что можно было обращаться не только к элементу набора (как к массиву),
но, главное новшество (!) можно было обратиться к байтам элемента набора как к данным.
Сравните - массив это таблица/список, а набор данных может иметь структуру, не обязательно линейную.
Например: набор данных может иметь заголовок и символы окончания..
следствие этого новшества - набор данных мог содержать элементы разной длины, более того стали возможны элементы переменной длины.
например "связные списки".
В частности: "структура" это тоже набор данных.
замечание: это было сделано до появления структурного программирования!!!! на базе развитой адресной арифметики.
и - задолго до появления языка Си.
"Контейнер" это детище "объектного подхода"
Одно из главных отличий контейнера - защита данных, yправление данными, т.е. контейнер ведет себя как объект.
Изменение данных находящихся в контейнере это не адресная арифметика, а операция транзакции или просто транзакция)))
транзакции могут быть скрыты от пользоателя, например переменные Visual Basic это контейнеры, но программист об этом не знает.
Но повторяю, в Вашей терминологии не пройдут некоторые правила, содержащие фразы "переменная", "присвоение значения переменной" и т.п. В этой трактовке у читателя мгновенно возникнет вопрос: как присвоить значение массиву?
Ваша мысль понятна, действительно нельзя отождествлять понятие "массив" и понятие "переменная".
Но с другой стороны, в учебнике дано такое определение: "Массив - это сгруппированный по месту распределения набор значений однотипных переменных, имеющих общее название."
Но получается, что у этих переменных, о которых идет речь - то есть у элементов массива - не одно название, а разные, отличающиеся только значением индекса. Как вобщем-то и должно быть, когда речь идет переменных. Не может быть двух переменных с одинаковым названием.
Я для себя буду пользоваться таким определением: "Массив - это это сгруппированный по месту распределения набор значений однотипных переменных, имеющих в качестве названия название массива + индекс элемента".
Что скажут уважаемые мэтры? А то может опять что-нибудь не так понимаю...
И все же один элемент массива имеет не только такую характеристику, как значение, но еще и объем занимаемой памяти и этот размер постоянен - тоесть все признаки простой переменной. Т.о. массив это набор индексированных переменных с одинаковым именем. Что касается просто набора значений, есть еще такие структуры переменого размера, как в MIDI файлах.
ну да, элемент массива - это переменная со всеми её признаками. Но название этой переменной, название другой такой же переменной и название всего массива - не одно и то же.
Название элемента массива = название массива + индекс... я так понимаю... Таким образом все элементы массива имеют разные имена, как и положено разным переменным.