Discussão do artigo "Fundamentos básicos da programação MQL5: Arrays"

 

Novo artigo Fundamentos básicos da programação MQL5: Arrays foi publicado:

Juntamente com as variáveis e funções, os arrays são partes integrais de quase todas as linguagens de programação. O artigo deve ser de interesse principalmente para programadores MQL5 novatos, enquanto os desenvolvedores mais experientes terão uma boa oportunidade para resumir e sistematizar seu conhecimento.

Array multidimensional

Autor: Dmitry Fedoseev

 

No geral, não é um artigo ruim - melhor do que nos livros didáticos de programação, não é tão seco e é bastante lúcido

Não gostei do exemplo:"Matriz multidimensional usando OOP". É uma implementação simples, mas o trabalho subsequente com essa matriz dinâmica é bastante "complicado". Para mim, seria melhor não ter esse exemplo do que uma construção tão assustadora.

Документация по MQL5: Основы языка / Переменные
Документация по MQL5: Основы языка / Переменные
  • www.mql5.com
Основы языка / Переменные - Документация по MQL5
 
O artigo não é realmente ruim, especialmente para iniciantes.
 

Não está mal escrito, mas o artigo não diz uma palavra sobre CArray e seus descendentes.

Os iniciantes podem pensar que, para trabalhar com arrays no estilo OOP, é necessário escrever suas próprias classes, mas elas já foram escritas há muito tempo.

 

Bem, o início do tutorial de programação MQL5 está quase concluído

A única coisa é que a implementação da matriz na OOP parece muito cansativa

 
avoitenko:

Não está mal escrito, mas o artigo não diz uma palavra sobre CArray e seus descendentes.

Os iniciantes podem pensar que, para trabalhar com arrays no estilo OOP, é necessário escrever suas próprias classes, mas elas já foram escritas há muito tempo.

A propósito, esse é um tópico para o autor continuar a série de artigos.
 
avoitenko:

Não está mal escrito, mas o artigo não diz uma palavra sobre o CArray e seus descendentes.

O CArray e todos os seus descendentes deveriam ser anatematizados.

Essas coisas devem ser escritas em modelos.

Vladix:

A única coisa é que a implementação de array em OOP parece muito forçada

É um pouco :)

 

Alguma sugestão sobre como essa matriz pode ser melhorada em OOP?

Estou tentando obter algo como em 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]);

O maior problema é que no JavaScript você pode colocar uma lista em uma matriz de uma só vez:

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

E não há como fazer isso aqui. Portanto, não importa como você olhe para isso. não haverá uma boa variante.

 
Integer: Alguma sugestão sobre como melhorar essa matriz em OOP?

Gosto da implementação de matrizes dinâmicas de Yurich https://www.mql5.com/ru/forum/6729/page3, não sei se ela é eficiente em termos de desempenho, mas em termos de legibilidade do código ela é excelente.

 

Artigo muito bom para iniciantes absolutos, mas também para programadores experientes que não conhecem o MT5. Apenas a última seção "Creating Multidimensional Arrays Using OOP" (Criando matrizes multidimensionais usando OOP) é de menor interesse.

No entanto, há um pequeno erro:

Array indexing order can be determined using the ArrayIsSeries() function:

bool series=ArrayIsSeries(ar);

Se a matriz for indexada em ordem inversa, a função retornará true.

Isso é falso. A função a ser usada para saber a ordem de indexação de uma matriz é ArrayGetAsSeries().

ArrayIsSeries() é usada para determinar se uma matriz é uma TimeSeries.

 

There is only one method that allows you to do a search in an unsorted array

Isso não é estritamente verdade, dê uma olhada em Hash Based Searching Algorithm. Mas esse algoritmo provavelmente não se aplica à negociação.