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>