Está en la página 1de 8

UNIVERSIDAD TECNOLOGICA DE PEREIRA

Facultad de Ingeniera Industrial Informtica T2 G5


Septiembre de 2014

Estructuras repetitivas (bucles)


Son aquellas que permiten repetir instrucciones (sentencias) hasta que una o varias
condiciones lo permitan (cuando su interpretacin lgica sea verdadera). Pueden ser de
2 formas: numricos y/o lgicos, los numricos son aquellos que se repiten una n
(cantidad) veces, mientas que los lgicos algo los hace suspender la repeticin a nivel
de un estado de variable.
Para el caso puntual del curso en matlab, utilizaremos los ciclos repetitivos (bucles)
while y for (segn sea el caso).

mientras (while-condicion-end)

Falso
Condicion
Verdadero

Instrucciones

Sintaxis en matlab:
while condicion(es)
Instrucciones;
end
Observacin: El ciclo se inicia con la cabecera while y se cierra con end (abre cierra). Esta
estructura se utiliza para ciclos numricos y/o lgicos.

Profesor Wilson Corts lvarez, Ing. y Auditor de Sistemas de Informacin


wcortes@utp.edu.co - wcortesalvarez@yahoo.com

UNIVERSIDAD TECNOLOGICA DE PEREIRA


Facultad de Ingeniera Industrial Informtica T2 G5
Septiembre de 2014

para hasta (for-condicion-end)


Falso

Condiciones
Verdadero

Instrucciones

Sintaxis en matlab:
for vble = inicio : incremento : fin
Instrucciones;
end
Observacin: El ciclo se inicia con la cabecera for y se cierra con end (abre cierra). Los
argumentos inicio, incremento y fin son valores numricos. Esta estructura se utiliza para
ciclos numricos, debido a su simple sintaxis y lgica en utilizacin.

Profesor Wilson Corts lvarez, Ing. y Auditor de Sistemas de Informacin


wcortes@utp.edu.co - wcortesalvarez@yahoo.com

UNIVERSIDAD TECNOLOGICA DE PEREIRA


Facultad de Ingeniera Industrial Informtica T2 G5
Septiembre de 2014

Planteamiento de problemas y soluciones.


Ejercicio 1: Mostrar los nmeros del 1 al 10 en forma ascendente, disear el algoritmo tanto
con la estructura while como la for.
a) Con while
clear all
clc
disp(Nmeros del 1 al 10 ascendente)
numero = 1;
while numero <= 10
disp(numero)
numero = numero + 1; % contador que incrementa el numero inicial
end
disp(Fin del ejercicio)
b) Con for
clear all
clc
disp(Nmeros del 1 al 10 ascendente)
for numero = 1 : 1 : 10
disp(numero)
end
disp(Fin del ejercicio)
Observacin: La cabecera (condiciones) del ciclo podra ser tambin for numero = 1 : 10
debido a que el incremento es 1, esto quiere decir, que el incremento es opcional
colocarlo cuando se sabe que es 1 en valor. Igualmente el incremento puede ser positivo o
negativo y diferente a 1 (cuando se requiera utilizarlo por lgica).
Ejercicio 2: Mostrar los nmeros del 1 al 10 en forma descendente, disear el algoritmo tanto
con la estructura while como la for.
a) Con while
clear all
clc
disp(Nmeros del 1 al 10 descendente)
numero = 10;
while numero >= 1
disp(numero)
numero = numero - 1; % contador que decrementa el numero inicial
end
disp(Fin del ejercicio)

Profesor Wilson Corts lvarez, Ing. y Auditor de Sistemas de Informacin


wcortes@utp.edu.co - wcortesalvarez@yahoo.com

UNIVERSIDAD TECNOLOGICA DE PEREIRA


Facultad de Ingeniera Industrial Informtica T2 G5
Septiembre de 2014

b) Con for
clear all
clc
disp(Nmeros del 1 al 10 descendente)
for numero = 10 : -1 : 1
disp(numero)
end
disp(Fin del ejercicio)
Ejercicio 3: Mostrar los nmeros del 1 al 10 en forma descendente pero solo impares, disear
el algoritmo tanto con la estructura while como la for.
a) Con while
clear all
clc
disp(Nmeros del 1 al 10 descendente solo impares)
numero = 10;
while numero >= 1
if mod(numero, 2) ~= 0
disp(numero)
end
numero = numero - 1; % contador que decrementa el numero inicial
end
disp(Fin del ejercicio)
c) Con for
clear all
clc
disp(Nmeros del 1 al 10 descendente solo impares)
for numero = 10 : -1 : 1
if mod(numero, 2) ~= 0
disp(numero)
end
end
disp(Fin del ejercicio)

