Herramientas en GNU/Linux para estudiantes universitarios: | ||
---|---|---|
Anterior | Capítulo 2. Sintaxis de Octave | Siguiente |
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
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.
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.
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).
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.
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.