You are on page 1of 6

Gua Goblin 3

Programacion (if, while, for, switch)

Comandos utiles

Nuestro objetivo ser realizar comandos sin la necesidad de ingresarlos en la command window, para
ello contamos con los scripts y funciones m-file. Ambos son archivos .m y se crean en el editor de
MATLAB o usando cualquier editor de texto plano y guardando el archivo con extensin .m

Antes se revisaran las estructuras de control bsicas.

Estructuras de Control
Cuando ya los algoritmos de resolucin son ms complejos se requiere utilizar estructuras que alteren
el flujo normal de trabajo de los comandos, para ello en MATLAB se cuenta:

if, elseif, else


while, for
switch case
Otros

If - elseif - else
Permite realizar preguntas usando operadores lgicos durante el flujo del programa para realizar
distintas operaciones segn sea la respuesta

Por ejemplo podemos preguntar es 'x' menor que 2? si es as, entonces le sumamos 1, en caso
contario hacemos nada

La estructura del if, for y while siempre hay que indicar su fin y para ello se utiliza la palabra end

x=0.5;

if x<2
x=x+1;
end
x

x = 1.5000

Pero podemos realizar preguntas ms complejas y adems operaciones en casos de que la pregunta
resulta en una respuesta negativa

Por ejemplo es 'x' menor que 0? si es as se multiplica por -1, en caso contrario se multiplica por 2:

x=3;
if x<0
x=x*-1;
else
x=2*x;
end
x

x = 6

Y qu tal si resulta ser cero? Si es cero le asignaremos el valor de :

x=0;

if x<0
x=-1*x
elseif x==0
x=pi
else
x=2*x
end

x = 3.1416

En resumen: la primera pregunta se realiza usando if, las preguntas siguientes en caso de que la
primera sea negativa se realizan usando elseif, y si ninguna de las anteriores ocurre entonces se
usa else y se cierra la estructura escribiendo end.

For
Permiten realizar ciclos repetitititivos hasta que cierta condicin se cumpla, para el for siempre es para
realizar una tarea una 'n' cantidad de veces mientras que el while se ejecuta mientras una condicin
cualquiera expresadas con operadores lgicos sea falsa.

El for tiene la siguiente estructura:

for contador = inicio:paso:final

HACER_LO_QUE_HAYA_QUE_HACER

end

Por ejemplo sumar un milln de veces 0.1

Por costumbre a veces se usa como contadores las letras 'i' o 'j' las cuales no se recomiendan dado
que representan el nmero imaginario en MATLAB

x=0;

for t=1:10^6 %contador t desde 1 hasta un millon
x=x+0.1;
end
x

x = 1.0000e+05

Siempre que se deba realizar una misma tarea varias veces, ponemos aquella tarea dentro del ciclo
repetitivo.
Nota: Hemos de esperar que la suma un millon de veces de 0.1 resulte en cien mil
sin embargo en MATLAB esto no ocurre; si revisamos el valor de x pidiendo mas decimales usando el
comando format long:

format long
x

x =
1.000000000013329e+05

Alguna idea de Porque?

While
El while tiene una sintaxis parecida:

while CONDICION

HACERLOQUEHAYAQUEHACER

end

Cuando ya nuestra condicin de repeticin no es el nmero de pasos entonces es necesario usar el


while.

Ejemplo:

Vamos a realizar la sucesin de nmeros de hasta que se obtenga un nmero


superior a 10 o inferior a 3; dado que el while opera mientras la condiciones sea verdadera entonces se
debe poner la condicin negada, eso quiere decir que se realizaran los pasos mientras el numero sea
menor que 10 y mayor que 3.

x=pi; %punto inicial


while x<=10 && x>=3 %Condicion
x=x+x*sin(x/2.2) %Valores de la sucesion
end

x = 6.2512
x = 8.0994
x = 3.9356
x = 7.7780
x = 4.7932
x = 8.7276
x = 2.3138

