Estructuras repetitivas 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. 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)) disp('fin del ejercicio...') 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 disp('fin del ejercicio...') Ejercicio 6: Mostrar la tabla de multiplicar de un número dado (ingresado) Ejercicio 7: Diseñar un programa que permita calcular el factorial de un número dado (n!) Ejercicio 8: Ingresar n números y al final mostrar: - Sumatoria de los pares - Sumatoria de los impares
Ejercicio 9: Mostrar la tabla de multiplicar de un número dado, y repetir el proceso hasta que el usuario lo quiera realizar. Ejercicio 10: Ingresar un texto y determinar por cada vocal su cantidad encontrada Ejercicio 11: 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)) disp('fin del ejercicio...') Ejercicio 12: Ingresar n números y al final mostrar de acuerdo a los siguientes rangos su correspondiente sumatoria: a) Números menores a 10 b) Números entre 10 y 50 c) Números mayores a 50. Ejercicio 13: 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 = ''; % Se valida lo que no sirve como dato de entrada 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'; else if 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 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.