Ramificação Condicional - 'GoTo' Kluge ?

 
Tentando descobrir um 'kluge' / 'work around' para Ramificação Condicional/GoTo em MQL4
 
Não é preciso se acostumar. Basta codificá-lo corretamente e o problema geralmente se resolve por si só. Afixe o problema e seu código.
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 que estamos nos referindo a coisas diferentes aqui. Quero ser capaz de saltar para QUALQUER lugar dentro do programa, em vez de simplesmente pular sobre algo que não satisfaz as condições e simplesmente ir para as próximas funções de declarações seqüenciais, etc.

A maioria das linguagens de programação dos dias modernos 'estruturadas' não permite o uso de comandos GoTo, pois eles podem ser verdadeiros pesadelos. A designação "estruturada", de fato, refere-se ao fato de não permitir o uso de declarações de GoTo. No entanto, se usadas com discrição, são momentos em que podem ser muito úteis. Entretanto, os problemas que podem surgir de seu uso são substanciais o suficiente para serem usados com a ressalva de que: "Uso por conta e risco próprios"!

Outra possibilidade é ter diferentes sub-rotinas externas, módulos, variáveis, funções, etc., que se pode 'chamar' quando necessário. Ou dentro do programa principal? ou em programas separados. Geralmente estas realizam sua função específica e depois retornam os dados resultantes de volta ao programa principal para utilizar. Estes são encontrados em algumas linguagens modernas de programação estruturada e não são tão carregados de perigo como o uso de comandos 'GoTo'. Talvez o uso de arquivos Include, Library ou mesmo .dll seja adequado para isto? Ainda não descobri como passar variáveis, dados, funções, etc. destes outros arquivos de volta para o programa principal. Nem se de fato eu posso utilizá-los desta maneira? Talvez em alguns casos eu possa conseguir isso com o uso de variáveis globais no EA.

 
Obrigado OneWithZachy
 
FourX:
Obrigado OneWithZachy

Realmente ????,

Eu li sua linha na época, vi sua avaliação, não tenho idéia do que é kluge, então nenhuma resposta :)

Para passar à função você pode passar seu valor ou passar como parâmetros, para passar para dll, você pode querer ver este vídeo de Patrick S Nouvion

Saiba mais ?

Escreva de volta se você tiver mais Qs :)

 

Eu concordo se você programar em funções que não precisa de GoTo

 
onewithzachy:

Realmente ????,

Eu li sua linha na época, vi sua avaliação, não tenho idéia do que é kluge, então nenhuma resposta :)

Para passar à função você pode passar seu valor ou passar como parâmetros, para passar para dll, você pode querer ver este vídeo de Patrick S Nouvion

Saiba mais ?

Escreva de volta se você tiver mais Qs :)

Ainda não me dediquei muito à função "Chamada". Embora na maior parte das vezes, espero descobrir como 'Pular' (!e não 'FTL' (< 8) e 'Ir para' lugares específicos nos programas EA, além de seqüencialmente. Pelo que você disse, não sei se vai funcionar para o que eu quero fazer. Mas definitivamente é bom aprender e saber sobre isso. Tudo a seu tempo e como eu preciso.

Um "Kluge" é algo que é "empedrado" a partir de uma variedade de coisas para alcançar algo que normalmente não é feito. Neste caso, estou tentando juntar uma função/comando 'GoTo' na MQL4 que não tem isso como característica padrão, capacidade e parte da MQL4. Como foi dito, há boas razões para não tê-los. Isto costumava ser parte padrão de muitas linguagens de programação, mas como elas podem muito facilmente causar uma MUITA quantidade de problemas, que elas tiraram de (quase?) todas as linguagens de programação, até onde eu sei. Eu não acho que C tem uma, não é mesmo? Eles o tiraram do COBOL e eu não acho que seja um deles em FORTRAN, nem em Visual BASIC ?

Caso em questão: Há décadas atrás escrevi um pequeno programa BASIC (segmento) de 5 ou 6 linhas com comandos múltiplos, aninhados e de ramificação condicional "GoTo" nele. Mesmo com o 'Tracer' ligado, eu não conseguia entender o que ele estava fazendo! )< 8) FYI: O comando para 'Tracer On' era 'TRON'. Reconhece a sigla? Este foi o nome do primeiro filme de animação digital que foi MUITO foleiro, feito pelos estúdios Walt Disney, que realmente não tinha muita história. Apenas algumas motocicletas supostamente hiper/velocidade leve correndo dentro de um (microscópico?) (leve?) labirinto/matriz. Acho que eles fizeram um remake disso. Mas como a primeira foi tão ruim, eu não a vejo. GI ainda é GO = GIGO

 
SDC:

Eu concordo se você programar em funções que não precisa de GoTo

Olá SDC,

Como a maioria da programação, a MQL4 é praticamente todas 'funções ' que, além de saltar algumas linhas, não tem uma verdadeira função 'GoTo' que estou tentando descobrir como fazer dentro de uma MQL4 EA Então não tenho certeza do que você está 'concordando' e do que você quer dizer e está se referindo no contexto desta busca? Por favor, amplie e explique. Não sendo argumentativo. Parece que você tem algo em mente e eu gostaria de saber o que é e como isso pode ser benéfico para nós.

 
Eu usava GOTOs nos dias da BBC Basic . . Eu até usei a BBC BASIC em meu trabalho em tempo integral por aproximadamente 7 anos . . até a BBC Basic tinha GOSUB e RETURN para que subrotinas(funções) pudessem ser usadas . . por que você gostaria de usar qualquer coisa parecida com um GOTo em MQL4 ? talvez você possa explicar sua necessidade ?
Razão: