2.4. Expresiones de control de flujo

Las expresiones de control de flujo influyen en la forma en que el c�digo es ejecutado, y dividen el c�digo en bloques. Los bloques empiezan con una palabra reservada, por ejemplo while y terminan con la palabra reservada endwhile, formada por el prefijo end y la misma palabra que empez� el bucle. Tambi�n es posible acabar un bloque con la palabra end. El c�digo que se entre dichas palabras se denomina el cuerpo de la expresi�n de control.

Las siguientes construcciones son posibles

2.4.1. Sentencia if

	  if (condicion)
	     cuerpo-entonces
	  end
	
	  if (condicion)
	     cuerpo-entonces
	  else
	     cuerpo-alternativa
	  end
	
	  if (condicion)
	     cuerpo-entonces
	  elseif (condicion)
	     cuerpo-entonces
	  else
	     cuerpo-alternativa
	  end
	

Si la condici�n del if es cierta, entonces se ejecuta el cuerpo-entonces que est� a continuaci�n. Si es falso se pasa a evaluar la condici�n del siguiente elseif, ejecutando se el c�digo correspondiente si su condici�n es cierta, o pasando al siguiente en caso contrario. Finalmente, si ninguna condici�n evalu� cierta se ejecuta el cuerpo-alternativa.

Tanto los elseif, como el else son opcionales, sin embargo puede haber tantos elseif como sean necesarios.

2.4.2. Sentencia while

La sintaxis es la siguiente

	  while (condicion)
	     cuerpo
	  endwhile
	

Las sentencias del cuerpo se ejecutaran mientras condici�n se siga evaluando a cierto. Si en el cuerpo no se modifica alguna de las variables que se eval�an en la condici�n entraremos en un bucle infinito.

2.4.3. Sentencia for

La sintaxis de la sentencia for es muy semejante a la del while.

	  for var = expresion
	     body
	  endfor
	

En el bucle for se eval�a la expresi�n una vez al principio y se asigna a la variable var. Sin embargo la expresi�n de asignaci�n del for funciona un poco distinto que en el resto de los casos. En lugar de asignar la expresi�n completa, se asigna s�lo una columna y el bucle va iterando en todas las columnas. Por ejemplo

	  octave> for a=ones(2,1)*[1:3]
	  >     a
	  > endfor
	  a =
	    1
	    1
	  a =
	    2
	    2
	  a =
	    3
	    3
	

Normalmente el bucle for se usa cuando se quieren hacer las cosas cierto n�mero de veces (tantas como columnas tenga el resultado de evaluar la expresi�n).

2.4.4. Sentencias break y continue

Estas sentencias s�lo pueden usarse dentro de bucles for y while.

break salta fuera del bucle m�s interno que lo encierra. En el siguiente ejemplo, el bucle terminar� cuando la variable var valga 3:

	  for var=1:10
	     a
	     if(a==3)
	         break
	     endif
	  endfor
	

La sentencia continue es semejante, pero en lugar de terminar el bucle termina s�lo la iteraci�n actual. Ejemplo:

	  for var=1:10
	     if(a==3)
	         continue
	     endif
	     a
	  endfor
	

En este caso el bucle llegar� hasta el final (a=10), pero no se imprimir� el valor de a cuando esta valga 3.

Normalmente estas dos sentencias se usan desde dentro de condiciones if.

2.4.5. Manejo de excepciones

Octave soporta un manejo limitado de excepciones con la sentencia try. La sintaxis es la siguiente:

	  try
	     cuerpo
	  catch
	     c�digo_de_recuperacion
	  end_try_catch
	

El c�digo_de_recuperaci�n �nicamente es ejecutado si sucede alg�n error en el cuerpo. Durante la ejecuci�n del cuerpo no se imprime ning�n mensaje de error. Si alguno ocurre se almacenan en la variable __error_text__, accesible desde el c�digo_de_recuperaci�n.