Discussion de l'article "Les bases de la programmation MQL5 : Tableaux"

 

Un nouvel article Les bases de la programmation MQL5 : Tableaux a été publié :

Les tableaux font partie intégrante de presque tous les langages de programmation, avec les variables et les fonctions. L'article devrait intéresser principalement les programmeurs novices en MQL5, tandis que les programmeurs expérimentés auront une bonne occasion de résumer et de systématiser leurs connaissances.

Les tableaux font partie intégrante de presque tous les langages de programmation, avec les variables et les fonctions. De nombreux programmeurs novices ont souvent peur des tableaux. Cela semble étrange mais c'est vrai ! Je peux vous assurer qu'ils ne sont pas effrayants du tout. En fait, les tableaux sont similaires aux variables régulières. Sans entrer dans le détail des particularités de la notation, il n'y a pas de grande différence entre écrire une expression à l'aide de variables simples :

Variable0=1;
Variable1=2;

Variable2=Variable0+Variable1;

ou en utilisant des tableaux :

double Variable[3];

Variable[0]=1;
Variable[1]=2;

Variable[2]=Variable[0]+Variable[1];

Comme vous pouvez le voir, la différence n'est pas si grande, sauf que lorsque nous utilisons des tableaux, les noms des variables contiennent des crochets. Il y a une autre différence, plus significative - lors de la déclaration de variables, vous devez spécifier le nom de chaque variable, tandis que lors de la déclaration d'un tableau, vous devez écrire son nom une seule fois et spécifier le nombre de variables entre parenthèses (nombre d'éléments du tableau) . Les avantages de l'utilisation de tableaux par rapport aux variables deviennent encore plus évidents lorsque l'on relève les défis d'un grand nombre de tâches de programmation dans la vie réelle.

Est-il possible que la raison pour laquelle les tableaux soient considérés comme quelque chose de compliqué soit en quelque sorte liée à l'utilisation de "[" et "]" ? Ces symboles sont rarement utilisés ailleurs que dans la programmation lorsque l'on travaille avec des tableaux, de sorte que leur emplacement sur le clavier peut s'effacer de la mémoire et provoquer une gêne. En fait, vous pouvez facilement vous rappeler où elles se trouvent - ces deux touches sont situées à côté de la touche "Entrée" dans un ordre logique : la parenthèse ouvrante est suivie de la parenthèse fermante.

Auteur : Dmitry Fedoseev

 

Dans l'ensemble, ce n'est pas un mauvais article - il est meilleur que les manuels de programmation, moins aride et plus lucide.

Je n'ai pas aimé l'exemple :"Tableau multidimensionnel utilisant la POO". C'est une implémentation simple, mais le travail ultérieur avec un tel tableau dynamique est plutôt "délicat", pour moi il serait préférable de ne pas avoir cet exemple plutôt qu'une construction aussi effrayante, imho.

Документация по MQL5: Основы языка / Переменные
Документация по MQL5: Основы языка / Переменные
  • www.mql5.com
Основы языка / Переменные - Документация по MQL5
 
L'article est vraiment pas mal, surtout pour les débutants.
 

Ce n'est pas mal écrit, mais l'article ne dit pas un mot sur CArray et ses descendants.

Les débutants peuvent penser que pour travailler avec des tableaux dans le style de la POO, il faut écrire ses propres classes, mais elles ont été écrites il y a longtemps.

 

Le début du tutoriel de programmation MQL5 est presque terminé

La seule chose est que l'implémentation du tableau sur OOP semble très tendue

 
avoitenko:

Ce n'est pas mal écrit, mais l'article ne dit pas un mot sur CArray et ses descendants.

Les débutants peuvent penser que pour travailler avec des tableaux dans le style OOP, il faut écrire ses propres classes, mais elles ont été écrites il y a longtemps.

D'ailleurs, c'est un sujet sur lequel l'auteur devrait poursuivre sa série d'articles.
 
avoitenko:

Ce n'est pas mal écrit, mais l'article ne dit pas un mot sur CArray et ses descendants.

CArray et tous ses descendants devraient être anathématisés.

De telles choses devraient être écrites sur des modèles.

Vladix:

La seule chose est que l'implémentation des tableaux en OOP semble très tendue

Elle l'est un peu :)

 

Des suggestions sur la façon dont ce tableau peut être mieux fait en OOP ?

J'essaie d'obtenir quelque chose comme en 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]) ;

Le plus gros problème est qu'en JavaScript, on peut mettre une liste dans un tableau en une seule fois :

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

Et il n'y a aucun moyen d'arriver à une telle chose ici. Par conséquent, quelle que soit la façon dont vous envisagez la question, il n'y aura pas de bonne variante. il n'y aura pas de bonne variante.

 
Integer: Des suggestions sur la façon d'améliorer ce tableau en POO ?

J'aime bien l'implémentation de Yurich pour les tableaux dynamiques https://www.mql5.com/ru/forum/6729/page3, je ne sais pas si c'est efficace en terme de performance, mais en terme de lisibilité du code c'est super.

 

Très bon article, pour les débutants absolus, mais aussi pour les programmeurs expérimentés qui découvrent MT5. Seule la dernière section "Creating Multidimensional Arrays Using OOP" est moins intéressante.

Cependant, une petite erreur :

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

bool series=ArrayIsSeries(ar);

Si le tableau est indexé dans l'ordre inverse, la fonction retournera true.

Ce qui est faux. La fonction à utiliser pour connaître l'ordre d'indexation d'un tableau est ArrayGetAsSeries().

ArrayIsSeries() est utilisée pour déterminer si un tableau est une série temporelle.

 

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

Ce n'est pas tout à fait vrai, jetez un coup d'œil à l'algorithme de recherche basé sur le hachage. Mais cet algorithme n'est probablement pas applicable au commerce.