Está en la página 1de 40

Sesion 3

PROGRAMACIN
Y ALGORITMOS

Ing. Daniel Bernal
ALGORITMO
2
Universidad Industrial de Santander
Curso Bsico de MATLAB
Conjunto de pasos para hacer algo

Encender la lavadora.
Configurar la lavadora.
Agregar detergente.
Ingresar la ropa.
Esperar.
Sacar la ropa.

Diagrama de flujo
Universidad Industrial de Santander Curso
Bsico de MATLAB
3
COMANDOS DE ENTRADA Y
SALIDA
Universidad Industrial de Santander Curso
Bsico de MATLAB
4
MATLAB permite la interaccin entre usuario y
PC por medio de diversos comandos, los ms
utilizados son input, disp Y fprintf
Universidad Industrial de Santander
Curso Bsico de MATLAB
5
Input
Variable=input (texto deseado);

cadena_de_caracteres=input('Ingrese una cadena: ','s')
Disp
Universidad Industrial de Santander Curso
Bsico de MATLAB
6
Disp (texto deseado)
disp(Nombre de variable)

Este comando permite emitir mensajes y
variables de una manera ms estructurada,
teniendo en cuenta ciertos parmetros a
definir en este

Universidad Industrial de Santander Curso
Bsico de MATLAB
7
Fprintf(formato, variables)
PARMETRO SALIDA EJEMPLO
c carcter e
d decimal con signo 392
e notacin cientfica 3,9265e+2
g notacin corta 392.65
f decimal con punto flotante 392.65
x hexadecimal sin signo
7fa

Ejemplo
imagnense un programa en el cual se
solicita al usuario ingresar el radio de un
crculo, y este le emitir los valores del rea
y el permetro de ste. Para esto se requiere
que en el mensaje se pueda emitir el valor
numrico de las variables donde se
calculen.
Universidad Industrial de Santander Curso
Bsico de MATLAB
8
Ejemplo (Continuacin)
r=input('ingrese el valor del radio: ');
area=pi*r^2;
perimetro=2*pi*r;
fprintf('el rea del circulo es %g \n el
perimetro del circulo es %g', area,
perimetro);

Universidad Industrial de Santander Curso
Bsico de MATLAB
9
Ejemplos:
k = 128; fprintf('%10d\n123456789\n',k)

s = Cuenta regresiva
fprintf('%28s\n10,9,8,7,6,5,4,3,2,1,0\n',s)

x = pi; y = x/1e6; z = x*1e6;
fprintf('%d %8.2f %11.8f %11.0f\n',j,x,y,z);

Nombre=lucia; edad=25;
str = sprintf('%s tendr %d este ao.',
nombre, edad);
Universidad Industrial de Santander Curso
Bsico de MATLAB
10
ESTRUCTURAS BSICAS DE
PROGRAMACIN
Bifurcaciones

Universidad Industrial de Santander Curso
Bsico de MATLAB
11
OPERADORES RELACIONALES

Universidad Industrial de Santander Curso
Bsico de MATLAB
12
== Igual
< Menor que
<= Menor o igual que
> Mayor que
>= Mayor o igual que
~= Diferente de
OPERADORES LGICOS

Universidad Industrial de Santander Curso
Bsico de MATLAB
13
& AND (y lgico)
|
OR (O lgico)
~ NOT (negacin)
A B A&B A | B ~A
V V V V F
V F F V F
F V F V V
F F F F V
Universidad Industrial de Santander Curso
Bsico de MATLAB
14
ESTRUCTURAS SELECTIVAS
a=5.5 b=1.5 k=-3
a<100
a+b>=6.5
k~=0
~(a==b)
~(a==3*b)
-k<=k+6
a<10 & a>5
abs(k)>3 | k < b-a

SENTENCIA IF (SI)
Estructura condicional conformada a partir
de la sentencia if en su forma simple:

Universidad Industrial de Santander Curso
Bsico de MATLAB
15
Sintaxis:
if (condicin)
<sentencias>
end
SELECCIN DOBLE (if-else-end
Es el mismo comando anterior con la
posibilidad de hacer un procedimiento en
caso de no cumplirse la condicin
Universidad Industrial de Santander Curso
Bsico de MATLAB
16
Ejemplo If-Else
%% IF - else
a=input('ingrese el numero a evaluar: ');
if (a>=0)
disp('la raiz cuadrada es real')
else
disp('la raiz cuadrada es imaginaria')
end

Universidad Industrial de Santander Curso
Bsico de MATLAB
17
Otro Ejemplo
reply = input(Est seguro que desea
continuar? (s/n): ', 's');
if strcmp(reply,s')
disp(reply)
else
disp(proceso terminado)
end
Universidad Industrial de Santander Curso
Bsico de MATLAB
18
If - elseif
Este tipo de estructura permite establecer
operaciones para mltiples condiciones
Universidad Industrial de Santander Curso
Bsico de MATLAB
19
Ejemplo If-Elseif
%% If-elseif
a=input('ingrese el numero lados: ');
if (a==3)
disp('el poligono es un triangulo')
elseif (a==4)
disp('el poligono es un cuadrilatero')
elseif (a==5)
disp('el poligono es un pentagono')
else
disp( NO SE QUE FIGURA ES')
end

Universidad Industrial de Santander Curso
Bsico de MATLAB
20
Switch Case - Otherwise
Universidad Industrial de Santander Curso
Bsico de MATLAB
21
Es una sentencia anloga a la if elseif y se utiliza normalmente
en el uso de mens u opciones previamente definidas
instrucciones
switch expresion
case valor1
instrucciones
case valor2
instrucciones
case valor3

case

otherwise
instrucciones
end
opcion=input(Ingrese la opcin: );
switch opcion
case 1
b=input(Base del tringulo: );
h=input(Algura del tringulo: );
area=b*h/2;
case 2
lado=input(Lado del cuadrado: );
area=lado ^ 2;
case 3
radio=input(Radio: );
area=pi*radio ^ 2
otherwise
disp(Opcin incorrecta);
end
Ejercicio (switch case)
Hacer un programa que permita
seleccionar entre graficar la funcin seno
y coseno (usando Switchcase). El
programa debe solicitar el nombre de la
grafica en cadena de texto (ver input) y
graficarla en el intervalo de 0 a 2pi,
adems debe mostrar un error si la
cadena escrita no corresponde(ver
comando Warning)
Universidad Industrial de Santander Curso
Bsico de MATLAB
22
Solucin
x = 0:0.01:2*pi;
grafica=input('Que grafica desea ver escriba seno,
coseno: ','s');
switch grafica
case 'seno'
plot(x,sin(x))
title('Seno de 0 a 2 pi')
case {'coseno','Coseno'}
plot(x,cos(x))
title('Seno de 0 a 2 pi')
legend(grafica)
otherwise
warning('No seleccion ninguna opcin valida');
end
Universidad Industrial de Santander Curso
Bsico de MATLAB
23
Universidad Industrial de Santander Curso
Bsico de MATLAB
24
2) Implementar una funcin que dadas las coordenadas (x,y) de un
punto, indique a qu cuadrante pertenece.
I II
III IV
+x -x
+y
-y
1) Escribir un programa que permita leer 2 nmeros enteros
positivos m y n, y luego:
a)Calcule el producto de m por n si el nmero m es mayor que el
nmero n.
b)Calcule la raz cuadrada de m+n si el nmero m es menor que n
Ejercicios
Universidad Industrial de Santander Curso
Bsico de MATLAB
25
ESTRUCTURAS SELECTIVAS:
if, else-if, switch-case
ESTRUCTURAS REPETITIVAS:
for,while
PROGRAMACIN EN MATLAB
Estructuras repetitivas
For

Universidad Industrial de Santander Curso
Bsico de MATLAB
26
Universidad Industrial de Santander Curso
Bsico de MATLAB
27
ESTRUCTURAS REPETITIVAS
Bucle for
Determine cmo vara k en las siguientes instrucciones:

for k=3:20
for k=-2:14
for k=-2:-1:-10
for k=10:-1:0
for k=10:5
for k=2:3:12

Ejemplos
Universidad Industrial de Santander Curso
Bsico de MATLAB
28
a=[1 4 5 9 3 40]
for i=1:length(a)
residuo=mod(a(i),2);
if residuo==0
disp('par')
else
disp('impar');
end
end
clear all
n=8;
for i=1:1:n
a(i)=i.^2
end
clear all
k=1:8
a=k.^2
Ejercicio
Use un bucle for para sumar los elementos
del siguiente vector:
x = [1,23,43,72,87,56,98,33]
Compruebe su respuesta con la funcin
sum.
Universidad Industrial de Santander Curso
Bsico de MATLAB
29
clear all
x = [1,23,43,72,87,56,98,33];
b=length(x);
suma=0;
for n=1:b
suma=suma+x(n);
end
disp(suma)

----------------------------------------------

clear all
x = [1,23,43,72,87,56,98,33];
suma=0;
for n=x
suma=suma+n;
end
disp(suma)

Universidad Industrial de Santander Curso
Bsico de MATLAB
30
Soluciones
For Anidado
El trmino anidado hace referencia a un for
en medio de otro, estos son de especial
uso, al momento de recorrer una matriz,
un ejemplo de estos se presenta a
continuacin.

Universidad Industrial de Santander Curso
Bsico de MATLAB
31
Ejemplo For Anidado
%% For anidados
a=10*rand(20,30);
at=round(a);
[filas,columnas]=size(at);
cont=0;
for i=1:filas
for j=1:columnas
if(at(i,j)==2)
cont=cont+1;
end
end
end
fprintf('el numero de 2 en la matriz es %g \n',cont)

Universidad Industrial de Santander Curso
Bsico de MATLAB
32
Ejemplo: elaborar un programa que dada una matriz con
elementos de 0 a 10 cuente cuantos 2 hay en la matriz.
Universidad Industrial de Santander Curso
Bsico de MATLAB
33
ESTRUCTURAS REPETITIVAS
for vs. while
condicin
instrucciones
SENTENCIA while
Efectuar n veces
instrucciones
SENTENCIA for
Universidad Industrial de Santander Curso
Bsico de MATLAB
34
ESTRUCTURAS REPETITIVAS
Bucle while
instrucciones
while condicin
instrucciones
end

n=20;
for i=1:1:n
a(i)=i;
end

i=1;n=20;
while i<=n
a(i)=i;
i=i+1;
end
a=[1 4 5 9 3 40]
for i=1:length(a)
residuo=mod(a(i),2);
if residuo==0
disp(par)
else
disp(impar);
end
end

a=[1 4 5 9 3 40];
i=1;
while i<=length(a)
residuo=mod(a(i),2);
if residuo==0
disp(par)
else
disp(impar);
end
i=i+1;
end
Universidad Industrial de Santander Curso
Bsico de MATLAB
36
BUCLES CONTROLADOS POR CONDICIN
tecla='m';
while tecla~='b'
tecla=input('Tecla: ','s');
end
a=0;
b=0;
while a<b
a=input('a :');
b=input('b: ');
end
?
EJERCICIO
Universidad Industrial de Santander Curso
Bsico de MATLAB
37
Escribir un programa que encuentre
el primer valor n para el cual la
siguiente suma excede a 5000:
1+3+5+7+n
SOLUCIN
suma=0; n=1;
while suma<10000
suma=suma+n;
n=n+2;
end
disp(n);
Universidad Industrial de Santander Curso
Bsico de MATLAB
38
a=0; n=1;
while sum(a)<10000
a(n)=n;
n=n+2;
end
disp(n);
EJERCICIO
Universidad Industrial de Santander Curso
Bsico de MATLAB
39
Mostrar los nmeros del 1 al 10 en
forma descendente pero solo
impares

SOLUCIN
disp(Nmeros del 1 al 10 descendente solo impares)
numero = 10;
while numero >= 1
if mod(numero, 2) ~= 0
disp(numero)
end
numero = numero - 1;
end
disp(Fin del ejercicio)
Universidad Industrial de Santander Curso
Bsico de MATLAB
40
Universidad Industrial de Santander Curso
Bsico de MATLAB
41

También podría gustarte