Metatrader 4 ... Operador return() - Página 3

 

Publi

... Operador return()

 

Publi

Página 3 de 3 PrimerPrimer 123
Resultados 21 al 26 de 26


  1. #21
    Avatar de indovinello



    Reputación:
    Poder de reputación: 24

    Bolivia
    Mensajes: 3.773
    Créditos: 12.975

    Re: ... Operador return()


    Publi
    Cita Iniciado por Vinisius Ver mensaje
    -----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

    Muchas gracias robertomar y indovinello.

    Os he dado reputación a ambos.

    He entendido perfectamente el 99% de lo que me habéis explicado.

    Según entiendo para una función personalizada ... si se pone return(0) si que importa según las variables que hayamos referenciado por que devuelve el valor 0. Además debe ser del tipo referenciado int, double, bool , date time, string (no sé si me dejo alguno).

    Si es de tipo void se puede omitir el return por que este tipo de función no retorna nada. En todo caso si ponemos return, return() o return(0) no ocurriría nada porque no cogería ningún valor ¿correcto?. ¿no daría ningún tipo de error ?... ¿simplemente ignoraria el return (lo que sea) ?.

    Pero si es tipo Función especial Oninit(), OnDeinit(), OnTick()) si debe ponerse obligatoriamente el operador return al acabar la función especial pero dá igual poner return; () (0) (1) (2) etc... porque en estas funciones especiales no coge ningún valor que pueda haber entre paréntesis después del return , ¿correcto?.

    Los del tipo boleano no los entiendo muy bién. Seguramente se utilizaran en la mayoría de los casos los condicionantes if y else. Pero el valor de retorno para false debe ser return(false) o return(0) y para true debe ser return(true) o return(1) ??? . ¿podríais ponerme algún ejemplo para el tipo boleano ?.

    Gracias. Ya casi lo tengo.

    Saludos.
    El return debería existir en todos los casos, es la manera de decir al compilador que salga de la función, aunque pueda haber alguna versión del compilador que admita otro tipo de salida.

    Si la función retorna void, no importa, el return debe existir para salir de la función, aunque, en ese caso no hay que retornar nada.

    Repecto a las funciones que retornan un valor lógico, pues hay que especificar un return(true) ó return(false) . Lo que pasa es que internamente el compilador los maneja como integers. Algunos programadores se valen de esa "anomalía" del compilador y especifican return(1) ó return(0) respectivamente.

    SAludos.
    Foro de Forex Trading United




  2. Publi
    Publi


  3. #22

    Re: ... Operador return()

    Cita Iniciado por indovinello Ver mensaje
    Toda función debe devolver un valor de acuerdo con el tipo de la misma. Por ejemplo:

    int MiFuncion()

    Debe devolver un entero en todos los casos.

    Al utilizar la sentencia return dentro del código de la función estás indicando que quieres salir de la misma y, entre paréntesis especificas el valor. Por tanto, mejor especificarlo, el código es más claro.

    Ahora bien, el lenguaje permite ciertos atajos como los que indicas como son que un return, si va sin valor, devuelve un valor por defecto o bien, diferentes tipos de cast como es el caso de funciones lógicas que has mencionado que devuelven valores como 0 ó 1.

    Saludos.

    Solo añadir que, toda función, excepto si es una función de tipo void. Las de tipo void, como sabes mucho mejor que yo están hechas precisamente para eso, para que no retornen ningún valor. (Es porque cualquier lapsus puede llevar a confusión a nuestro amigo y a gente que parte de cero, como yo mismo estaba hace 4 días, y casi que sigo estando, jajajaja).

    Saludos campeón
    Foro de Forex Trading United

  4. #23

    Re: ... Operador return()

    Aquí tienes un resumen de los principales cambios en el nuevo lenguaje MQL4:

    What's New in MQL4 - MQL4 Documentation

    Y aquí te lo explica más extenso, con todo lujo de detalles:

    MetaTrader 4 Build 600 with Updated MQL4 Language and Market of Applications Released - MQL4 forum

    Eso que preguntas es parte de los cambios. Esa plantilla que te crea ya va como tiene que ir en el nuevo lenguaje.

    Saludos
    Foro de Forex Trading United

  5. #24
    Avatar de Vinisius
    Erectus


    Reputación:
    Poder de reputación: 12

    Espana
    Mensajes: 312
    Créditos: 126

    Re: ... Operador return()

    ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------


    No veo claro respecto a la función tipo boleano... si retornar return(false) y return(0) sería valido tanto uno como el otro para darle el valor a la función tipo bool, como pasaría también con return(true) y return(1) equivaldría a lo mismo. Osea, pregunto si daria igual poner una cosa o la otra.

    ¿ return es la manera de decir al compilador que salga de la función ? ... yo pensaba que el return lo que hace es darle un valor a la función y quien realmente le dice al compilador que salga es la última llave } de la función.... no el operador return.

    ¿Me estoy equivocando ?.


    Gracias. Un saludo.

    --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
    Foro de Forex Trading United
    Última edición por Vinisius; 21:32 a las


  6. #25

    Re: ... Operador return()

    Yo estoy igual que tú, metiéndole mano al código a saco en cuanto tengo un rato, jajaja.

    A ver, depende del tipo de función en la que estén puestas esas return.

    Por ejemplo, en las variables de tipo void, que son aquellas que no retornan nigún valor, es donde se usa :

    return;

    Así a secas, aunque también se podría omitir tal operador de retorno, ya que, el propio cierre de la llave de la función, es decir, el símbolo }, ya implica un return sin valor de retorno alguno. Por eso mucha gente lo que hace es no poner nada y cerrar la función directamente con la llave.

    En cuanto a return(valor que sea); pues obviamente nos retornará el valor que le hayamos asignado en cada caso (siempre que la función no sea de tipo void, claro, según lo que se ha comentado en el párrafo anterior.

    Por otro lado, return(0), retornaría el valor 0, o sea que dependiendo del tipo de función y el valor que estemos calculando en cada caso, nos asignará el valor 0 a la variable que estemos calculando o pidiéndole en la llamada a esa función. Por tanto, puede ser muy diferente a no retornar ningún valor.

    Imagina que tenemos una variable inicializada en valor 0:

    int variable = 0;

    Y en la siguiente línea llamamos a la función :

    Mi funcion();

    Y le asignamos a nuestra variable el valor que nos devuelva esa función:

    variable = Mi funcion();

    Vale, entonces se va a la funcion y nos pondrá en "variable" el valor que le demos en el return.

    En este caso imaginemos la función:

    int Mi funcion() {

    int a = 1;
    int b = 2;
    int c= a+b;

    return(c);
    }

    En este caso, el return nos devuelve el valor c (que en este ejemplo es 1+2, o sea 3) y por tanto nuestra variable quedará con valor 3.

    Es como si hubiésemos puesto arriba : int variable = 3;

    Por tanto, si lo que ponemos en el return es : return(0); la cosa cambia bastente, puesto que le asignamos a nuestra variable el valor 0 y no el resultado de a+b, o sea el valor 3 en este caso (como la teníamos asignada previamente en 0, pues se quedará igualmente en 0, pero imagina que antes de llamar a la función la tuviéramos asignada como valor 30, pues ahora se nos cambiaría a 0, en lugar de al resultado que hemos calculado en nuestra función)..

    Si le ponemos return;
    o bien le ponemos return();

    entonces no nos devolverá ningún valor y por tanto nuestra variable quedará como estaba, es decir, con el valor que tuviera asignado antes de llamar a nuestra función (en este caso la teníamos inicializada en 0, así que seguirá en 0).

    Ahora bien, esto es para las funciones definidas por nosotros en el código, pero existen como todo el mundo sabe unas funciones especiales que son el corazón del EA o indicador (init(), deinit() y start(); o en la nueva versión del código mql4 Oninit(), OnDeinit(), OnTick()). Ok, pues en estas el valor asignado en el return sí que se suele poner 0 (return(0), aunque según he leído en este tipo de funciones especiales da igual el valor que el pongas, porque no va a ningún sitio ese valor.

    Espero haber podido aclarar algo en la medida de mis modestas posibilidades.

    Saludos y abrazos compañero
    Foro de Forex Trading United
    Última edición por robertomar; 09:24 a las


  7. Gracias MariaJF Gracias por este post
  8. #26
    Avatar de Vinisius
    Erectus


    Reputación:
    Poder de reputación: 12

    Espana
    Mensajes: 312
    Créditos: 126

    Re: ... Operador return()


    Publi
    ------------------------------------------------------------------------------------------------------------------------------------

    OK y muchas gracias a ambos sobre todo por aguantarme. Sois unos santos.


    Un abrazo.
    Foro de Forex Trading United

Página 3 de 3 PrimerPrimer 123
This website uses cookies
Utilizamos cookies propias y de terceros para elaborar información estadística y mostrarle publicidad personalizada a través del análisis de su navegación. Si continúa navegando acepta su uso. Más información y política de cookies.
     

 

Publi


Aviso Legal
Ley Orgánica 15/1999, de 13 de diciembre, de Protección de Datos de Carácter Personal