Está en la página 1de 3

Fonaments dInformtica

1r curs dEnginyeria Industrial

Prctica 5: Estructuras
repetitivas
Objetivos de la prctica
Estudiar la implementacin de las diferentes estructuras repetitivas en
MATLAB. Implementar funciones que utilicen dichas estructuras.

Estructuras repetitivas
Las estructuras repetitivas o bucles permiten repetir una o varias acciones
un nmero determinado de veces. Cada una de las repeticiones se conoce
como iteracin.

Bucle for
Indicamos explcitamente el nmero de iteraciones. Se utiliza una variable
contador para ello. La sintaxis es la siguiente:
for variable_contador =inic : inc : fin
instrucciones
end
La variable contador empieza en el valor indicado por inic y llega hasta
el valor indicado por fin. inc es el incremento de la variable contador en
cada iteracin. Por ejemplo:
for i=1:1:7
instrucciones
end
En este caso, la variable contador es i. Su valor inicial es 1 y su valor
final ser 7. Es decir, la primera iteracin se realizar para i=1 y la ltima
para i=7. La variable se incrementar en cada iteracin en una unidad: 1,
2, 3, Por tanto, se realizarn 7 iteraciones.
Un nuevo ejemplo:
for j=2:3:11
instrucciones
end
En este caso el nmero de iteraciones son 4: las instrucciones se ejecutarn
mientas el valor de j sea menor o igual que 10. En cada iteracin, el valor
de j aumentar en 3 unidades, es decir, tomar los valores: 2, 5, 8, 11.

La variable contador es una variable ms y puede ser utilizada en las


instrucciones de dentro del bucle. Importante: es muy peligroso modificar
el valor de la variable contador dentro del bucle.

Bucle while
No se indica explcitamente el nmero de iteraciones. El final de bucle est
controlado con una condicin (expresin lgica o booleana). La sintaxis es
la siguiente:
while condicin
instrucciones
end

Si queremos que el bucle se realice por lo menos una vez, la condicin


debe ser cierta. Las instrucciones del interior del bucle deben modificar el
valor de la condicin pasar a ser falsa para que el bucle finalice. En
caso contrario, estaramos ante un bucle infinito.

Equivalencia entre estructuras repetitivas


En ocasiones, los bucles while y for son equivalentes:

for i=inic: inc: fin i= inic;


instrucciones while i <= fin
end instrucciones;
i=i+inc;
end

Observar que en el caso del while, se necesita una instruccin antes del
bucle que de valor inicial a la variable contador y una instruccin dentro
del bucle que modifique dicho valor inicial para que alcance el valor final y
la condicin que controla el bucle sea falsa.

Ejercicios
1) Escribir una funcin que calcule la suma de los n primeros nmeros
naturales. Razonar si se puede implementar con los dos tipos de bucles.
2) Escribir una funcin que calcule la suma de los cuadrados de los n
primeros nmeros naturales: 1 + 22 + 32 + + n2.
3) Escribir una funcin que calcule la suma de los nmeros enteros de n a
m (m>n), utilizando la funcin del ejercicio 1.
4) Implementar una funcin que calcule el producto de dos nmeros
enteros (n*m) haciendo slo sumas.
5) Disear una funcin que calcule el cociente y resto de la divisin entera
de dos nmeros mediante restas y sumas.
6) Los trminos de la serie de Fibonacci se calculan as:
a1 = 1
a2 = 2
an = an-1 + an-2
Disear una funcin que calcule el n-simo trmino de la serie de
Fibonacci.
7) Escribir una funcin que calcule el cuadrado de un nmero haciendo
slo sumas. Ayuda: el cuadrado de un nmero n es la suma de los n
primeros nmeros impares. Ejemplo: 32=1+3+5=9.
8) Escribir una funcin que calcule an, ensima potencia de a.
9) Escribir una funcin que calcule el factorial de un nmero natural entero
positivo n: n!= n * (n-1) * (n-2) * * 2 * 1
Observar el buen funcionamiento de la funcin para n=0 y para n<0.
10) La exponencial de un nmero real a se puede aproximar con la serie:

a an a2 a3 ak
e = =1 + a + + + + +
n=0 n! 2 3! k!
a) Escribir una funcin que calcule la exponencial de a segn dicha
frmula, utilizando k=10 y luego k=20. Se obtiene el mismo
resultado? (ayuda: utilizar el comando format)
b) Modificar la funcin de manera que el nmero k sea un parmetro
elegido por el usuario.
c) Modificar la funcin de manera que aproxime el resultado hasta que
para algn k se cumpla la condicin ak/k! <= 10-5.
d) Modificar de nuevo la funcin de manera que aproxime el resultado
hasta que ak/k! sea menor que cierto valor infinitesimal que se
pasar como dato a la funcin. Visualizar el nmero de trminos k
necesarios para obtener el resultado requerido.
11) Escribir una funcin que convierta un nmero entero en otro nmero
entero que ser el primero pero con las cifras que lo forman escritas al
revs. Ejemplo: convertir el nmero entero 1842 en el 2481.

También podría gustarte