Profesor Wilson Corts lvarez, Ing. y Auditor de Sistemas de Informacin


wcortes@utp.edu.co - wcortesalvarez@yahoo.com

UNIVERSIDAD TECNOLOGICA DE PEREIRA


Facultad de Ingeniera Industrial Informtica T2 G5
Septiembre de 2014

Ejercicio 4: Mostrar los productos del 1 al 10 de la tabla de multiplicar del nmero 5,


ejemplo de salida:
Tabla de multiplicar del nmero 5
5x1=5
5 x 2 = 10
Hasta 5 x 10 = 50
clc
clear all
disp('Tabla de multiplicar del nmero 5')
resultado = 0;
tabla = 5;
for numero = 1 : 10
resultado = tabla * numero;
disp(sprintf('%d x %d = %d', tabla, numero, resultado))
end
disp('Fin del ejercicio...')

Ejercicio 5: Mostrar las tablas de multiplicar del 1 al 10 por pantallazos


clc
clear all
disp('Tablas de multiplicar del 1 al 10')
resultado = 0;
% Ciclo de tablas
for tabla = 1 : 10
disp(sprintf('Tabla del nmero %d', tabla))
% Ciclo de productos por tabla
for numero = 1 : 10
resultado = tabla * numero;
disp(sprintf('%d x %d = %d', tabla, numero, resultado))
end
disp('Presione Enter para continuar')
pause % hace una pause y contina con un Enter
clc
end
disp('Fin del ejercicio...')

Ejercicio 6: Mostrar la tabla de multiplicar de un nmero dado (ingresado)


clc
clear all
disp('Tabla de multiplicar de un nmero ingresado')
tabla = 0;
resultado = 0;
tabla = input('Nmero de la tabla a procesar:');
disp(' ')
Profesor Wilson Corts lvarez, Ing. y Auditor de Sistemas de Informacin
wcortes@utp.edu.co - wcortesalvarez@yahoo.com

UNIVERSIDAD TECNOLOGICA DE PEREIRA


Facultad de Ingeniera Industrial Informtica T2 G5
Septiembre de 2014

for numero = 1 : 10
resultado = tabla * numero;
disp(sprintf('%d x %d = %d', tabla, numero, resultado))
end
disp(' ')
disp('Fin del ejercicio...')
Ejercicio 7: Mostrar la tabla de multiplicar de un nmero dado, y repetir el proceso
hasta que el usuario lo quiera realizar.
clc
clear all
disp('Tabla de multiplicar de un nmero ingresado con pregunta para nueva ejecucin')
tabla = 0;
resultado = 0;
respuesta = 'S';
while respuesta == 'S'
tabla = input('Nmero de la tabla a procesar:');
disp(' ')
for numero = 1 : 10
resultado = tabla * numero;
disp(sprintf('%d x %d = %d', tabla, numero, resultado))
end
respuesta = upper(input('Desea procesar otro nmero de tabla (S/N)?', 's'));
if respuesta == 'S'
clc
end
end
disp(' ')
disp('Fin del ejercicio...')
Ejercicio 8: Ingresar un texto y determinar por cada vocal su cantidad encontrada
clc
clear all
disp('Cantidad de vocales en un texto')
texto = '';
va = 0;
ve = 0;
vi = 0;
vo = 0;
vu = 0;
texto = lower(input('Ingrese el texto: ', 's'));
for letra = 1 : length(texto)
if texto(letra) == 'a'
va = va + 1;
elseif texto(letra) == 'e'
ve = ve + 1;
elseif texto(letra) == 'i'
vi = vi + 1;
Profesor Wilson Corts lvarez, Ing. y Auditor de Sistemas de Informacin
wcortes@utp.edu.co - wcortesalvarez@yahoo.com

UNIVERSIDAD TECNOLOGICA DE PEREIRA


Facultad de Ingeniera Industrial Informtica T2 G5
Septiembre de 2014

