Branchement conditionnel - 'GoTo' Kluge ?

 
J'essaie de trouver une solution de contournement pour les branchements conditionnels dans MQL4.
 
Pas besoin de kluge. Il suffit de le coder correctement et le problème se résout généralement de lui-même. Postez le problème et votre code.
int nu=0; switch (nu){
   default:
   :
   if (condition) break;
   :
}
for(int nu=0; nu <= 0; nu++){
   :
   if (condition) break;
   :
}
if (nu == 0) Print("break was taken");
 
https://docs.mql4.com/basis/operators/if

https://docs.mql4.com/basis/operators/switch

 

Je pense que nous faisons référence à des choses différentes ici. Je veux pouvoir sauter à N'IMPORTE quel endroit du programme, plutôt que d'ignorer quelque chose qui ne remplit pas les conditions et de passer simplement aux fonctions séquentielles suivantes, etc.

La plupart des langages de programmation "structurés" modernes ne permettent pas l'utilisation de commandes GoTo, qui peuvent être de véritables cauchemars. La désignation "structurée" fait en fait référence au fait qu'ils ne permettent pas l'utilisation d'instructions GoTo. Cependant, s'ils sont utilisés avec discernement, ils peuvent parfois s'avérer très utiles. Cependant, les problèmes qui peuvent résulter de leur utilisation sont suffisamment importants pour qu'ils soient utilisés avec la mise en garde suivante : "Utilisez-les à vos risques et périls !

Une autre possibilité est d'avoir différentes sous-routines externes, modules, variables, fonctions, etc. que l'on peut "appeler" en cas de besoin. Soit dans le programme principal ? soit dans des programmes séparés. En général, ils exécutent leur fonction spécifique et renvoient les données résultantes au programme principal pour qu'il les utilise. On les trouve dans certains langages de programmation structurés modernes et ils ne sont pas aussi dangereux que les commandes "GoTo". Peut-être que l'utilisation des fichiers Include, Library ou même .dll sont adaptés à cela ? Je n'ai pas encore trouvé comment faire passer les variables, les données, les fonctions, etc. de ces autres fichiers dans le programme principal. Ni si je peux les utiliser de cette manière ? Peut-être que dans certains cas, je peux y parvenir avec l'utilisation de variables globales dans l'EA.

 
Merci OneWithZachy
 
FourX:
Merci OneWithZachy

Vraiment ? ??,

J'ai lu votre fil de discussion à l'époque, j'ai vu votre classement, je n'ai aucune idée de ce qu'est le kluge, donc pas de réponse :)

Pour passer à une fonction, vous pouvez passer sa valeur ou passer en paramètres, pour passer à une dll, vous pouvez voir cette vidéo de Patrick S Nouvion.

En savoir plus ?

écrivez-nous si vous avez d'autres questions :)

 

Je suis d'accord, si vous programmez en fonctions, vous n'aurez pas besoin de GoTo.

 
onewithzachy:

Vraiment ? ??,

J'ai lu votre fil de discussion à l'époque, j'ai vu votre classement, je n'ai aucune idée de ce qu'est le kluge, donc pas de réponse :)

Pour passer à une fonction, vous pouvez passer sa valeur ou passer en paramètres, pour passer à une dll, vous pouvez voir cette vidéo de Patrick S Nouvion.

En savoir plus ?

écrivez-moi si vous avez d'autres questions :)

Je n'ai pas encore approfondi la fonction 'Call'. Mais pour l'essentiel, j'espère comprendre comment 'Sauter' (pas 'FTL' cependant (< 8) et 'Aller à' des endroits spécifiques dans les programmes EA autrement que séquentiellement. D'après ce que vous avez dit, je ne sais pas si cela fonctionnera pour ce que je veux faire. Mais c'est certainement une bonne chose à apprendre et à connaître. Tout cela en temps voulu et selon mes besoins.

Un 'Kluge' est quelque chose qui est 'bricolé' à partir d'une variété de choses pour réaliser quelque chose qui n'est normalement pas fait. Dans ce cas, j'essaie de bricoler une fonction/commande 'GoTo' dans MQL4 qui ne dispose pas de cette fonctionnalité standard, de cette capacité et de cette partie de MQL4. Comme indiqué, il y a de bonnes raisons de ne pas les avoir. C'était une partie standard de nombreux langages de programmation, mais comme ils peuvent très facilement causer beaucoup de problèmes, ils les ont retirés de (presque ?) tous les langages de programmation pour autant que je sache. Je ne pense pas que le C en ait un, n'est-ce pas ? Ils l'ont retiré du COBOL et je ne pense pas qu'il y en ait un dans le FORTRAN, ni dans le Visual BASIC ?

Un exemple concret : Il y a des dizaines d'années, j'ai écrit un petit programme BASIC de 5 ou 6 lignes (segment) avec des commandes 'GoTo' multiples, imbriquées et conditionnelles. Même avec le 'Tracer', je ne pouvais pas comprendre ce qu'il faisait ! )< 8) Pour votre information : la commande "Tracer On" était "TRON", vous reconnaissez l'acronyme ? C'était le nom du premier film d'animation numérique TRÈS nul, réalisé par les studios Walt Disney, qui n'avait pas vraiment de scénario. Il s'agissait juste de motos censées rouler à une vitesse hyperluminique dans un labyrinthe/matrice (microscopique ?) (léger ?). Je crois qu'ils en ont fait un remake. Mais comme le premier était si mauvais, je ne l'ai pas vu. GI est toujours GO = GIGO

 
SDC:

Je suis d'accord, si vous programmez des fonctions, vous n'aurez pas besoin de GoTo.

Bonjour SDC,

Comme pour la plupart des programmes, MQL4 est pratiquement constitué de "fonctions " qui, à part le fait de sauter quelques lignes, n'a pas de véritable fonction "GoTo" que j'essaie de trouver comment faire dans une EA MQL4. Je ne suisdonc pas sûr de ce avec quoi vous êtes "d'accord" et de ce que vous voulez dire et à quoi vous faites référence dans le contexte de cette recherche ? Veuillez développer et expliquer. Je ne cherche pas à discuter. Il semble que vous ayez quelque chose en tête et j'aimerais savoir ce que c'est et comment cela pourrait nous être bénéfique.

 
J'ai utilisé les GOTO à l'époque du BBC Basic... J'ai même utilisé le BBC BASIC dans mon travail à plein temps pendant environ 7 ans... Même le BBC Basic avait GOSUB et RETURN pour pouvoir utiliser des sous-routines(fonctions)... Pourquoi voudriez-vous utiliser quelque chose qui ressemble à un GOTO dans MQL4 ?