Обсуждение статьи "Основы программирования на MQL5 - Массивы"

 

Опубликована статья Основы программирования на MQL5 - Массивы:

Наряду с переменными и функциями, массивы являются практически неотъемлемой частью любого языка программирования. Замечено, что некоторые начинающие изучать программирование, панически боятся массивов. Удивительно, но факт! Смею заверить вас, что бояться их не нужно. Массивы, по своей сути, это все те же обычные переменные.

Многомерный массив

Может быть, сложности применения массивов каким-то образом связаны с использованием символов "[" и "]"? Эти символы редко когда используются, кроме как в программировании при работе с массивами, поэтому их расположение на клавиатуре может забываться и вызывать неудобства. На самом деле, их расположение на клавиатуре очень легко запомнить - эти две клавиши рядом с клавишей "Enter" расположены в логическом порядке: открывающая скобка и закрывающая скобка.

Автор: Дмитрий

 

в целом не плохая статья - лучше, чем в учебниках по программированию, не так сухо и довольно доходчиво

не понравился пример: "Многомерный массив с применением ООП" , простая реализация, но довольно "корявая" последующая работа с таким динамическим массивом, по мне так лучше не было бы этого примера, чем такая отпугивающая конструкция, имхо 

Документация по MQL5: Основы языка / Переменные
Документация по MQL5: Основы языка / Переменные
  • www.mql5.com
Основы языка / Переменные - Документация по MQL5
 
Статья действительно не плохая в особенности для начинающих .
 

Неплохо написано, но в статье ни слова про CArray и его потомков.

Начинающие могут подумать, что для работы с массивами в стиле ООП нужно свои классы писать, а они уже давно написаны.

 

Ну вот, начало учебнику по программированию на MQL5 практически положено

Единственное, реализация массива на ООП выглядит очень уж натянуто

 
avoitenko:

Неплохо написано, но в статье ни слова про CArray и его потомков.

Начинающие могут подумать, что для работы с массивами в стиле ООП нужно свои классы писать, а они уже давно написаны.

Кста, это тема автору для продолжения цикла статей.
 
avoitenko:

Неплохо написано, но в статье ни слова про CArray и его потомков.

CArray и всех его потомков предать анафеме.

Такое надо писать на шаблонах.

Vladix:

Единственное, реализация массива на ООП выглядит очень уж натянуто

Есть немного :)


 

Есть какие предложения, как можно лучше сделать этот массив на ООП?

Пытался получить что-то типа как на JavaScript:

var ar=new Array();
ar[0]=new Array();
ar[1]=new Array();
ar[2]=new Array();

ar[0][0]=1;
ar[0][1]=2;

alert(ar[0][1]);

Самый большой затык в том, что в JavaScript в массив можно сразу список загнать:

ar[0][2]=Array(131,132,133,134);
alert(ar[0][2][3]);

А здесь никак такое не выдумать. Поэтому, как ни крути... хорошего варианта не будет. 

 
Integer:Есть какие предложения, как можно лучше сделать этот массив на ООП?

мне понравились реализации динамических массивов от Yurich https://www.mql5.com/ru/forum/6729/page3 , по производительности не знаю насколько эффективны, но по читаемости кода - супер


 
как вернуть массив из функции? нашёл пока обходной путь, но явно ж должен быть способ как это сделать "в лоб" ))
 
thejobber:
как вернуть массив из функции? нашёл пока обходной путь, но явно ж должен быть способ как это сделать "в лоб" ))

В лоб - никак... разве, что указатель на массив. Например:

CArrayDouble *Function(void);

Не в лоб, но вполне стандартный подход, как-то так, в таком разрезе:

void Function(double &_arr_out[]);
В общем, возвращаемый массив - это параметр-ссылка...