Estructuras repetitivas (bucles) Son aquellas que permiten repetir instrucciones (sentencias) hasta que una o varias condiciones lo permitan (cuando su interpretación lógica sea verdadera). Pueden ser de 2 formas: numéricos y/o lógicos, los numéricos son aquellos que se repiten una n (cantidad) veces, mientas que los lógicos algo los hace susper la repetición a nivel de un estado de variable. Para el caso puntual del curso en matlab, utilizaremos los ciclos repetitivos (bucles) while y for (según sea el caso). mientras (while-condicion-) Condicion Falso Verdadero Instrucciones Sintaxis en matlab: while condicion(es) Instrucciones; Observación: El ciclo se inicia con la cabecera while y se cierra con (abre cierra). Esta estructura se utiliza para ciclos numéricos y/o lógicos.
para hasta (for-condicion-) Condiciones Falso Verdadero Instrucciones Sintaxis en matlab: for vble = inicio : incremento : fin Instrucciones; Observación: El ciclo se inicia con la cabecera for y se cierra con (abre cierra). Los argumentos inicio, incremento y fin son valores numéricos. Esta estructura se utiliza para ciclos numéricos, debido a su simple sintaxis y lógica en utilización.
Planteamiento de problemas y soluciones. UNIVERSIDAD TECNOLOGICA DE PEREIRA Ejercicio 1: Mostrar los números del 1 al 10 en forma ascente, diseñar el algoritmo tanto con la estructura while como la for. a) Con while disp( Números del 1 al 10 ascente ) numero = 1; while numero <= 10 numero = numero + 1; % contador que incrementa el numero inicial b) Con for disp( Números del 1 al 10 ascente ) for numero = 1 : 1 : 10 Observación: La cabecera (condiciones) del ciclo podría ser también 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 lógica). Ejercicio 2: Mostrar los números del 1 al 10 en forma descente, diseñar el algoritmo tanto con la estructura while como la for. a) Con while disp( Números del 1 al 10 descente ) numero = 10; while numero >= 1 numero = numero - 1; % contador que decrementa el numero inicial
b) Con for disp( Números del 1 al 10 descente ) for numero = 10 : -1 : 1 Ejercicio 3: Mostrar los números del 1 al 10 en forma descente pero solo impares, diseñar el algoritmo tanto con la estructura while como la for. a) Con while disp( Números del 1 al 10 descente solo impares ) numero = 10; while numero >= 1 if mod(numero, 2) ~= 0 numero = numero - 1; % contador que decrementa el numero inicial c) Con for disp( Números del 1 al 10 descente solo impares ) for numero = 10 : -1 : 1 if mod(numero, 2) ~= 0
Ejercicio 4: Mostrar los productos del 1 al 10 de la tabla de multiplicar del número 5, ejemplo de salida: Tabla de multiplicar del número 5 5 x 1 = 5 5 x 2 = 10 Hasta 5 x 10 = 50 disp('tabla de multiplicar del número 5') resultado = 0; tabla = 5; for numero = 1 : 10 resultado = tabla * numero; disp(sprintf('%d x %d = %d', tabla, numero, resultado)) Ejercicio 5: Mostrar las tablas de multiplicar del 1 al 10 por pantallazos disp('tablas de multiplicar del 1 al 10') resultado = 0; % Ciclo de tablas for tabla = 1 : 10 disp(sprintf('tabla del número %d', tabla)) % Ciclo de productos por tabla for numero = 1 : 10 resultado = tabla * numero; disp(sprintf('%d x %d = %d', tabla, numero, resultado)) disp('presione Enter para continuar') pause % hace una pause y continúa con un Enter Ejercicio 6: Mostrar la tabla de multiplicar de un número dado (ingresado) disp('tabla de multiplicar de un número ingresado') tabla = 0; resultado = 0; tabla = input('número de la tabla a procesar:'); disp(' ')
for numero = 1 : 10 resultado = tabla * numero; disp(sprintf('%d x %d = %d', tabla, numero, resultado)) disp(' ') Ejercicio 7: Mostrar la tabla de multiplicar de un número dado, y repetir el proceso hasta que el usuario lo quiera realizar. disp('tabla de multiplicar de un número ingresado con pregunta para nueva ejecución') tabla = 0; resultado = 0; respuesta = 'S'; while respuesta == 'S' tabla = input('número de la tabla a procesar:'); disp(' ') for numero = 1 : 10 resultado = tabla * numero; disp(sprintf('%d x %d = %d', tabla, numero, resultado)) respuesta = upper(input(' Desea procesar otro número de tabla (S/N)?', 's')); if respuesta == 'S' disp(' ') Ejercicio 8: Ingresar un texto y determinar por cada vocal su cantidad encontrada 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;
elseif texto(letra) == 'o' vo = vo + 1; elseif texto(letra) == 'u' vu = vu + 1; 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)) UNIVERSIDAD TECNOLOGICA DE PEREIRA Ejercicio 9: Generar n números aleatorios y al final mostrar su promedio. disp('generar n números aleatorios y su promedio') cantidad = 0; primedio = 0; sumatoria = 0; cantidad = input('cantidad de números aleatorios: '); for numero = 1 : cantidad sumatoria = sumatoria + rand; % se genera el numero aleatorio y se acumula promedio = sumatoria / cantidad; disp(sprintf('el promedio de los números aleatorios es %.4f', promedio)) Ejercicio 10: Ingresar n números y al final mostrar de acuerdo a los siguientes rangos su correspondiente sumatoria: a) Números menores a 100 b) Números entre 100 y 500 c) Números mayores a 500. disp('ingresar n números realizando unas sumatorios') cantidad = 0; numero = 0; nummenor = 0; numentre = 0; nummayor = 0; cantidad = input('cantidad de números a ingresar: '); for n = 1 : cantidad numero = input('ingrese el número: '); if numero < 100 nummenor = nummenor + numero; elseif numero >= 100 & numero <= 500 numentre = numentre + numero;
else nummayor = nummayor + numero; 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)) Ejercicio 11: Validar que al ingresar una nota solo admita el rango entre 1 y 5, una vez aceptada como válida 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 solución con errores sintácticos y/o lógicos para que sea corregido y solucionado el problema. 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: '); 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'; disp(sprintf('la calificación cualitativa de la materia es %f', mensaje)) disp('fin del ejercicio') Ejercicio 12: Diseñar un programa que permita calcular el factorial de un número dado (n!) Ejercicio 13: Ingresar n números y al final mostrar: Sumatoria de pares, sumatoria de impares y promedio general. Ejercicio 14: Dado un número entero mostrar la lista de los números pares inferiores a él. Ejercicio 15: Dados dos números enteros mostrar la lista de los números impares compridos entre ellos. Ejercicio 16: Generar un número aleatorio entero entre 0 y 20, seguidamente diseñe un algoritmo que permita establecer en cuantos intentos fue adivinado.