Autoaprendizaje del lenguaje MQL5 desde cero - página 42

 
MrBrooklin:

Sigo estudiando el lenguaje de programación MQL5 y estoy publicando el código de un script, que es la continuación de una tarea de los participantes de este hilo. El script ha sido probado en todos los modos. No se ha detectado ningún problema. He establecido el número mínimo de parámetros de entrada para empezar. El código del script está escrito en inglés, los comentarios al código están en ruso, para facilitar el aprendizaje. Como he prometido antes, he intentado describir el script de forma accesible para un estudiante de 1º de la escuela de programación.

Saludos, Vladimir.

ok

ahora hacer el código de la lógica algorítmica más legible

resulta en sólo dos líneas:

if(have_time()>=Period_learning && have_time()!=0 && have_patience()==true)Print("Я выучу язык MQL5!");
else Print("Я не выучу язык MQL5!");

No hace falta ni que lo comentes.

 
Renat Akhtyamov:

ok

ahora hacer el código lógico algorítmico más legible

son sólo dos líneas:

if(have_time()>=Period_learning && have_time()!=0 && have_patience()==true)Print("Я выучу язык MQL5!");
else Print("Я не выучу язык MQL5!");

No hace falta ni que lo comentes.

¡Hola, Renat! Estoy de acuerdo, tal vez no debería escribir demasiados comentarios, pero ayudarán a todos los novatos sin conocimientos de programación. Si alguien hubiera hecho este trabajo antes que yo, el proceso de aprendizaje habría sido mucho más rápido. Los comentarios me ayudarán a memorizar mi propio código más rápidamente. Quizás los comentarios sean más cortos en el futuro.

Saludos, Vladimir.

 
Roman Shiredchenko:


Su código y su lógica son correctos. En mi IMHO, miré ayer, me sorprendió el cero a mí mismo al principio, pero luego me puse al día con el chip de diferencia... :-)

¡Hola, Roman! Sí, es la consecuencia de la educación técnica y mi lógica de pensamiento es un poco diferente, pero Peter tenía razón sobre el cero, así que cambié el código del script.

Saludos, Vladimir.

 
MrBrooklin:

Sigo estudiando el lenguaje de programación MQL5 y estoy publicando el código de un script, que es una continuación de una tarea de los participantes de este hilo. El script ha sido probado en todos los modos. No se ha detectado ningún problema. He establecido el número mínimo de parámetros de entrada para empezar. El código del script está escrito en inglés, los comentarios al código están en ruso, para facilitar el aprendizaje. Como he prometido antes, he intentado describir el script de forma accesible para un estudiante de 1º de la escuela de programación.

Saludos, Vladimir.

Siguen existiendo problemas de lógica:

1. Las funciones deben calcular algo. En este caso, ambas funciones inicializan las variables globales con el valor de sus variables de entrada y no hacen nada más. Es decir, si pones variables inpu en la condición, nada cambiará.

2. have_time es igual a Days_passed, que es establecido por el usuario. La condición dice: if(have_time() >= period_learning... que es 500, y luego dice && have_time() >0... esto es un error lógico. Si have_time() es superior a 500, entonces have_time() ya es superior a cero, por lo que este código es innecesario.

3. El resultado de preguntarse si se va a aprender o no debe depender sólo del gancho. Es necesario pensar en alguna variable con un valor indefinido que afecte al cálculo independientemente de sus deseos. Por lo demás, no hay duda: lo que has introducido es lo que tienes.


P.D. Si la entrada have_time > 0 controla así el valor de peroid_lerning, en caso de introducir un valor negativo o cero, es más correcto poner en condición && period_learning > 0.
 
Fast235:

En primer lugar, aprender a trabajar con variables de cadena de Dmitry Fedoseyev, infostringements son muy nublado en la etapa de estudiar el código de otras personas,

El artículo que reseñó lo deja todo claro, y de paso te enterarás de algunos detalles, hablo como lector de la mayoría de los artículos aquí, creo que nadie ha leído más que yo)

Hola, gracias por el consejo. Leo los artículos de Dmitry Fedoseyev, pero hasta ahora me cuesta aprender de sus artículos, ya que no tengo formación básica. Esperemos que sea más fácil. ¡Por cierto, escribir el script Learning_MQL5.mq5 me ayudó seriamente a entender qué es una función, para qué sirve y cómo se crea!

Saludos cordiales, Vladimir.

 
Реter Konow:
Los problemas de lógica se mantienen:

