'Diramazione condizionale - 'GoTo' Kluge ?

 
Cercando di capire un 'kluge' / 'work around' per Conditional Branching/GoTo in MQL4
 
Non c'è bisogno di kluge. Basta codificare correttamente e il problema di solito si risolve da solo. Pubblica il problema e il tuo codice.
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

 

Penso che ci stiamo riferendo a cose diverse qui. Voglio essere in grado di saltare a QUALSIASI punto all'interno del programma, invece di saltare su qualcosa che non soddisfa le condizioni e passare solo alle successive istruzioni sequenziali, funzioni ecc.

La maggior parte dei moderni linguaggi di programmazione 'strutturati' non permettono l'uso di comandi GoTo perché possono essere veri e propri incubi. La designazione 'strutturato' infatti si riferisce al fatto che non permettono l'uso di istruzioni GoTo. Tuttavia, se usati con discrezione, ci sono momenti in cui possono essere molto utili. Tuttavia i problemi che possono sorgere dal loro uso sono abbastanza sostanziali che devono essere usati con l'avvertenza di: "Usare a proprio rischio e pericolo!

Un'altra possibilità è quella di avere diverse sub-routine esterne, moduli, variabili, funzioni ecc. che si possono "chiamare" quando necessario. Sia all'interno del programma principale che in altri separati. Generalmente queste eseguono la loro specifica funzione e poi restituiscono i dati risultanti al programma principale per utilizzarli. Questi si trovano in alcuni linguaggi di programmazione strutturati moderni e non sono così pericolosi come l'uso dei comandi 'GoTo'. Forse l'uso di Include, Library o anche di file .dll sono adatti a questo? Non ho ancora scoperto come passare variabili, dati, funzioni ecc. da questi altri file al programma principale. Né se in effetti posso utilizzarli in questo modo? Forse in alcuni casi posso ottenere questo con l'uso di variabili globali nell'EA.

 
Grazie OneWithZachy
 
FourX:
Grazie OneWithZachy

Davvero?

Ho letto il tuo thread allora, ho visto la tua valutazione, non ho idea di cosa sia kluge, quindi nessuna risposta :)

Per passare alla funzione si può passare il suo valore o passare come parametri, per passare a dll, si può vedere questo video di Patrick S Nouvion

Imparare di più?

scrivi se hai altre domande :)

 

Sono d'accordo che se si programma in funzioni non si ha bisogno di GoTo

 
onewithzachy:

Davvero?

Ho letto il tuo thread allora, ho visto la tua valutazione, non ho idea di cosa sia kluge, quindi nessuna risposta :)

Per passare alla funzione si può passare il suo valore o passare come parametri, per passare a dll, si può vedere questo video di Patrick S Nouvion

Imparare di più?

Scrivete se avete altre domande :)

Non ho ancora approfondito la funzione 'Call'. Anche se per la maggior parte, spero di capire come 'Saltare' (!non 'FTL' però (< 8) e 'GoTo' luoghi specifici nei programmi EA diversi dal sequenziale. Da quello che avete detto, non so se funzionerà per quello che voglio fare. Ma sicuramente è bene imparare e conoscere. Tutto a tempo debito e come ne ho bisogno.

Un 'Kluge' è qualcosa che è 'cobbled together' da una varietà di cose per ottenere qualcosa che normalmente non viene fatto. In questo caso sto cercando di mettere insieme una funzione/comando 'GoTo' in MQL4 che non ha questa come caratteristica standard, capacità e parte di MQL4. Come detto ci sono buone ragioni per non averle. Questo era parte standard di molti linguaggi di programmazione, ma siccome possono facilmente causare un sacco di problemi, li hanno tolti da (quasi?) tutti i linguaggi di programmazione, per quanto ne so. Non credo che C ne abbia uno, vero? L'hanno tolto dal COBOL e non credo che ce ne sia uno nel FORTRAN, né nel Visual BASIC?

Caso emblematico: Decenni fa scrissi un piccolo programma BASIC di 5 o 6 righe (segmento) con comandi 'GoTo' multipli, annidati e condizionati. Anche con il 'Tracer' acceso, non riuscivo a capire cosa stesse facendo! )< 8) Per tua informazione: il comando per 'Tracer On' era 'TRON', riconosci l'acronimo? Questo era il nome del primo film d'animazione digitale che era MOLTO zoppo, fatto dai Walt Disney Studios, che non aveva davvero una linea di storia. Solo alcune motociclette presumibilmente iper/veloci che corrono all'interno di un labirinto/matrice (microscopico?) (di luce?). Credo che ne abbiano fatto un remake. Ma siccome il primo era così brutto, non l'ho visto. GI è ancora GO = GIGO

 
SDC:

Sono d'accordo che se si programma in funzioni non si ha bisogno di GoTo

Ciao SDC,

Come per la maggior parte della programmazione, MQL4 è praticamente tutto 'Funzioni ' che oltre a saltare alcune linee, non ha una vera funzione 'GoTo' che sto cercando di capire come fare all'interno di un MQL4 EA Quindi non sono sicuro di cosa tu sia 'd'accordo' e cosa intendi e ti riferisci nel contesto di questa ricerca? Per favore espandi e spiega. Non sono polemico. Sembra che tu abbia qualcosa in mente e mi piacerebbe sapere cos'è e come potrebbe essere utile per noi.

 
Ho usato i GOTO ai tempi del BBC Basic . . . Ho anche usato il BBC BASIC nel mio lavoro a tempo pieno per circa 7 anni . . . anche il BBC Basic aveva GOSUB e RETURN in modo che le subroutine(funzioni) potessero essere utilizzate . . . perché si dovrebbe mai voler utilizzare qualcosa che assomiglia a un GOTo in MQL4? Forse si può spiegare la vostra necessità?