5. ALGORITMOS Y PROGRAMAS
SENTENCIAS DE CONTROL DE FLUJO : if, for, while
Las bifurcaciones permiten realizar una u otra operación según se cumpla o no una condición, mientras que las bifurcaciones permiten repetir operaciones sobre datos distintos. Algunas de las bifurcaciones y bucles disponibles en MATLAB son:
IF:
Estructura con la siguiente forma:
if condicion1
sentencia1
elseif condicion2
sentencia2
..
else
sentenciaN
end
Si se cumple una de las condiciones del if se ejecutará esa condición y se sale de la bifurcación. No es necesario incluir una condición else, pero en el caso de que se haga, si no se cumple ninguna de las condiciones se ejecutará ésta última.
if x<0
fprintf('El numero es negativo\n');
elseif x==0
fprintf('El numero es 0\n');
else
fprintf('El numero es mayor que 0\n');
end
Este sencillo programa comprueba si un número introducido es positivo, negativo ó 0, y escribe el resultado por pantalla.
FOR:
for i=1:n
condicion/es
end
Este bucle repite sentencias un determinado número de veces. Para establecer el número de iteraciones se hace asignando un valor a i, que se recorrerá de 1 en 1 hasta alcanzar n.
Por ejemplo, si se tiene una matriz A y se quiere que duplicar su valor 5 veces se haría de la siguiente forma:
for i=1:5
A=A*2;
end
>> A=[1:3; 5:7; 9:-1:7]
A =
1 2 3
5 6 7
9 8 7
Después de crear la matriz A y ejecutar el script realizado, la matriz A resultante es de:
>> A
A =
32 64 96
160 192 224
288 256 224
WHILE:
while condición
sentencias
end
Estructura similar al for, en este caso se establece un bucle mientras se cumple la condición, y ejecuta las sentencias que contiene.
w=3;
while w>0
w=w-1;
w
end
Este sencillo script decrementa la variable w hasta que llegue a 0 y muestra en cada iteración su valor. La salida de la ejecución del script es la siguiente:
w =
3
w =
2
w =
1
w =
0
BREAK:
La sentencia break hace que termine la ejecución de los bucles for o while. Break sólo puede usarse dentro de estos bucles.
n=3;x=10;
for i=1:10
fprintf('Iteracion %d con x=%d\n', i, x);
if x<0
break;
end
x=x-n;
end
Este script resta un número a otro hasta que alcanza un valor negativo. Aunque en número de iteraciones sea mayor, en el momento que esa resta da como resultado un negativo se para la ejecución del bucle.