Download mientras (while-condicion-end)

Document related concepts
no text concepts found
Transcript
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)
Condicion
Falso
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 CORTES ALVAREZ, 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)
Condiciones
Falso
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 CORTES ALVAREZ, 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 CORTES ALVAREZ, 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 CORTES ALVAREZ, 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;
for tabla = 1 : 10
disp(sprintf('Tabla del número %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 continúa con un Enter
clc
end
disp('Fin del ejercicio...')
Ejercicio 6: Mostrar la tabla de multiplicar de un número dado
clc
clear all
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))
Profesor WILSON CORTES ALVAREZ, 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)
end
disp(' ')
disp('Fin del ejercicio...')
Ejercicio 7: Diseñar un programa que permita calcular el factorial de un número dado
(n!)
clc
clear all
numero = 0;
factorial = 1;
numero = input ('Factorial del número: ');
for i = 1 : numero
factorial = factorial * i;
end
disp(sprintf('El factorial del número %d es %d', numero, factorial))
disp('Fin del ejercicio...')
Ejercicio 8: Ingresar n números 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 números 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 números pares %d', sumapar))
disp(sprintf('Suma de los números impares %d', sumaimpar))
disp('Fin del ejercicio...')
Profesor WILSON CORTES ALVAREZ, 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.
clc
clear all
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))
end
respuesta = upper(input('¿Desea procesar otro número 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
Profesor WILSON CORTES ALVAREZ, 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)
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 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.
clc
clear all
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 < 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))
Profesor WILSON CORTES ALVAREZ, 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)
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 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 = '';
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 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 CORTES ALVAREZ, Ing. y Auditor de Sistemas de Información
[email protected] - [email protected]