Aidez-moi à apprendre à programmer. - page 7

 
Aleksei Stepanenko:

Quel tas de conneries...

Oui, l'appel du cycle de Dmitry n'est pas le plus élégant, mais il a écrit un code intéressant pour obtenir le numéro de la semaine à partir de la date. Quand je l'utilise, j'y pense toujours avec un mot gentil.

Mais, Dimitri, tu dois être plus poli avec les gens, plus doux.

Je suis poli avec les gens.

 

Le code de Dmitri n'a pas survécu, mais voici un remaniement basé sur celui-ci :

//получаем номер недели в году
int GetWeekNumber(datetime eTime)
   {
   MqlDateTime eDate;
   //получаем дату начала года
   TimeToStruct(eTime,eDate);
   eDate.mon=1;
   eDate.day=1;
   eDate.hour=0;
   eDate.min=0;
   eDate.sec=0;
   datetime StartTime=StructToTime(eDate);
   //возвращаем дату назад в структуру, чтобы определить день недели начала года
   TimeToStruct(StartTime,eDate);
   return(int((eTime-StartTime+86400*eDate.day_of_week)/604800));
   }
 
Dmitry Fedoseev:

Je suis poli avec les gens.

Pourquoi une telle agression, Dimitri ?

J'ai simplement demandé comment utiliser correctement PositionsTotal() dans la boucle. Et pas vous personnellement, mais en général. Et tu as craqué. Qu'est-ce qui ne va pas, Dimitri ?

J'espère que ce n'était pas moi qui faisait référence à votre commentaire sur la déshumanisation de vos interlocuteurs.

 
Aleksei Stepanenko:

Le code de Dmitri n'a pas survécu, mais voici un remaniement basé sur celui-ci :

Oh b(a)ogies ! C'est une magnifique création d'un esprit de génie ! Incroyable ! Merci de partager. Je dois encore grandir et atteindre des hauteurs aussi colossales ! C'est comme une astuce de hacker. C'est incroyable. Je ne comprends pas ce qui est écrit. C'est un code parfait. Dommage que tu l'aies un peu modifié, il ne brille pas autant qu'il le pourrait.

 
Nikolay Mitrofanov:

Oh b(a)ogs ! C'est une magnifique création d'un esprit ingénieux !

Quel hors-la-loi !

 
Dmitry Fedoseev:

Ce qui est aussi très drôle, c'est que tout le monde s'énerve - oh quel mauvais code j'ai écrit pour un débutant... et tout le monde m'en parle... Incroyable !

Cela n'est jamais arrivé. Personne n'a critiqué le code. C'était juste une préférence et une vue de la boucle.

Et en ce moment avec PositionsTotal(), un différend est déjà apparu à ce sujet.

Il vous a semblé que vous étiez attaqué pour le code. Mais la réalité est que tout le monde s'en fout.

Il n'y a pas beaucoup de variantes de ce qui devrait être juste et de ce qui fonctionnerait en même temps. C'est une question de choix.


Et maintenant, avec mon merveilleux conseiller expert, qui vous montre quelle approche des boucles (parmi les trois fréquemment utilisées) choisir, tout le besoin d'argumenter sur la déclaration des boucles disparaît du tout) N'est-ce pas une merveilleuse nouvelle, Dmitry ?

Réjouissons-nous ensemble de notre réussite commune ! Nous avons conjointement résolu une longue et séculaire controverse sur le forum MQL ! Enfin ! Longue vie à tous les programmeurs et sympathisants !

 
Tio Nisla:
Je voulais ajouter plus tôt que si la fonction somefunc() effectue d'autres manipulations en plus de retourner un certain montant, par exemple en calculant des paramètres commerciaux, une telle utilisation peut provoquer des artefacts difficiles à attraper et conduire l'auteur du code à la stupeur : "Ht ??? Pourquoi 4 fois ? O_o F$#@ !!!! Il n'est pas censé être là trois fois ? Pourquoi mon EA me ment-il ?". C'est ce que j'ai appelé le "shithcod", dont un expert s'est indigné jusqu'à la racine des cheveux. Je n'en ai pas parlé, car c'est évident, mais vous l'avez fait pour moi. Mais vous n'avez pas pris en compte le fait que l'adressage par un index calculé dynamiquement sans réinitialisation du tableau est autre chose. Dans les sys nus, cela conduit généralement à GPF, dans les plus avec des pointeurs intelligents et des tableaux à une exception et son gestionnaire. Dans mql, il n'est pas évident de savoir à quoi cela mène.

Il ne devrait pas y avoir trois fois, mais une fois.

Pouvez-vous dessiner comment le rendre ainsi ?

 
Dmitry Fedoseev:

Je suis poli avec les gens.

Dimitri, c'est un spécialiste de très haut calibre.

 
Nikolay Mitrofanov:

J'écris sur la compréhension lors du développement. D'abord l'étude - ensuite l'action.

Au contraire, vous écrivez : d'abord l'action, ensuite la réflexion et le peignage.

Il semble que ce soit la même chose. Mais alors pourquoi écrivent-ils des exemples de code et de la documentation). Est-ce pour que les gens fassent moins de mal ? Je pense que c'est exactement la raison. Qu'en pensez-vous ?

Apprendre tout en se développant ? En fait, nous parlons des premières étapes de la programmation. C'est lors de l'écriture de la première EA qu'il est préférable d'obtenir d'abord des résultats, puis de réfléchir à la beauté et à la brièveté du code plus tard.

Je quitte maintenant cette boîte de dialogue. Tout cela est inutile.

 
Aleksei Stepanenko:

Le code de Dmitri n'a pas survécu, mais voici un remaniement basé sur celui-ci :

Je pense que cela devrait être plus simple, comme ceci

return ((int)(day_of_year/7))

Le numéro de séquence du jour de l'année est dans la structureMqlDateTime