Anda di halaman 1dari 31

Software para Ingeniera EL120

Unidad 5.3: Lazos de control

Lazos de repeticin o bucles


Los lazos de repeticin o bucles permiten
ejecutar una o varias lneas de instruccin ms
de una vez.
El lazo puede tener un nmero fijo de
repeticiones o depender de una condicin para
ejecutarse un determinado nmero de veces.
2

for-end

Formato:

for k = p:in:u

end

p: primer elemento
u: ltimo elemento
in: incremento

for-end

for k = 1:10

La variable k indica que


el grupo de instrucciones
se repetir 10 veces

grupo de instrucciones
end

k toma valores
desde 1 hasta 10

*En un lazo for se conoce de antemano el nmero de iteraciones.


4

for-end

for a = 1:2:10

La variable a indica que


el grupo de instrucciones
se repetir 5 veces

grupo de instrucciones
end

a toma valores
1, 3, 5, 7, 9

Ejemplo
En este ejemplo veamos como varan
los valores de a y k.
a = 0;
for k = 1:10
a = a + 2;
end

10

12

14

16

18

10

20
6

Ejemplo
Calcular la siguiente sumatoria usando for

... 65

Ejemplo
Generar la siguiente sucesin de nmeros usando for

1 1 1
1
1,
,
,
, ...
2 4 8
1024
*Generar la sucesin como un vector

while-end

Formato:
while {condicin lgica}

grupo de instrucciones

end

El grupo de instrucciones
se ejecutar una o ms
veces, mientras la
{condicin lgica} sea
verdadera.

while-end

Lazo infinito
while 1

grupo de instrucciones

end

La {condicin lgica} es
1, siempre verdadera,
por tanto, este lazo se
ejecuta infinitas veces.

10

Ejemplo
Calcular la suma de los 30 primeros trminos de la siguiente
serie matemtica

... (2n 1)

11

Ejemplo
Generar la siguiente sucesin con los primeros 40
trminos

1
,
2

3 5 7
,
,
, ...
4 6 8

*Generar la sucesin como un vector

12

Ruptura de lazo: break


Formato:
for k = a:b
if {condicin lgica}
break
end

grupo de instrucciones

end
end

Slo si {condicin lgica}


es verdadera
se ejecuta break y
finaliza totalmente el
lazo for

13

Ejemplo
Escribir un programa que genere, uno a uno, 10 valores
aleatorios enteros diferentes y los acumule en un
vector. Los valores estn entre 1 y 10. El programa
termina antes, si sale un valor repetido.

14

%VALORES ALEATORIOS DIFERENTES


clear all; close all; clc;
%Inicializar variables

for k = %10 valores aleatorios


valor = %Generar un valor aleatorio entre 1 y 10
if %Verificar si es un valor repetido
break
end
%Generar vector

end
%Mostrar vector

15

Ruptura de lazo: continue


Formato:
for k = a:b
if {condicin lgica}
continue
end

grupo de instrucciones

end
end

Slo si {condicin lgica}


es verdadera
se ejecuta continue y
el programa salta al
siguiente valor de k.

16

Ejemplo
Escribir un programa que genere un vector de 20
valores aleatorios enteros diferentes entre s. Los
valores estn entre 1 y 20.

17

%VALORES ALEATORIOS DIFERENTES


clear all; close all; clc;
%Inicializar variables

{while o for}
valor = %Generar valor aleatorio entre 1 y 20
if %Verificar si es un valor repetido
continue
end
%Generar vector
%Contar elementos

end
%Mostrar vector
18

Ejercicios
Escribir un programa, factorial_n.m, que permita hallar
el factorial de un nmero que se introducir desde
teclado.
1!=1
2!=1x2 = 1!x2
3!=1x2x3 = 2!x3

n!=1x2x3x(n-1)xn = (n-1)!xn
19

factorial_n.m
%FACTORIAL DE UN NMERO
clear all; close all; clc
%Ingresar el nmero:
disp('Calcular el factorial de:')
n = {escriba lo que corresponde}
%Clculo del factorial
fact = 1;
for k = {qu valores toma k}
fact = {genere el factorial};
end
clc
fprintf('factorial(%i) = %i\n',n,fact)

20

Ejercicio
Escribir un programa, decabin.m, que permita
convertir un nmero de base 10 a base 2.

El nmero 23 en base 2 es: 10111

21

Divisiones sucesivas
Uso de divisiones sucesivas para convertir 23 a base 2:
23

11

El nmero es 23 en base 2 es:

10111

22

decabin.m
%PASAR DE DECIMAL A BINARIO
clear all; close all; cc
%Ingresar el nmero:
disp('Ingresar el nmero a convertir')
n = input('n = ');
%Proceso de conversin a base 2
{inicializar variables}
while {condicin lgica}
{divisiones sucesivas}
{formar el nmero binario}
end
clc
fprintf('El nmero %i en base 2 es %i\n,n,numbin)

23

Problema Propuesto
Escribir un programa, prob_dados.m, que
muestre en un grfico de barras la distribucin de
probabilidad de los resultados de lanzar n dados.
Se debe de ingresar el numero de jugadas y el
numero de dados.

24

Probabilidad
Experimento aleatorio: Lanzamiento de una moneda
Espacio muestral: {cara(c) sello(s)}
Evento A: que salga cara.
Probabilidad de A

p( A)

# elementos de evento
# elementos de espacio muestral

1
2
25

Probabilidad
Experimento aleatorio: Lanzamiento de dos monedas
Espacio muestral: { (c,c) (c,s) (s,c) (s,s) }
Evento A: que salga cara en ambas monedas.
Probabilidad de A

p ( A)

# elementos de evento
# elementos de espacio muestral

1
4

0, 25

26

Probabilidad
Experimento aleatorio: Lanzamiento de dos monedas
Espacio muestral: { (c,c) (c,s) (s,c) (s,s) }
Evento B: que salga cara en una de las monedas.

Probabilidad de B

p( B)

# elementos de evento
# elementos de espacio muestral

3
4

0, 75

27

Probabilidad
Experimento aleatorio: Lanzamiento de un dado
Espacio muestral: { 1 2 3 4 5 6 }
Evento C: que salga par.
Probabilidad de C

p (C )

# elementos de evento
# elementos de espacio muestral

3
6

0,5

28

Probabilidad
Experimento aleatorio: Lanzamiento de dos dados
Espacio muestral:
1-1

2-1

3-1

4-1

5-1

6-1

1-2

2-2

3-2

4-2

5-2

6-2

1-3
1-4
1-5
1-6

2-3
2-4
2-5
2-6

3-3
3-4
3-5
3-6

4-3
4-4
4-5
4-6

5-3
5-4
5-5
5-6

6-3
6-4
6-5
6-6
29

Probabilidad
Evento D: que la suma de los dados sea 7
Probabilidad de D

p( D)

# elementos de evento
# elementos de espacio muestral

6
36

0,1667

30

Probabilidad
Evento D1: que la suma de los dados sea 2, 3 o 12
Probabilidad de D1: Es la probabilidad que sea igual a la
suma de las probabilidades que salga 2, 3 o 12.

p( D1)

p(2) p(3) p(12)

1
2 1
36 36 36

4
36

31

Anda mungkin juga menyukai