Facultad de Ingeniera Industrial Informtica III (Matlab)
Profesor WILSON CORTES ALVAREZ, Ing. y Auditor de Sistemas de Informacin wcortes@utp.edu.co - wcortesalvarez@yahoo.com Estructuras repetitivas
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)
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 utili!a "ara ciclos num#ricos y$o l%icos
Condicion Instrucciones Falso Verdadero UNIVERSIDAD TECNOLOGICA DE PEREIRA Facultad de Ingeniera Industrial Informtica III (Matlab)
Profesor WILSON CORTES ALVAREZ, Ing. y Auditor de Sistemas de Informacin wcortes@utp.edu.co - wcortesalvarez@yahoo.com "ara hasta (&or-condicion-end)
Sintaxis en matlab:
&or vble ' inicio : incremento : &in Instrucciones; end
Observacin: El ciclo se inicia con la cabecera &or y se cierra con end (abre cierra) (os ar%umentos inicio) incremento y &in son valores num#ricos Esta estructura se utili!a "ara ciclos num#ricos) debido a su sim"le sintaxis y l%ica en utili!acin Condiciones Instrucciones Falso Verdadero UNIVERSIDAD TECNOLOGICA DE PEREIRA Facultad de Ingeniera Industrial Informtica III (Matlab)
Profesor WILSON CORTES ALVAREZ, Ing. y Auditor de Sistemas de Informacin wcortes@utp.edu.co - wcortesalvarez@yahoo.com *lanteamiento de "roblemas y soluciones
E+ercicio ,: -ostrar los n.meros del , al ,/ en &orma ascendente) dise0ar el al%oritmo tanto con la estructura while como la &or
a) 1on while clear all clc dis"(23.meros del , al ,/ ascendente4) numero ' ,; while numero 5' ,/ dis"(numero) numero ' numero 6 ,; 7 contador 8ue incrementa el numero inicial end dis"(29in del e+ercicio4)
b) 1on &or clear all clc dis"(23.meros del , al ,/ ascendente4) &or numero ' , : , : ,/ dis"(numero) end dis"(29in del e+ercicio4)
Observacin: (a cabecera (condiciones) del ciclo "odr:a ser tambi#n for numero = 1 : 10 debido a 8ue el incremento es ,) esto 8uiere decir) 8ue el incremento es o"cional colocarlo cuando se sabe 8ue es , en valor I%ualmente el incremento "uede ser "ositivo o ne%ativo y di&erente a , (cuando se re8uiera utili!arlo "or l%ica)
E+ercicio ;: -ostrar los n.meros del , al ,/ en &orma descendente) dise0ar el al%oritmo tanto con la estructura while como la &or a) 1on while clear all clc dis"(23.meros del , al ,/ descendente4) numero ' ,/; while numero <' , dis"(numero) numero ' numero - ,; 7 contador 8ue decrementa el numero inicial end dis"(29in del e+ercicio4) UNIVERSIDAD TECNOLOGICA DE PEREIRA Facultad de Ingeniera Industrial Informtica III (Matlab)
Profesor WILSON CORTES ALVAREZ, Ing. y Auditor de Sistemas de Informacin wcortes@utp.edu.co - wcortesalvarez@yahoo.com
b) 1on &or clear all clc dis"(23.meros del , al ,/ descendente4) &or numero ' ,/ : -, : , dis"(numero) end dis"(29in del e+ercicio4)
E+ercicio =: -ostrar los n.meros del , al ,/ en &orma descendente "ero solo im"ares) dise0ar el al%oritmo tanto con la estructura while como la &or
a) 1on while clear all clc dis"(23.meros del , al ,/ descendente solo im"ares4) numero ' ,/; while numero <' , i& mod(numero) ;) >' / dis"(numero) end numero ' numero - ,; 7 contador 8ue decrementa el numero inicial end dis"(29in del e+ercicio4)
c) 1on &or clear all clc dis"(23.meros del , al ,/ descendente solo im"ares4) &or numero ' ,/ : -, : , i& mod(numero) ;) >' / dis"(numero) end end dis"(29in del e+ercicio4) UNIVERSIDAD TECNOLOGICA DE PEREIRA Facultad de Ingeniera Industrial Informtica III (Matlab)
Profesor WILSON CORTES ALVAREZ, Ing. y Auditor de Sistemas de Informacin wcortes@utp.edu.co - wcortesalvarez@yahoo.com 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 5 x 1 = 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; for tabla = 1 : 10 disp(sprintf('Tabla del nmero %d', 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
clc clear all disp('Tabla de multiplicar de un nmero ingresado') tabla = 0; resultado = 0; 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)) UNIVERSIDAD TECNOLOGICA DE PEREIRA Facultad de Ingeniera Industrial Informtica III (Matlab)
Profesor WILSON CORTES ALVAREZ, Ing. y Auditor de Sistemas de Informacin wcortes@utp.edu.co - wcortesalvarez@yahoo.com end disp(' ') disp('Fin del ejercicio...')
Ejercicio 7: Disear un programa que permita calcular el factorial de un nmero dado (n!)
clc clear all numero = 0; factorial = 1; numero = input ('Factorial del nmero: '); for i = 1 : numero factorial = factorial * i; end disp(sprintf('El factorial del nmero %d es %d', numero, factorial)) disp('Fin del ejercicio...')
Ejercicio 8: Ingresar n nmeros y al final mostrar: - Sumatoria de los pares - Sumatoria de los impares
clc clear all cantidad = 0; numero = 0; sumapar = 0; sumaimpar = 0; cantidad = input('Cantidad de nmeros a ingresar: '); for i =1:cantidad numero = input ('Numero: '); if mod(numero, 2) == 0 sumapar = sumapar + numero; else sumaimpar = sumaimpar + numero; end end disp(' ') disp('RESULTADOS') disp(sprintf('Suma de los nmeros pares %d', sumapar)) disp(sprintf('Suma de los nmeros impares %d', sumaimpar)) disp('Fin del ejercicio...')
UNIVERSIDAD TECNOLOGICA DE PEREIRA Facultad de Ingeniera Industrial Informtica III (Matlab)
Profesor WILSON CORTES ALVAREZ, Ing. y Auditor de Sistemas de Informacin wcortes@utp.edu.co - wcortesalvarez@yahoo.com Ejercicio 9: 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 10: 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; elseif texto(letra) == 'o' vo = vo + 1; elseif texto(letra) == 'u' vu = vu + 1; end end UNIVERSIDAD TECNOLOGICA DE PEREIRA Facultad de Ingeniera Industrial Informtica III (Matlab)
Profesor WILSON CORTES ALVAREZ, Ing. y Auditor de Sistemas de Informacin wcortes@utp.edu.co - wcortesalvarez@yahoo.com 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 11: 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 12: Ingresar n nmeros y al final mostrar de acuerdo a los siguientes rangos su correspondiente sumatoria: a) Nmeros menores a 10 b) Nmeros entre 10 y 50 c) Nmeros mayores a 50. 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 < 10 nummenor = nummenor + numero; elseif numero >= 10 & numero <= 50 numentre = numentre + numero; else nummayor = nummayor + numero; end end disp('Resultado de sumatorias') disp(sprintf('Menores a 10 %.2f', nummenor)) UNIVERSIDAD TECNOLOGICA DE PEREIRA Facultad de Ingeniera Industrial Informtica III (Matlab)
Profesor WILSON CORTES ALVAREZ, Ing. y Auditor de Sistemas de Informacin wcortes@utp.edu.co - wcortesalvarez@yahoo.com disp(sprintf('Entre 10 y 50 %.2f', numentre)) disp(sprintf('Mayores a 50 %.2f', nummayor)) disp('Fin del ejercicio...')
Ejercicio 13: 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'; else if 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 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.