You are on page 1of 18

Universidad Nacional de Trujillo

Programacin en Matlab
12. - Estructuras Repetitivas
1) while . End
while condicion
Instrucciones
end
2) for
for v = vi : inc: vf
Instrucciones
end
donde :
vi: valor inicial
inc: incremento
vf: valor final
Si el incremento es de 1 en 1, se omite el incremento
for v=vi:vf
Instrucciones
end

Contador: Es una variable comienza con valor inicial y se incrementa en un


valor constante.
Inicializamos
C=0;
Y en el proceso
C=C+Valor_constante;
12.1.- Ejemplos Whileend
Ejemplo mientras 01

Ejecucin

Mg. Marcelino Torres Villanueva

Universidad Nacional de Trujillo


Programacin en Matlab
Ejemplo mientras 02

Ejecucin

Ejemplo mientras 03

Ejecucin

12.2.- Ejemplos de procesos repetitivos for


Ejemplo for 01

Ejecucin

Mg. Marcelino Torres Villanueva

Universidad Nacional de Trujillo


Programacin en Matlab

Ejemplo for 02

Ejecucin

Ejemplo for 03

Ejecucin

Mg. Marcelino Torres Villanueva

Universidad Nacional de Trujillo


Programacin en Matlab
Ejemplo repetitivo 01

Ejecucin

Ejemplo repetitivo 02

Mg. Marcelino Torres Villanueva

Universidad Nacional de Trujillo


Programacin en Matlab

Ejecucin

Acumulador: Variable que comienza con un valor inicial que generalmente es cero y
se incrementa una cantidad variable
Inicializamos
S=0
Y en el proceso de suma
S = S + valor_a_sumar;

Ejemplo repetitivo 03

Ejecucin

Ejemplo repetitivo 04

Ejecucin

Mg. Marcelino Torres Villanueva

Universidad Nacional de Trujillo


Programacin en Matlab

Ejemplo repetitivo 05

Ejecucin

Mg. Marcelino Torres Villanueva

Universidad Nacional de Trujillo


Programacin en Matlab

Ejemplo repetitivo 06

Ejecucin

Mg. Marcelino Torres Villanueva

Universidad Nacional de Trujillo


Programacin en Matlab

Ejemplo repetitivo 07

Ejecucin

Mg. Marcelino Torres Villanueva

Universidad Nacional de Trujillo


Programacin en Matlab

Multiplicador: Variable que comienza con un valor inicial que generalmente es uno y
se multiplica una cantidad variable
Inicializamos

P = 1;

Y en el proceso de multiplicacin
P = P * valor_a_multiplicar;

Ejemplo repetitivo 08

Ejecucin

Ejemplo repetitivo 09

Ejecucin

Mg. Marcelino Torres Villanueva

Universidad Nacional de Trujillo


Programacin en Matlab

Ejemplo 10
Calcular la suma de los n trminos de la siguiente serie:
s = 1 - 1/2 + 1/3 - 1/4 + 1/5 - 1/6 +...... 1/n.

Ejecucin

Ejemplo 11
Ingresar n nmeros, calcular el mximo y el mnimo de ellos.

Mg. Marcelino Torres Villanueva

10

Universidad Nacional de Trujillo


Programacin en Matlab

Ejecucin

Ejemplo 12
Realizar un programa que escriba los n trminos de la serie de Fibonacci:
1, 1, 2, 3, 5, 8, 13,.......

Ejecucin

Mg. Marcelino Torres Villanueva

11

Universidad Nacional de Trujillo


Programacin en Matlab
Ejemplo 13
Calcular la sumatoria:
s = 1 + x + x 2/2! + x3 /3! + x4 /4! + ........ + xn /n! Se debe ingresar x real y n entero
positivo.

Ejecucin

Ejercicios Resueltos
1.- Programa para ingresar un nmero y reportar todos sus divisores
clc
n=input('ingrese numero :');
disp('Los divisores son ');
for i=1:n
if rem(n,i)==0
fprintf('%d ',i);
end
end

Mg. Marcelino Torres Villanueva

12

Universidad Nacional de Trujillo


Programacin en Matlab
2.- Ingresar un nmero y reportar si es perfecto. Un nmero es perfecto si es igual a la
suma de divisores menores que el
clear all
clc
n=input('Ingrese numero :');
s=0;
for i=1:n-1
if rem(n,i)==0
s= s+i;
end
end
if n==s
disp('es perfecto');
else
disp('no es perfecto');
end
3.- Ingresar un nmero y reportar si es primo.
clear all
clc
n=input('Ingrese numero :');
cd=0;
for i=1:n
if rem(n,i)==0
cd= cd+1;
end
end
if cd==2
disp('es primo');
else
disp('no es primo');
end
4.- Escribir un programa que descomponga un nmero N en todos sus factores
correspondientes. Ej.:
27 = 3*3*3
180 = 2*2*3*3*3
clear all
clc
n=input('Ingrese numero :');
d=2;
while n>1
if rem(n,d)==0
fprintf('%d ',d);
n=n/d;
else
d=d+1;
end
end

