Sei sulla pagina 1di 3

Fonaments d’Informàtica

1r curs d’Enginyeria Industrial

Práctica 5: Estructuras
repetitivas
Objetivos de la práctica
Estudiar la implementación 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 número determinado de veces. Cada una de las repeticiones se conoce
como iteración.

Bucle for
Indicamos explícitamente el número 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 iteración. 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 iteración se realizará para i=1 y la última
para i=7. La variable se incrementará en cada iteración en una unidad: 1,
2, 3, … Por tanto, se realizarán 7 iteraciones.
Un nuevo ejemplo:
for j=2:3:11
instrucciones
end
En este caso el número de iteraciones son 4: las instrucciones se ejecutarán
mientas el valor de j sea menor o igual que 10. En cada iteración, el valor
de j aumentará en 3 unidades, es decir, tomará los valores: 2, 5, 8, 11.

La variable contador es una variable más 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 explícitamente el número de iteraciones. El final de bucle está
controlado con una condición (expresión lógica o booleana). La sintaxis es
la siguiente:
while condición
instrucciones
end

Si queremos que el bucle se realice por lo menos una vez, la condición


debe ser cierta. Las instrucciones del interior del bucle deben modificar el
valor de la condición —pasar a ser falsa— para que el bucle finalice. En
caso contrario, estaríamos 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 instrucción antes del
bucle que de valor inicial a la variable contador y una instrucción dentro
del bucle que modifique dicho valor inicial para que alcance el valor final y
la condición que controla el bucle sea falsa.

Ejercicios
1) Escribir una función que calcule la suma de los n primeros números
naturales. Razonar si se puede implementar con los dos tipos de bucles.
2) Escribir una función que calcule la suma de los cuadrados de los n
primeros números naturales: 1 + 22 + 32 +… + n2.
3) Escribir una función que calcule la suma de los números enteros de n a
m (m>n), utilizando la función del ejercicio 1.
4) Implementar una función que calcule el producto de dos números
enteros (n*m) haciendo sólo sumas.
5) Diseñar una función que calcule el cociente y resto de la división entera
de dos números mediante restas y sumas.
6) Los términos de la serie de Fibonacci se calculan así:
a1 = 1
a2 = 2
an = an-1 + an-2
Diseñar una función que calcule el n-ésimo término de la serie de
Fibonacci.
7) Escribir una función que calcule el cuadrado de un número haciendo
sólo sumas. Ayuda: el cuadrado de un número n es la suma de los n
primeros números impares. Ejemplo: 32=1+3+5=9.
8) Escribir una función que calcule an, enésima potencia de a.
9) Escribir una función que calcule el factorial de un número natural entero
positivo n: n!= n * (n-1) * (n-2) * … * 2 * 1
Observar el buen funcionamiento de la función para n=0 y para n<0.
10) La exponencial de un número 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 función que calcule la exponencial de a según dicha
fórmula, utilizando k=10 y luego k=20. Se obtiene el mismo
resultado? (ayuda: utilizar el comando format)
b) Modificar la función de manera que el número k sea un parámetro
elegido por el usuario.
c) Modificar la función de manera que aproxime el resultado hasta que
para algún k se cumpla la condición ak/k! <= 10-5.
d) Modificar de nuevo la función de manera que aproxime el resultado
hasta que ak/k! sea menor que cierto valor infinitesimal ε que se
pasará como dato a la función. Visualizar el número de términos k
necesarios para obtener el resultado requerido.
11) Escribir una función que convierta un número entero en otro número
entero que será el primero pero con las cifras que lo forman escritas al
revés. Ejemplo: convertirá el número entero 1842 en el 2481.

Potrebbero piacerti anche