Dado que el ultimo valor es 2.3 el cual es menor que 3, la condicin tiene un valor falso lo cual hace
terminar el while.
Ejemplo:

Usando while haremos una aproximacin del limitando el nmero de trminos a calcular y el error
de la aproximacin usando la expresin:

Cuando se usa la forma recurrente de x=x+algo o x=x*algo u otras operaciones, se dice que x es
un acumulador pues en cada iteracin almacena una operatoria recurrente en si misma.

tolerancia=10^-3; %nuestra tolerancia al error


%%Un valor mayor a la tolerancia para hacer verdadera la condicion del while
error=tolerancia+1;

k=0; %Tal como en la sumatoria, k desde 0
x=pi/4;
aprox=0; %Se inicia el acumulador en 0, neutro de la suma.
max_iter=10; %Maximo de iteraciones
while error>tolerancia && k <= max_iter

aprox=aprox+(-1)^k*x^(2*k+1)/(factorial(2*k+1));
error=abs(aprox-sin(pi/4));
k=k+1;
end
k

k = 3

aprox

aprox = 0.7071

error

error = 3.6265e-05

Nota: Es buena idea siempre tener un mximo de iteraciones a realizar dado que no todas las tareas
convergen a un resultado que satisface el objetivo del while, si eso ocurre el programa se queda
iterando para siempre.

Presionar CTRL+C para detener de forma anticipada un programa en MATLAB .


Switch
En otras ocasiones necesitamos realizar una gran cantidad de preguntas sobre una misma variable,
para ello en vez de usar una cadena de if-else se utiliza switch en el cual cada caso realiza la
comparacin de la variable con el valor, si estos coinciden entonces se ejecuta la operacin del caso; si
ninguno de los casos ocurre entonces se ejecuta la operacin en otherwise.

switch variable

case valor1

operacion1

case valor2

operacion2

otherwise

operacion3

end

x=0;

switch x
case 1
y=exp(x+1)
case 0
y=1
case -1
y=-exp(x+1)
otherwise
disp('valor no valido')
end

y = 1

Funciones M-File
En los scripts podemos realizar las lneas de cdigo tal como si fuesen ingresadas por la ventana de
comandos y cada variable quedara guardada normalmente en el workspace, sin embargo si se quiere
cambiar valores entonces se debe modificar el script.

Por otra parte las funciones m-file son programas que tienen datos de entrada y de salida definidos por
la siguiente sintaxis

El archivo comienza con la palabra function

Los datos de salida van entre parntesis cuadrados, los datos de entrada en parntesis
redondos.

IMPORTANTE ----> El nombre de la funcin debe concordar con el nombre del archivo .m
function [salida1,salida2]=nombre(entrada1,entrada2,entrada3)

Algoritmo
end

Las variables creadas en la funcin son variables locales, eso quiere decir que no quedan almacenada
en el workspace.

Ejemplo:

Armaremos la funcin por ramas en una funcin m-file

function y=ejemplo_ramas(x,a)

if x<0
y=a*x^3;
elseif x>=0 && x<3
y=x/2;
else
y=3*a;
end

end

Luego en la ventana de comandos se invoca la funcion usando la primera linea sin la palabra function:

valor=ejemplo_ramas(-2 , 5)

valor = -40

Los nombres x a y solo existen dentro de la funcin no alterando los valores de variables en
workspace; los nombre de las variables no importan al invocar la funcin, solo el nmero y orden de
variables de entrada y salida. La funcin ejemplo_ramas tiene dos variables de entrada y una de salida,
por tanto al invocarla hay que hacerlo con el mismo nmero de variables y en el orden correspondiente.

Referencias
MatWorks

<:>:<:>:<:>:<:>:<:>:<:>:<:>:<:>:<:>:<:>:<:>:<:>:<:>:<:>:<:>

By Samuel Muoz Lpez

Sugerencias y criticas a: s.munoz06@ufromail.cl

----- Sientente libre de modificar y redistribuir este documento bajo los terminos de GNU General Public
License en su version mas actual. https://www.gnu.org/licenses/

You might also like