1. Las funciones tienen que calcular algo. En este caso, ambas funciones inicializan las variables globales con el valor de las variables pip y no hacen nada más. Es decir, si se ponen variables inpu en la condición, nada cambiará.

2. Have_time es igual a Days_passed, que es establecido por el usuario. La condición dice: if(have_time() >= period_learning... que es 500, y luego dice && have_time() >0... esto es un error lógico. Si have_time() es superior a 500, entonces have_time() ya es superior a cero, por lo que este código es innecesario.

3. El resultado de preguntarse si se va a aprender o no debe depender sólo del gancho. Es necesario pensar en alguna variable con un valor indefinido que afecte al cálculo independientemente de su deseo. Por lo demás, no hay duda: lo que has introducido es lo que tienes.

¡Hola Peter! Sabía que tendrías preguntas, especialmente sobre el punto 2.

El código aquí no es superfluo, sino muy inteligente. ¡Si intentas eliminar && have_time()!=0(lo has escrito como && have_time()>0) del código del script, el resultado será "¡Aprenderé MQL5!" dados los parámetros de entrada Period_learning=0 y Days_passed=0, ¡y esto no es admisible desde el punto de vista dogmático!

Estoy de acuerdo con los demás puntos: hay mucho que pensar.

Saludos, Vladimir.

 
MrBrooklin:

¡Hola Peter! Sabía que tendrías preguntas, especialmente sobre el punto 2.

El código aquí no es superfluo, sino bastante elaborado. ¡Si intentas eliminar && have_time()!=0(lo escribiste como && have_time()>0) del código del script, el resultado será "¡aprenderé MQL5!" dados los parámetros de entrada Period_learning=0 y Days_passed=0, ¡y esto no es permisible desde el punto de vista de los dogos!

Estoy de acuerdo con los demás puntos: hay mucho que pensar.

Saludos, Vladimir.

Vale, mira: have_time() devuelve esencialmente el valor de la variable inpu Days_passed. Si Days_passed se pone a cero, la entrada if(...have_time()!=0... no nos pasará a la condición, pero si Period_learning se pone a cero, pasaremos a la condición. Así, escribir Periodo_aprendizaje >0 nos protegerá simultáneamente de cero en la variable Días_pasados y de cero en la variable Periodo_aprendizaje, mientras que escribir if(... have_time()!=0 ... sólo desde cero en Días_pasados).
 
Реter Konow:
Vale, mira: la función have_time() devuelve esencialmente el valor de la variable de entrada Days_passed. Si Days_passed es cero, entonces la entrada if(...have_time()!=0... no nos dejará pasar a la condición, pero si Period_learning es cero, pasaremos a la condición. Así, escribir Periodo_aprendizaje >0 nos protegerá simultáneamente de cero en la variable Días_pasados y de cero en la variable Periodo_aprendizaje, mientras que escribir if(... have_time()!=0 ... sólo desde cero en Días_pasados).

Ya veo.

Respetuosamente, Vladimir.

 
MrBrooklin:

Ya veo.

Saludos, Vladimir.

En general, has dado un gran paso adelante: has dominado y empezado a utilizar las funciones, y estás de enhorabuena).

A este ritmo, pronto te quedarás atrás.

P.D. Perdón por no saludar. La gente no suele saludar aquí en el foro, lo que, por supuesto, no debe tomarse como una señal de falta de respeto. Recuerdo que hace unos cinco años un moderador me reprendió cuando saludé a los miembros del foro. )) Desde entonces, no saludo aquí, sólo en privado. Lo siento de nuevo)))
 
Реter Konow:
Sin duda ha dado un gran paso adelante en lo esencial: ha dominado y empezado a utilizar las funciones, por lo que hay que felicitarle, por supuesto)

A este ritmo, pronto te quedarás atrás.

P.D. Perdón por no saludar. La gente no suele saludar aquí en el foro, lo que, por supuesto, no debe tomarse como una señal de falta de respeto. Recuerdo que hace unos cinco años un moderador me reprendió cuando saludé a los miembros del foro. )) Desde entonces, no saludo aquí, sólo en privado. Lo siento de nuevo))

Gracias, Peter, por las palabras de ánimo.

En cuanto a las conversaciones educadas, sobre todo saludar y desear a todo el mundo buen día y buen humor. En mi opinión, el foro tiene muchas carencias. El trato respetuoso a los interlocutores es algo que se ha enseñado a nuestra generación desde la época soviética. Si la administración del sitio (foro) me reprende en cuanto a la bienvenida a los participantes, lo tendré en cuenta y seguiré las reglas.

Saludos, Vladimir.