elseif texto(letra) == 'o'


vo = vo + 1;
elseif texto(letra) == 'u'
vu = vu + 1;
end
end
disp('Resultados')
disp(sprintf('Cantidad de vocal a %d', va))
disp(sprintf('Cantidad de vocal e %d', ve))
disp(sprintf('Cantidad de vocal i %d', vi))
disp(sprintf('Cantidad de vocal o %d', vo))
disp(sprintf('Cantidad de vocal u %d', vu))

disp('Fin del ejercicio...')


Ejercicio 9: Generar n nmeros aleatorios y al final mostrar su promedio.
clc
clear all
disp('Generar n nmeros aleatorios y su promedio')
cantidad = 0;
primedio = 0;
sumatoria = 0;
cantidad = input('Cantidad de nmeros aleatorios: ');
for numero = 1 : cantidad
sumatoria = sumatoria + rand; % se genera el numero aleatorio y se acumula
end
promedio = sumatoria / cantidad;
disp(sprintf('El promedio de los nmeros aleatorios es %.4f', promedio))
disp('Fin del ejercicio...')
Ejercicio 10: Ingresar n nmeros y al final mostrar de acuerdo a los siguientes rangos su
correspondiente sumatoria:
a) Nmeros menores a 100
b) Nmeros entre 100 y 500
c) Nmeros mayores a 500.
clc
clear all
disp('Ingresar n nmeros realizando unas sumatorios')
cantidad = 0;
numero = 0;
nummenor = 0;
numentre = 0;
nummayor = 0;
cantidad = input('Cantidad de nmeros a ingresar: ');
for n = 1 : cantidad
numero = input('Ingrese el nmero: ');
if numero < 100
nummenor = nummenor + numero;
elseif numero >= 100 & numero <= 500
numentre = numentre + numero;
Profesor Wilson Corts lvarez, Ing. y Auditor de Sistemas de Informacin
wcortes@utp.edu.co - wcortesalvarez@yahoo.com

UNIVERSIDAD TECNOLOGICA DE PEREIRA


Facultad de Ingeniera Industrial Informtica T2 G5
Septiembre de 2014

else
nummayor = nummayor + numero;
end
end
disp('Resultado de sumatorias')
disp(sprintf('Menores a 100 %.2f', nummenor))
disp(sprintf('Entre 100 y 500 %.2f', numentre))
disp(sprintf('Mayores a 500 %.2f', nummayor))
disp('Fin del ejercicio...')
Ejercicio 11: Validar que al ingresar una nota solo admita el rango entre 1 y 5, una vez
aceptada como vlida determinar por medio de un mensaje si es EXCELENTE (nota
mayor o igual a 4.5), SOBRESALIENTE (nota entre 4 y 4.5), BUENA (entre 3 y 3.9) y
MALA (si es menor a 3). Se plantea la solucin con errores sintcticos y/o lgicos para
que sea corregido y solucionado el problema.
clc
clear all
disp('Validar una nota entre 1 y 5')
nota = 0;
mensaje = '';
while nota < 1 | nota > 6
nota = input('Ingrese una nota entre 1 y 5: ');
end
if nota > 4.5
mensaje = 'EXCELENTE';
elseif nota >= 4 & nota < 4.5
mensaje = 'SOBRESALIENTE';
elseif nota > 3 & nota <= 3.9
mensaje = 'BUENA';
else
mensaje = 'MALA';
end
disp(sprintf('La calificacin cualitativa de la materia es %f', mensaje))
disp('Fin del ejercicio')
Ejercicio 12: Disear un programa que permita calcular el factorial de un nmero dado
(n!)
Ejercicio 13: Ingresar n nmeros y al final mostrar: Sumatoria de pares, sumatoria de
impares y promedio general.
Ejercicio 14: Dado un nmero entero mostrar la lista de los nmeros pares inferiores a
l.
Ejercicio 15: Dados dos nmeros enteros mostrar la lista de los nmeros
impares comprendidos entre ellos.
Ejercicio 16: Generar un nmero aleatorio entero entre 0 y 20, seguidamente disee un
algoritmo que permita establecer en cuantos intentos fue adivinado.
Profesor Wilson Corts lvarez, Ing. y Auditor de Sistemas de Informacin
wcortes@utp.edu.co - wcortesalvarez@yahoo.com