UNIVERSIDAD TECNOLOGICA DE PEREIRA Facultad de Ingeniería Industrial – Informática III (Matlab) 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 suspender 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-end) Falso Condicion Verdadero Instrucciones Sintaxis en matlab: while condicion(es) Instrucciones; end Observación: El ciclo se inicia con la cabecera while y se cierra con end (abre – cierra). Esta estructura se utiliza para ciclos numéricos y/o lógicos. Profesor Wilson Cortés Álvarez, Ing. y Auditor de Sistemas de Información [email protected] - [email protected] UNIVERSIDAD TECNOLOGICA DE PEREIRA Facultad de Ingeniería Industrial – Informática III (Matlab) para hasta (for-condicion-end) Falso Condiciones Verdadero Instrucciones Sintaxis en matlab: for vble = inicio : incremento : fin Instrucciones; end Observación: El ciclo se inicia con la cabecera for y se cierra con end (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. Profesor Wilson Cortés Álvarez, Ing. y Auditor de Sistemas de Información [email protected] - [email protected] UNIVERSIDAD TECNOLOGICA DE PEREIRA Facultad de Ingeniería Industrial – Informática III (Matlab) Planteamiento de problemas y soluciones. Ejercicio 1: Mostrar los números del 1 al 10 en forma ascendente, diseñar el algoritmo tanto con la estructura while como la for. a) Con while clear all clc disp(‘Números 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(‘Números del 1 al 10 ascendente’) for numero = 1 : 1 : 10 disp(numero) end disp(‘Fin del ejercicio’) 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 descendente, diseñar el algoritmo tanto con la estructura while como la for. a) Con while clear all clc disp(‘Números 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 Cortés Álvarez, Ing. y Auditor de Sistemas de Información [email protected] - [email protected] UNIVERSIDAD TECNOLOGICA DE PEREIRA Facultad de Ingeniería Industrial – Informática III (Matlab) b) Con for clear all clc disp(‘Números del 1 al 10 descendente’) for numero = 10 : -1 : 1 disp(numero) end disp(‘Fin del ejercicio’) Ejercicio 3: Mostrar los números del 1 al 10 en forma descendente pero solo impares, diseñar el algoritmo tanto con la estructura while como la for. a) Con while clear all clc disp(‘Números 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(‘Números 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 Cortés Álvarez, Ing. y Auditor de Sistemas de Información [email protected] - [email protected] UNIVERSIDAD TECNOLOGICA DE PEREIRA Facultad de Ingeniería Industrial – Informática III (Matlab) 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 5x1=5 5 x 2 = 10 Hasta 5 x 10 = 50 clc clear all 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)) 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 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)) end disp('Presione Enter para continuar') pause % hace una pause y continúa con un Enter clc end 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 Profesor Wilson Cortés Álvarez, Ing. y Auditor de Sistemas de Información [email protected] - [email protected] UNIVERSIDAD TECNOLOGICA DE PEREIRA Facultad de Ingeniería Industrial – Informática III (Matlab) 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. clc clear all 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 end 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. clc clear all 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: '); end if nota > 4.5 mensaje = 'EXCELENTE'; elseif nota >= 4 & nota <= 4.5 mensaje = 'SOBRESALIENTE'; else if nota > 3 & nota <= 3.9 mensaje = 'BUENA'; Profesor Wilson Cortés Álvarez, Ing. y Auditor de Sistemas de Información [email protected] - [email protected] UNIVERSIDAD TECNOLOGICA DE PEREIRA Facultad de Ingeniería Industrial – Informática III (Matlab) else mensaje = 'MALA'; end 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 comprendidos 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. Profesor Wilson Cortés Álvarez, Ing. y Auditor de Sistemas de Información [email protected] - [email protected]