Mg. Marcelino Torres Villanueva

13

Universidad Nacional de Trujillo


Programacin en Matlab
5.- Ingresar 2 nmeros y calcular su mximo comn divisor
clc
clear all
n1=input('Primer numero :');
n2=input('Segundo numero :');
d=2;
mcd=1;
while d<=n1 & d<=n2
if rem(n1,d)==0 & rem(n2,d)==0
mcd=mcd*d;
n1=n1/d;
n2=n2/d;
else
d=d+1;
end
end
fprintf('El m.c.d. es : %d ',mcd);
6.- Ingresar 2 nmeros y calcular su mnimo comn mltiplo
clc
clear all
n1=input('Primer numero :');
n2=input('Segundo numero :');
d=2;
mcm=1;
while n1~=1 | n2~=1
if rem(n1,d)==0 | rem(n2,d)==0
mcm=mcm*d;
if rem(n1,d)==0
n1=n1/d;
end
if rem(n2,d)==0
n2=n2/d;
end
else
d=d+1;
end
7.- Ingresar un nmero y reportar el nmero de dgitos que tiene
clc;
n=input('Ingrese numero :');
x=n;
cd=0;
while x>0
dig= rem(x,10);
cd=cd+1;
x=fix(x/10);
end
fprintf('El numero %d tiene %d digitos ',n,cd);

Mg. Marcelino Torres Villanueva

14

Universidad Nacional de Trujillo


Programacin en Matlab
8.- Ingresar un nmero y reportarlo al revs
clc;
n=input('Ingrese numero :');
x=n;
disp('El numero al reves es :');
while x>0
dig= rem(x,10);
fprintf('%d',dig);
x=fix(x/10);
end
9.- Ingresar un nmero y reportar si es capica
clc;
n=input('Ingrese numero :');
x=n;
inv=0;
while x>0
dig= rem(x,10);
inv=inv*10+dig;
x=fix(x/10);
end
if n==inv
disp('el numero es capicua');
else
disp('el numero no es capicua');
end
10.- Ingresar un nmero en base 10 y convertirlo a base 2
clc;
n=input('Ingrese numero :');
x=n;
b2=0;p=1;
while x>0
r= rem(x,2);
b2=b2+r*p;
p=p*10;
x=fix(x/2);
end
fprintf('el numero en base 2 es : %d ',b2);
11.- Ingresar un nmero en base 2 a base 10
clc;
b2=input('Ingrese numero en base 2:');
x=b2;
n=0;p=1;
while x>0
r= rem(x,10);
n=n+r*p;
p=p*2;
x=fix(x/10);
end
fprintf('el numero en base 10 es : %d ',n);

Mg. Marcelino Torres Villanueva

15

Universidad Nacional de Trujillo


Programacin en Matlab

Ejercicios Propuestos
1) Ingresar un numero N entero positivo y reportar la suma de los nmeros desde 1
hasta N.
2) Ingresar N nmeros enteros positivos y reporte la suma de pares.
3) Reportar la suma de los N trminos de la serie:
1, 4, 7, 10, 13..
4) Hacer un programa para calcular el valor de XN. X real y N entero. (No usar el
operador ^).
5) Determinar la suma de los N trminos de la serie:
X + X2 + X3 + X4 + .
6) Hacer un programa que dado un valor de x, calcule el valor de la funcin:
f(x) = 1 x + x2/2! x3/3! + x4/4! x5/5! +
Tenga en cuenta solo los trminos de la serie que en valor absoluto son mayores o
iguales a 0.001
7) Reportar los N trminos de la serie:
17, 15, 18, 16, 19, 17, 20, 18, 21,
8) Hacer un programa que reporte los trminos de la sucesin:
2, 5, 7, 10, 12, 15, 17. 1800
Adems debe imprimir la suma de los trminos.
9) Sea n un entero positivo. Si n es par, divdalo entre 2, sino lo es, multiplquelo por 3
y smele 1. Realice este proceso hasta que el nmero que alcance sea 1. Realice un
programa en C que implemente dicho proceso. Imprima los nmeros que van
obteniendo. Por Ejemplo:
Para n = 10 la sucesin generada es: 10 5 16 8 4 2 1
10) Como parte de un experimento un bilogo requiere tomar la temperatura exterior
de un lugar cada hora por un periodo de 6 horas. Realice un programa que reciba
como datos las temperaturas tomadas y determine la mayor y la menor.
11) Generar un nmero aleatorio entre 1 y 100 y trate de adivinarlo. El resultado debe
orientar segn el resultado con los mensajes, alto y bajo. Al final debe mostrar
el nmero de intentos en los que adivino el nmero.
12) Generar n notas aleatoriamente y reportar el promedio, la nota mayor y la nota
menor.
13) Hacer un programa que simule varios lanzamientos de un dado hasta obtener un
seis. Muestre los puntajes del dado mientras se vayan generando y muestre al final
cuantos lanzamientos fueron necesarios efectuar.
14) Hacer un programa que genere nmeros aleatorios entre 300 y 1000 hasta obtener
un nmero mltiplo de 7. Se debe mostrar los nmeros generados, su suma, el mayor
y el menor.
15) Hacer un programa que genera la nota de n alumnos y que imprima cada nota y al
costado tantos asteriscos como indique la nota.
16) Escribir un programa que lea 3 nmeros enteros positivos a, b, n>0, calcule la
sumatoria de :
1!
2!
3!
4!
(n+1)!
A

