- Sentencias compuestas (bloques de código)
- Declaraciones y definiciones
- Sentencias simples (expresiones)
- Visión general de las sentencias de control
- Operador cíclico for
- Operador cíclico while
- Operador cíclico do
- Operador condicional if
- Operador switch
- Operador break
- Operador continue
- Operador return
- Sentencia vacía
Sentencias simples (expresiones)
Las sentencias simples contienen expresiones tales como asignar nuevos valores o resultados de cálculos a variables, así como llamadas a funciones.
Formalmente, la sintaxis es la siguiente:
expression ; |
El punto y coma del final es importante. Dado que los códigos fuente de MQL5 admiten formato libre, el ';' es el único delimitador que le indica al compilador dónde terminó la declaración anterior y comenzó la siguiente. Por regla general, las declaraciones se escriben en líneas separadas, como por ejemplo así:
int i = 0, j = 1, k; // declaration statement
|
Sin embargo, las normas no prohíben la escritura de código abreviado:
int i=0,j=1;++i;j+=i;k=(i+1)*(j+1);Print(i," ",j); |
Si no fuera por los ';', las expresiones adyacentes podrían «pegarse» silenciosamente y dar lugar a resultados no deseados. Por ejemplo, la expresión x = y - 10 * z bien podría ser dos: x = y; y -10 * z; (-10 con un signo menos unario). ¿Cómo es posible?
El hecho es que es sintácticamente permisible escribir una sentencia que realmente funcione en vano, es decir, que no guarde el resultado. He aquí otro ejemplo:
i + j; // warning: expression has no effect |
El compilador emite un aviso del tipo «la expresión no tiene efecto». La posibilidad de construir tales expresiones es necesaria porque los tipos de objeto, que veremos en la Parte 3, permiten la sobrecarga de operadores, es decir, podemos sustituir el significado habitual de los símbolos de los operadores por algunas acciones específicas. Entonces, si el tipo de i y j no es int, sino alguna clase con una operación de suma sobrescrita, tal notación tendrá efecto y el compilador no emitirá ningún aviso.
Las sentencias simples sólo pueden escribirse dentro de sentencias compuestas. Por ejemplo, llamar a la función Print fuera de una función no funcionará:
Print("Hello ", Symbol());
|
Obtendremos una cascada de errores::
'Print' - unexpected token, probably type is missing?
|
La más relevante, en este caso, es la última: «las expresiones no están permitidas en el contexto global».