7.4. Sentencias de control de flujo

Disponemos de varias sentencias para el control de flujo:

7.4.1. Estructura condicional If

Con este tipo de bucles se rezlizará una acción u otra dependiendo de si se cumple una condición:

Ejemplo 7-7. Estructura condicional If

In> sign(x):=If (IsPositiveReal(x), 1, -1);
Out> True;
In> sign(3);
Out> 1;
In> sign(2+3*I);
Out> -1;
In>
	  

Con esta estructura se emplean tres argumentos:

  1. El primer argumento es la condición y debe devolver True o False.

  2. El segundo argumento es la acción que se realizará cuando la condición dada por el primer argumento sea cierta.

  3. El tercer argumento es la acción que se realizará cuando la condición dada por el primer argumento sea falsa. Este argumento es opcional.

7.4.2. El bucle For

Con este tipo de bucle se ejecuta un conjunto de instrucciones mientras una condición es cierta:

Ejemplo 7-8. El bucle For

In> For(i:=1,i<=5, i++) Echo({i,i!});
1 2
2 2
3 6
4 24
5 120
Out> True;
In>
	  

7.4.3. El bucle ForEach

Con este tipo de bucle podemos realizar una determinada acción para los elementos de una lista:

Ejemplo 7-9. El bucle ForEach

In> ForEach(i,{1,2,3,4,5}) Echo(i^2);
1
4
9
16
25
In>
	  

Es necesario que especifiquemos la variable que se utilizará dentro del bucle. Esta variable tomará todos y cada uno de los datos de la lista.

7.4.4. El bucle While

Con este tipo de bucle ejecutamos una serie de instrucciones mientras una condición es cierta. Tenemos que tener cuidado de no entrar en un bucle infinito, para ello dentro del conjunto de instrucciones a ejecutar tendremos que incluir "algo" que haga que se alcance el final del bucle:

Ejemplo 7-10. El bucle While

In> i:=1;
Out> 1;
In> While(i<5) [ Echo(N(Sqrt(i))); i++;]
1
1.4142135623
1.7320508075
2
Out> 
In>
	  

7.4.5. El bucle Until

Este bucle funciona igual que el bucle While pero se ejecuta hasta que la condición dada se hace verdadera:

Ejemplo 7-11. El bucle Until

In> i:=1;
Out> 1;
In> Until(i>4) [ Echo(N(Sqrt(i))); i++;]
1
1.4142135623
1.7320508075
2
Out> 
In>