+
A+B

A + 2B

Mg. Marcelino Torres Villanueva

+ .....
A + 3B

A + nB

16

Universidad Nacional de Trujillo


Programacin en Matlab
17) Escriba un programa que lea 2 nmeros X1 y X2 tal que X1<X2. Se debe calcular e
imprimir el valor de f(x) para todos los valores de X , desde X=X1 hasta x=X2
f(x) = 1 + x/3! x2/5! + x3/7! x4/9! +
La sumatoria termina cuando se tiene un trmino: | Xn/Y! | < 0.001.
18) Escribir un programa que lea un nmero entero n>0 y que imprima los n trminos de
la serie:
4, 12, 24, 40, 60........ Debe imprimir tambin la suma de los n trminos.
19) Escribir un programa que lea un nmero entero n>0 y que imprima los n trminos de
la serie:
4, 9, 15, 23, 34, 49,..... Debe imprimir tambin la suma de los n trminos
20) Escribir un programa que calcule e imprima el valor de los n trminos de la serie:
2, 1, 1, 2, 8, 64.......Tambin se debe imprimir la suma de los n trminos
21) Escribir un programa que calcule e imprime los N trminos de la sumatoria
4/2 9/1 + 15/1 23/2 + 34/8 49/64 + .
Debe imprimir como mnimo k trminos por lnea. Tambin debe calcular la suma de
los N trminos
22) Escribir un programa que permita leer dos nmeros y reporte si son amigos.
Se dice que dos nmeros son amigos si cada uno de ellos es igual a la suma de los
divisores (menores que el nmero) del otro. Ejemplo: 220 y 284 son amigos.
23) Escribir un programa para ingresar 3 nmeros y reporte su mximo comn divisor y
su mnimo comn mltiplo.
24) Escribir un programa que para reducir un quebrado a su mnima expresin.
Ejemplos: 15/25 = 3/5 y 18/60 = 9/30 = 3/10
25) Escribir un programa que convierta un nmero de base b (entre 2 y 9) a un nmero
de base 10.
26) Convertir un numero de base n a un nmero de base m .
27) Escribir un programa que determine todos los nmeros primos que se encuentran
entre 2 nmeros n1 y n2.
28) Escribir un programa que permita mostrar en pantalla los N primeros nmeros
primos.
29) Escribir un programa que permita mostrar todos los nmeros perfectos menores
que 1000.
30) Escribir un programa que permita ingresar un nmero entero y reporte si es un
Cubo Perfecto. Un nmero es un cubo perfecto y es igual a la suma de sus dgitos al
cubo. Ejemplo 153 es cubo Perfecto porque 13 + 53+ 33 = 153.
31) Ingresar un nmero entero positivo y reportar el producto de sus dgitos y el mayor
de sus dgitos.
32) Ingresar N nmeros de 2 dgitos y determinar cul de ellos tiene la suma de
dgitos mayor
33) Escribir un programa que permita leer nmeros enteros diferentes de cero y que al
finalizar imprima:
a.- El nmero mayor y el nmero menor.
b.- El total de nmeros ledos.
c.- La cantidad de nmeros positivos y nmeros negativos.
El programa termina cuando se ingresa el cero.
34) Escribir un programa que lea las edades de personas y calcule la edad mayor, la
edad menor y la edad promedio.
El programa termina cuando se ingresa una edad menor o igual que cero.

Mg. Marcelino Torres Villanueva

17

Universidad Nacional de Trujillo


Programacin en Matlab
35) Dado un numero entero positivo N, dibujar el siguiente triangulo:
Si N=5 saldr
1
12
123
1234
12345
36) Dado un numero entero positivo N,dibujar en la pantalla el siguiente triangulo:
Si N=4
****
***
**
*
37) Dado un numero entero positivo N, dibujar el siguiente cuadrado:
Ingrese N: 4
1234
2341
3412
4123

Mg. Marcelino Torres Villanueva

18