``control de flujo de programas'' - inf.utfsm.clcvalle/caplicada/capitulo5.pdf ·...

29
“Control de Flujo de Programas” Carlos Valle Vidal Introducci ´ on Decisiones “Control de Flujo de Programas” Carlos Valle Vidal [email protected] Departamento de Inform ´ atica - Universidad T ´ ecnica Federico Santa Mar´ ıa Rancagua, Agosto 2009 1 / 28

Upload: votruc

Post on 21-Sep-2018

242 views

Category:

Documents


0 download

TRANSCRIPT

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

“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

“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

“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

“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

“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

“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

“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

“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

“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

“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

“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

“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

“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

“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

“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

“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

“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

“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

“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

“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

“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

“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

“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

“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

“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

“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

“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

“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

“Control deFlujo de

Programas”

Carlos ValleVidal

Introduccion

Decisiones

Consultas y Comentarios

29 / 28