Documentos de Académico
Documentos de Profesional
Documentos de Cultura
IME 1723565
Definición
Las estructuras de control permiten modificar el flujo de ejecución de las instrucciones
de un programa.
Estructuras de control
Control condicional: if, else, switch
Las instrucciones condicionales permiten seleccionar en tiempo de ejecución qué bloque de
código se va a ejecutar. La instrucción condicional más simple es una instrucción if. Por
ejemplo, este programa genera un número entero al azar, y si es par lo divide por 2:
% Generate a random number
a = randi(100, 1);
% If it is even, divide by 2
if rem(a, 2) == 0
disp('a is even')
b = a/2;
end
Las instrucciones if pueden incluir opciones alternativas mediante el uso de las palabras
clave opcionales elseif o else. Por ejemplo:
a = randi(100, 1);
if a < 30
disp('small')
elseif a < 80
disp('medium')
else
disp('large')
end
switch dayString
Rodolfo Tirado Tapia Programación Avanzada
IME 1723565
case 'Monday'
disp('Start of the work week')
case 'Tuesday'
disp('Day 2')
case 'Wednesday'
disp('Day 3')
case 'Thursday'
disp('Day 4')
case 'Friday'
disp('Last day of the work week')
otherwise
disp('Weekend!')
end
Tanto para if como para switch, MATLAB® ejecuta el código que corresponde a la
primera condición verdadera y luego sale del bloque de código. Cada instrucción
condicional requiere la palabra clave end.
En general, cuando los valores posibles tienen muchas opciones discretas y conocidas, las
instrucciones switch son más fáciles de leer que las instrucciones if. Sin embargo, no es
posible buscar desigualdades entre valores de switch y case. Por ejemplo, este tipo de
condición no se puede implementar con un switch:
yourNumber = input('Enter a number: ');
if yourNumber < 0
disp('Negative')
elseif yourNumber > 0
disp('Positive')
else
disp('Zero')
end
Comparaciones de arreglos en instrucciones condicionales
Es importante comprender cómo funcionan los operadores relacionales y las
instrucciones if con las matrices. Cuando desee comprobar la igualdad entre dos variables,
podría usar la siguiente condición:
if A == B, ...
iguales. El resultado es otra matriz de ceros y unos que muestra la igualdad elemento por
elemento.
A = magic(4); B = A; B(1,1) = 0;
A == B
ans =
0 1 1 1
1 1 1 1
1 1 1 1
1 1 1 1
isequal devuelve un valor escalar lógico de 1 (que representa la variable true) o 0 (false),
en lugar de una matriz, como la expresión a evaluar por la función if. Si se utilizan las
matrices A y B anteriores, se obtiene:
isequal(A, B)
ans =
0
El punto y coma que finaliza la instrucción interna suprime la impresión repetida, y la r que
aparece después del bucle muestra el resultado final.
Es recomendable sangrar los bucles para mejorar su legibilidad, en especial cuando están
anidados:
for i = 1:m
for j = 1:n
H(i,j) = 1/(i+j);
end
end
while
El bucle while repite un grupo de instrucciones una cantidad indefinida de veces bajo
control de una condición lógica. Un end correspondiente delimita las instrucciones.
El siguiente es un programa completo, que ilustra el uso de while, if, else y end, y utiliza
la bisección de intervalos para buscar un cero de un polinomio:
a = 0; fa = -Inf;
b = 3; fb = Inf;
while b-a > eps*b
x = (a+b)/2;
fx = x^3-2*x-5;
if sign(fx) == sign(fa)
a = x; fa = fx;
else
Rodolfo Tirado Tapia Programación Avanzada
IME 1723565
b = x; fb = fx;
end
end
x
Para códigos más complicados, las opciones de vectorización no siempre son tan obvias.
Preasignación
Si no puede vectorizar una parte de un código, puede hacer que sus bucles for funcionen
más rápido mediante la preasignación de los vectores o arreglos que contienen los
resultados de salida. Por ejemplo, este código utiliza la función zeros para preasignar el
vector creado en el bucle for. Con esto, el bucle for se ejecuta significativamente más
rápido:
r = zeros(32,1);
for n = 1:32
r(n) = rank(magic(n));
end
Crear archivos .m
Para crear un script, use el comando edit:
A continuación, agregue un código,
Guarde el archivo en la carpeta actual. Para ejecutar el script, escriba su nombre en la
línea de comandos: plotrand
También es posible ejecutar scripts desde el Editor. Para ello, presione el
botón Run (Ejecutar), .
Inicio
Bloque general
Final
Inmediatamente antes del nombre colocaremos entre corchetes nombres para las
variables de retorno.
Cuando vamos a construir una función con un sólo valor de retorno, como
sucederá en la mayoría de los casos, Matlab nos permite hacerlo de dos maneras: