``Control de Flujo de Programas'' - inf.utfsm.clcvalle/CAplicada/Capitulo5.pdf · “Control de...
Transcript of ``Control de Flujo de Programas'' - inf.utfsm.clcvalle/CAplicada/Capitulo5.pdf · “Control de...
![Page 1: ``Control de Flujo de Programas'' - inf.utfsm.clcvalle/CAplicada/Capitulo5.pdf · “Control de Flujo de Programas” Carlos Valle Vidal Introducci´on Decisiones Subfunciones Las](https://reader031.fdocuments.ec/reader031/viewer/2022012405/5ba4b18e09d3f264368b4f0c/html5/thumbnails/1.jpg)
“Control deFlujo de
Programas”
Carlos ValleVidal
Introduccion
Decisiones
“Control de Flujo de Programas”
Carlos Valle [email protected]
Departamento de Informatica -Universidad Tecnica Federico Santa Marıa
Rancagua, Agosto 2009
1 / 28
![Page 2: ``Control de Flujo de Programas'' - inf.utfsm.clcvalle/CAplicada/Capitulo5.pdf · “Control de Flujo de Programas” Carlos Valle Vidal Introducci´on Decisiones Subfunciones Las](https://reader031.fdocuments.ec/reader031/viewer/2022012405/5ba4b18e09d3f264368b4f0c/html5/thumbnails/2.jpg)
“Control deFlujo de
Programas”
Carlos ValleVidal
Introduccion
Decisiones
Temario
1 Introduccion
2 Decisiones
2 / 28
![Page 3: ``Control de Flujo de Programas'' - inf.utfsm.clcvalle/CAplicada/Capitulo5.pdf · “Control de Flujo de Programas” Carlos Valle Vidal Introducci´on Decisiones Subfunciones Las](https://reader031.fdocuments.ec/reader031/viewer/2022012405/5ba4b18e09d3f264368b4f0c/html5/thumbnails/3.jpg)
“Control deFlujo de
Programas”
Carlos ValleVidal
Introduccion
Decisiones
Temario
1 Introduccion
2 Decisiones
3 / 28
![Page 4: ``Control de Flujo de Programas'' - inf.utfsm.clcvalle/CAplicada/Capitulo5.pdf · “Control de Flujo de Programas” Carlos Valle Vidal Introducci´on Decisiones Subfunciones Las](https://reader031.fdocuments.ec/reader031/viewer/2022012405/5ba4b18e09d3f264368b4f0c/html5/thumbnails/4.jpg)
“Control deFlujo de
Programas”
Carlos ValleVidal
Introduccion
Decisiones
Introduccion
Este capıtulo introduce conceptos de programacion general,es decir, aspectos que son comunes a todos los lenguajes deprogramacion.
Veremos sentencias que permiten tomar decisiones ysentencias que permiten realizar iteraciones.
Al final de este capıtulo se aprendera a utilizar MATLAB comocualquier lenguaje de programacion
4 / 28
![Page 5: ``Control de Flujo de Programas'' - inf.utfsm.clcvalle/CAplicada/Capitulo5.pdf · “Control de Flujo de Programas” Carlos Valle Vidal Introducci´on Decisiones Subfunciones Las](https://reader031.fdocuments.ec/reader031/viewer/2022012405/5ba4b18e09d3f264368b4f0c/html5/thumbnails/5.jpg)
“Control deFlujo de
Programas”
Carlos ValleVidal
Introduccion
Decisiones
Temario
1 Introduccion
2 Decisiones
5 / 28
![Page 6: ``Control de Flujo de Programas'' - inf.utfsm.clcvalle/CAplicada/Capitulo5.pdf · “Control de Flujo de Programas” Carlos Valle Vidal Introducci´on Decisiones Subfunciones Las](https://reader031.fdocuments.ec/reader031/viewer/2022012405/5ba4b18e09d3f264368b4f0c/html5/thumbnails/6.jpg)
“Control deFlujo de
Programas”
Carlos ValleVidal
Introduccion
Decisiones
Creacion de vectores y matrices
Las decisiones permiten realizar distintas accionesdependiendo de una condicion logica.
6 / 28
![Page 7: ``Control de Flujo de Programas'' - inf.utfsm.clcvalle/CAplicada/Capitulo5.pdf · “Control de Flujo de Programas” Carlos Valle Vidal Introducci´on Decisiones Subfunciones Las](https://reader031.fdocuments.ec/reader031/viewer/2022012405/5ba4b18e09d3f264368b4f0c/html5/thumbnails/7.jpg)
“Control deFlujo de
Programas”
Carlos ValleVidal
Introduccion
Decisiones
Condiciones
Las condiciones logicas son expresiones que se formanutilizando operadores relacionales y conectivos logicos.
7 / 28
![Page 8: ``Control de Flujo de Programas'' - inf.utfsm.clcvalle/CAplicada/Capitulo5.pdf · “Control de Flujo de Programas” Carlos Valle Vidal Introducci´on Decisiones Subfunciones Las](https://reader031.fdocuments.ec/reader031/viewer/2022012405/5ba4b18e09d3f264368b4f0c/html5/thumbnails/8.jpg)
“Control deFlujo de
Programas”
Carlos ValleVidal
Introduccion
Decisiones
Operadores Relacionales
El lenguaje de programacion de MATLAB dispone de lossiguientes operadores relacionales:
< menor que
> mayor que
<= menor o igual que
>= mayor o igual que
== igual que
∼= distinto que
Se pueden utilizar operadores relacionales para compararescalares, dos arreglos del mismo tamano o un arreglo conun escalar.
8 / 28
![Page 9: ``Control de Flujo de Programas'' - inf.utfsm.clcvalle/CAplicada/Capitulo5.pdf · “Control de Flujo de Programas” Carlos Valle Vidal Introducci´on Decisiones Subfunciones Las](https://reader031.fdocuments.ec/reader031/viewer/2022012405/5ba4b18e09d3f264368b4f0c/html5/thumbnails/9.jpg)
“Control deFlujo de
Programas”
Carlos ValleVidal
Introduccion
Decisiones
Ejemplo
>> A=[-6 4 1 ; 19 -2 80; -2 -3 6]A =-6 4 119 -2 80-2 -3 6
>> A>1ans =0 1 01 0 10 0 1
9 / 28
![Page 10: ``Control de Flujo de Programas'' - inf.utfsm.clcvalle/CAplicada/Capitulo5.pdf · “Control de Flujo de Programas” Carlos Valle Vidal Introducci´on Decisiones Subfunciones Las](https://reader031.fdocuments.ec/reader031/viewer/2022012405/5ba4b18e09d3f264368b4f0c/html5/thumbnails/10.jpg)
“Control deFlujo de
Programas”
Carlos ValleVidal
Introduccion
Decisiones
Operadores Logicos
Se considera como verdadero cualquier valor distinto de cero.
Valor falso es el cero
Operador Descripcion& and— or∼ not
10 / 28
![Page 11: ``Control de Flujo de Programas'' - inf.utfsm.clcvalle/CAplicada/Capitulo5.pdf · “Control de Flujo de Programas” Carlos Valle Vidal Introducci´on Decisiones Subfunciones Las](https://reader031.fdocuments.ec/reader031/viewer/2022012405/5ba4b18e09d3f264368b4f0c/html5/thumbnails/11.jpg)
“Control deFlujo de
Programas”
Carlos ValleVidal
Introduccion
Decisiones
Ejemplos: Tablas de Verdad
A B ∼ A A|B A&B xor(A,B)0 0 1 0 0 00 1 1 1 0 11 0 0 1 0 11 1 0 1 1 0
11 / 28
![Page 12: ``Control de Flujo de Programas'' - inf.utfsm.clcvalle/CAplicada/Capitulo5.pdf · “Control de Flujo de Programas” Carlos Valle Vidal Introducci´on Decisiones Subfunciones Las](https://reader031.fdocuments.ec/reader031/viewer/2022012405/5ba4b18e09d3f264368b4f0c/html5/thumbnails/12.jpg)
“Control deFlujo de
Programas”
Carlos ValleVidal
Introduccion
Decisiones
Control de Flujo
if expresiones logicasSentencias
end
Ejemplo:
if d < 40cuenta=cuenta+1disp(d)
end
12 / 28
![Page 13: ``Control de Flujo de Programas'' - inf.utfsm.clcvalle/CAplicada/Capitulo5.pdf · “Control de Flujo de Programas” Carlos Valle Vidal Introducci´on Decisiones Subfunciones Las](https://reader031.fdocuments.ec/reader031/viewer/2022012405/5ba4b18e09d3f264368b4f0c/html5/thumbnails/13.jpg)
“Control deFlujo de
Programas”
Carlos ValleVidal
Introduccion
Decisiones
Ejemplo
Por ejemplo si el intervalo de una variable es menor que unofijar el valor de xinc a intervalo/10; sino, fijar el valor de xinc a0.1.
if interval < 1xinc = interval/10;
elsexinc = 0.1;
end
13 / 28
![Page 14: ``Control de Flujo de Programas'' - inf.utfsm.clcvalle/CAplicada/Capitulo5.pdf · “Control de Flujo de Programas” Carlos Valle Vidal Introducci´on Decisiones Subfunciones Las](https://reader031.fdocuments.ec/reader031/viewer/2022012405/5ba4b18e09d3f264368b4f0c/html5/thumbnails/14.jpg)
“Control deFlujo de
Programas”
Carlos ValleVidal
Introduccion
Decisiones
IFs anidados
Cuando muchos niveles de if-else estan anidados, resultadifıcil determinar cual expresion logica debe ser verdadera (ofalsa).
En este caso la construccion elseif ayuda a clarificarla logicadel programa.
14 / 28
![Page 15: ``Control de Flujo de Programas'' - inf.utfsm.clcvalle/CAplicada/Capitulo5.pdf · “Control de Flujo de Programas” Carlos Valle Vidal Introducci´on Decisiones Subfunciones Las](https://reader031.fdocuments.ec/reader031/viewer/2022012405/5ba4b18e09d3f264368b4f0c/html5/thumbnails/15.jpg)
“Control deFlujo de
Programas”
Carlos ValleVidal
Introduccion
Decisiones
Ejemplo: elseif
if temperature > 100disp(’Muy alta temperatura - mal funcionamiento’)
elseif temperature > 90disp(’Rango normal’)
elseif temperature > 50disp(’bajo el rango normal’)
elsedisp(’muy frıo - apagar equipo’)
end
15 / 28
![Page 16: ``Control de Flujo de Programas'' - inf.utfsm.clcvalle/CAplicada/Capitulo5.pdf · “Control de Flujo de Programas” Carlos Valle Vidal Introducci´on Decisiones Subfunciones Las](https://reader031.fdocuments.ec/reader031/viewer/2022012405/5ba4b18e09d3f264368b4f0c/html5/thumbnails/16.jpg)
“Control deFlujo de
Programas”
Carlos ValleVidal
Introduccion
Decisiones
Sentencia IF: Condiciones
Una observacion muy importante: la condicion del if puedeser una condicion matricial, del tipo A == B, donde A y B sonmatrices del mismo tamano.
Para que se considere que la condicion se cumple, esnecesario que sean iguales de dos a dos todos los elementosde las matrices A y B.
Una condicion en la forma A∼= B exige que todos loselementos sean diferentes dos a dos. Bastarıa que hubierados elementos iguales para que la condicion no se cumpliese
16 / 28
![Page 17: ``Control de Flujo de Programas'' - inf.utfsm.clcvalle/CAplicada/Capitulo5.pdf · “Control de Flujo de Programas” Carlos Valle Vidal Introducci´on Decisiones Subfunciones Las](https://reader031.fdocuments.ec/reader031/viewer/2022012405/5ba4b18e09d3f264368b4f0c/html5/thumbnails/17.jpg)
“Control deFlujo de
Programas”
Carlos ValleVidal
Introduccion
Decisiones
La sentencia switch
La sentencia switch realiza una funcion analoga a unconjunto de if . . . elseif concatenados. Su forma general es lasiguiente:
switch expresioncase case_expr1,
bloque1case {case_expr2, case_expr3, case_expr4,...}
bloque2...otherwise, % opcion por defecto
bloque3end
17 / 28
![Page 18: ``Control de Flujo de Programas'' - inf.utfsm.clcvalle/CAplicada/Capitulo5.pdf · “Control de Flujo de Programas” Carlos Valle Vidal Introducci´on Decisiones Subfunciones Las](https://reader031.fdocuments.ec/reader031/viewer/2022012405/5ba4b18e09d3f264368b4f0c/html5/thumbnails/18.jpg)
“Control deFlujo de
Programas”
Carlos ValleVidal
Introduccion
Decisiones
Switch: Ejemplo
c=input(’Ingrese opcion: ’);switch c,
case 1,disp(’valor uno’)
case {2, 5, 13}disp(’valor 2, 5 o 13’)
case 4,disp(’valor 4’)
otherwise,disp(’ninguno’)
end
18 / 28
![Page 19: ``Control de Flujo de Programas'' - inf.utfsm.clcvalle/CAplicada/Capitulo5.pdf · “Control de Flujo de Programas” Carlos Valle Vidal Introducci´on Decisiones Subfunciones Las](https://reader031.fdocuments.ec/reader031/viewer/2022012405/5ba4b18e09d3f264368b4f0c/html5/thumbnails/19.jpg)
“Control deFlujo de
Programas”
Carlos ValleVidal
Introduccion
Decisiones
La sentencia for
for permite ejecutar un grupo de sentencias un numerodeterminado de veces.
Su estructura es:
for i=1:nsentencias
end
19 / 28
![Page 20: ``Control de Flujo de Programas'' - inf.utfsm.clcvalle/CAplicada/Capitulo5.pdf · “Control de Flujo de Programas” Carlos Valle Vidal Introducci´on Decisiones Subfunciones Las](https://reader031.fdocuments.ec/reader031/viewer/2022012405/5ba4b18e09d3f264368b4f0c/html5/thumbnails/20.jpg)
“Control deFlujo de
Programas”
Carlos ValleVidal
Introduccion
Decisiones
La sentencia for
El for de MATLAB tiene particularidades especiales, engeneral la variable auxiliar es un vector, y en cada ciclo fortoma un valor del vector (comenzando por el primero, de auno, hasta el final)
Ejemplo:
for i=[5 8 10]disp(i)
end
Muestra en pantalla:
5810
20 / 28
![Page 21: ``Control de Flujo de Programas'' - inf.utfsm.clcvalle/CAplicada/Capitulo5.pdf · “Control de Flujo de Programas” Carlos Valle Vidal Introducci´on Decisiones Subfunciones Las](https://reader031.fdocuments.ec/reader031/viewer/2022012405/5ba4b18e09d3f264368b4f0c/html5/thumbnails/21.jpg)
“Control deFlujo de
Programas”
Carlos ValleVidal
Introduccion
Decisiones
La sentencia for (2)
La variable i tambien puede ser un vector.Consideremos el siguiente ejemplo:
A =1 2 34 5 6
>> for i=Adisp(i)
end142536
En cada iteracion toma una columna de A21 / 28
![Page 22: ``Control de Flujo de Programas'' - inf.utfsm.clcvalle/CAplicada/Capitulo5.pdf · “Control de Flujo de Programas” Carlos Valle Vidal Introducci´on Decisiones Subfunciones Las](https://reader031.fdocuments.ec/reader031/viewer/2022012405/5ba4b18e09d3f264368b4f0c/html5/thumbnails/22.jpg)
“Control deFlujo de
Programas”
Carlos ValleVidal
Introduccion
Decisiones
La sentencia while
La sentencia while tiene el siguiente diagrama de flujo:
La estructura es:
while Condicionsentencias
end
22 / 28
![Page 23: ``Control de Flujo de Programas'' - inf.utfsm.clcvalle/CAplicada/Capitulo5.pdf · “Control de Flujo de Programas” Carlos Valle Vidal Introducci´on Decisiones Subfunciones Las](https://reader031.fdocuments.ec/reader031/viewer/2022012405/5ba4b18e09d3f264368b4f0c/html5/thumbnails/23.jpg)
“Control deFlujo de
Programas”
Carlos ValleVidal
Introduccion
Decisiones
Ejemplo
Construir una funcion para calcular
sencuad(n) =n
∑i=1
sin2 (i) = sin2 (1)+ sin2 (2)+ · · ·+ sin2 (n)
function f=sencuad(n)s=0for i=1:n
s=s+sin(i)ˆ2endf=s
23 / 28
![Page 24: ``Control de Flujo de Programas'' - inf.utfsm.clcvalle/CAplicada/Capitulo5.pdf · “Control de Flujo de Programas” Carlos Valle Vidal Introducci´on Decisiones Subfunciones Las](https://reader031.fdocuments.ec/reader031/viewer/2022012405/5ba4b18e09d3f264368b4f0c/html5/thumbnails/24.jpg)
“Control deFlujo de
Programas”
Carlos ValleVidal
Introduccion
Decisiones
Subfunciones
Las sub-funciones, son funciones adicionales definidas en unmismo archivo *.m, con nombres diferentes del nombre delarchivo (y del nombre de la funcion principal).
Las sub-funciones solo pueden ser llamadas por lasfunciones contenidas en ese archivo, resultando “invisibles”para otras funciones externas.
Ejemplo: un archivo llamado mi fun.m:
function y=mi_fun(a,b)y=subfun1(a,b);function x=subfun1(y,z)x=subfun2(y,z);function x=subfun2(y,z)x=y+z+2;
24 / 28
![Page 25: ``Control de Flujo de Programas'' - inf.utfsm.clcvalle/CAplicada/Capitulo5.pdf · “Control de Flujo de Programas” Carlos Valle Vidal Introducci´on Decisiones Subfunciones Las](https://reader031.fdocuments.ec/reader031/viewer/2022012405/5ba4b18e09d3f264368b4f0c/html5/thumbnails/25.jpg)
“Control deFlujo de
Programas”
Carlos ValleVidal
Introduccion
Decisiones
Ejercicio 1
Construir la funcion:
es primo(n): esta funcion devuelve el valor 1 si n es unnumero primo y 0 en caso contrario
25 / 28
![Page 26: ``Control de Flujo de Programas'' - inf.utfsm.clcvalle/CAplicada/Capitulo5.pdf · “Control de Flujo de Programas” Carlos Valle Vidal Introducci´on Decisiones Subfunciones Las](https://reader031.fdocuments.ec/reader031/viewer/2022012405/5ba4b18e09d3f264368b4f0c/html5/thumbnails/26.jpg)
“Control deFlujo de
Programas”
Carlos ValleVidal
Introduccion
Decisiones
Solucion 1
function x=es_primo(n)for i=2:n/2
if rem(n,i) == 0 % restox=0;return
endendx=1;
26 / 28
![Page 27: ``Control de Flujo de Programas'' - inf.utfsm.clcvalle/CAplicada/Capitulo5.pdf · “Control de Flujo de Programas” Carlos Valle Vidal Introducci´on Decisiones Subfunciones Las](https://reader031.fdocuments.ec/reader031/viewer/2022012405/5ba4b18e09d3f264368b4f0c/html5/thumbnails/27.jpg)
“Control deFlujo de
Programas”
Carlos ValleVidal
Introduccion
Decisiones
Ejemplo 2
Utilizando la funcion anterior construir una funcion quedetermine si todos los elementos de un arreglo son numerosprimos.
27 / 28
![Page 28: ``Control de Flujo de Programas'' - inf.utfsm.clcvalle/CAplicada/Capitulo5.pdf · “Control de Flujo de Programas” Carlos Valle Vidal Introducci´on Decisiones Subfunciones Las](https://reader031.fdocuments.ec/reader031/viewer/2022012405/5ba4b18e09d3f264368b4f0c/html5/thumbnails/28.jpg)
“Control deFlujo de
Programas”
Carlos ValleVidal
Introduccion
Decisiones
Solucion 2
function x=matriz_prima(A)[m n]=size(A);for i=1:m
for j=1:nif ˜es_primo(A(i,j))
x=0;return
endend
endx=1;
28 / 28
![Page 29: ``Control de Flujo de Programas'' - inf.utfsm.clcvalle/CAplicada/Capitulo5.pdf · “Control de Flujo de Programas” Carlos Valle Vidal Introducci´on Decisiones Subfunciones Las](https://reader031.fdocuments.ec/reader031/viewer/2022012405/5ba4b18e09d3f264368b4f0c/html5/thumbnails/29.jpg)
“Control deFlujo de
Programas”
Carlos ValleVidal
Introduccion
Decisiones
Consultas y Comentarios
29 / 28