- 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
Visión general de las sentencias de control
Las sentencias de control están diseñadas para organizar la ejecución no lineal de otras sentencias, incluidas declaraciones, expresiones y sentencias de control anidadas. Pueden dividirse en 3 tipos:
- sentencias de repetición o bucles
- sentencias condicionales para elegir una de varias ramas de acciones alternativas
- sentencias de salto que cambian, si es necesario, el comportamiento estándar de los dos primeros tipos de sentencias
Las sentencias repeat y select constan de un encabezado (cada una con una sintaxis diferente) seguido de una sentencia controlada. Si una parte gestionada necesita especificar varias sentencias, utiliza una sentencia compuesta. Esta función no está disponible para las sentencias de salto. Sólo mueven el puntero interno en base al cual el programa determina qué sentencia se va a ejecutar en ese momento, de acuerdo con unas reglas especiales que abordaremos en las siguientes secciones.
En el caso más sencillo, sin sentencias de control, las sentencias se ejecutan secuencialmente, una tras otra, tal y como están escritas en el bloque de código (en particular, en el cuerpo de la función principal OnStart para scripts). Si en un bloque de código se encuentra una expresión con una llamada a otra función, el programa, según el mismo principio lineal, comienza a ejecutar sentencias dentro de la función llamada y, una vez ejecutadas todas, volverá al bloque de código de llamada y la ejecución continuará en la siguiente sentencia después de la llamada a la función. Las sentencias de control pueden cambiar significativamente esta lógica de trabajo.
Puede utilizar la selección dentro de bucles o viceversa, y el nivel de anidamiento es ilimitado. Sin embargo, demasiado anidamiento hace que el programa sea difícil de entender para el programador. Por lo tanto, se recomienda asignar (transferir) bloques de código a funciones (una o varias): dentro de cada función, tiene sentido mantener un nivel de anidamiento no superior a 2-3.
En MQL5 se admiten las siguientes sentencias de repetición:
- for bucle
- while bucle
- do bucle
Todos los bucles permiten ejecutar una o varias sentencias un número determinado de veces o hasta que se cumpla alguna condición booleana. Ejecutar el contenido de un bucle una vez se denomina iteración. Por regla general, los arrays se procesan en bucles o se realizan acciones periódicas repetitivas (normalmente en scripts o servicios).
Las sentencias condicionales incluyen:
- selección con if
- selección con switch
La primera permite especificar una o varias condiciones, en función de cuya verdad o falsedad se ejecutarán las opciones que tengan asignadas (una o varias sentencias). La última evalúa una expresión de tipo entero y selecciona una de varias alternativas en función de su valor.
Por último, las sentencias de salto son:
- break
- continue
- return
Más adelante abordaremos cada uno de ellas en detalle.
A diferencia de C++, MQL5 no tiene una declaración go to.