Estructuras Repetitivas: SENTENCIA WHILE EN MATLAB INFORMÁTICA T2 INGENIERÍA INDUSTRIAL JORNADA ESPECIAL
Significado La sentencia while (mientras que) se usa para que MATLAB repita un bloque de instrucciones mientras que se cumpla una condición dada, la cual es evaluada cada que se termina la ultima instrucción del bloque.
SINTAXIS En MATLAB, la forma general de representar un ciclo es la siguiente: while condicion Bloque de instrucciones que se repiten end mientras se cumpla la condición.
El while en la práctica es usado para realizar procesos que impliquen una secuencia repetitiva de instrucciones Un ejemplo real puede ser que yo subo una escalera mientras haya escalones para subir, cada que subo un escalón evalúo si hay mas escalones, en el momento que no hayan escalones no subo mas. Es decir paro el ciclo, si lo fuéramos a codificar seria de la siguiente manera:
while (haya escalones) end subir un escalón
Ejemplos aplicados Crear un programa en MATLAB que imprima los números desde cero hasta un numero ingresado por el usuario. En este ejemplo debemos tener en cuenta que instrucción debe repetirse?, esta es, imprimir un numero, ahora debemos conocer hasta cuando se realiza la condición?, para nuestro caso es hasta que MATLAB llegue hasta el numero ingresado por el usuario. También debemos saber en donde comenzaremos?, el problema nos dice que en cero.
Como nos dicen que imprimir los números desde cero hasta un numero ingresado por el usuario, entenderemos que el ciclo se incrementa de uno en uno. La solución queda de la siguiente forma: n=input( Ingrese un número mayor que cero: ); i=0; % esto porque el problema nos dice que comencemos en cero. Variable contadora while(i<=n) % esta es la condición que debe cumplirse para continuar el ciclo disp(i); % instrucción 1 i=i+1; % instrucción 2, conocida como incremento del contador end
Incremento del contador diferente a uno % Escribe los enteros pares de 2 a 10 clc i=2; while i<=10 disp(i); i=i+2; end
Debemos tener en cuenta que el bloque de instrucciones que va dentro del while pueden ser instrucciones de cualquier tipo, incluidas: sentencias if, incrementos, declaración de variables, lectura de valores ingresados por el usuario, muestra de mensajes, o, incluso otros while.
Ejemplo Realizar DFD y un programa script en MATLAB que sume una serie de números ingresados por el usuario mientras que el número ingresado sea diferente de cero.
D.F.D inicio inicio n 1 Sum 0 N <>0? n<>0? NO SI Ingrese un numero, para terminar digite CERO n La suma es, Sum Sum Sum + n inicio fin
En MatLab % programa que suma números mientras no sean 0 n=1; sumatoria=0; while(n ~= 0) n=input('ingrese un numero, para terminar digite 0:'); sumatoria=sumatoria + n; end disp( La suma de los números ingresados es: ); disp(sumatoria);
Ejercicio Escribir un programa llamado mifactorial que calcule el factorial de un número n!, tenga en cuenta que n debe ser mayor o igual a 0 y que 0!=1 y 1!=1.
Ejemplo DADO EL SIGUIENTE VECTOR, HACER UN PROGRAMA QUE INDIQUE EN QUE POSICIONES SE ENCUENTRAN NUMEROS NEGATIVOS V=[1, 2, 25, -12, -8, 32, -4, 88, -7,-21 ] SOLUCIÓN: % programa que imprime las posiciones con números negativos en un vector clc; V=[1, 2, 25, -12, -8, 32, -4, 88, -7,-21 ]; i=1; while(i<=length(v)) if(v(i)<0) sprintf('en la posición %d hay un número negativo', i ) end i=i+1; end
Ejemplo While con índices de Vectores Crear un programa que realice lo siguiente: Una empresa le paga a sus empleados una comisión según el valor de las ventas realizadas en el mes, la comisión se paga de la siguiente manera: si vendió 400 millones o menos le paga 1% de comisión, si vendió mas de 400 millones y menos de 1000 le paga 3%, si vendió 1000 o mas le paga 5%. Dado un vector con las ventas de los 10 vendedores de la empresa realizar un programa usando ciclos que presente una tabla con dos columnas, la primera columna contendrá el valor de las ventas y la segunda el valor de la comisión. Luego realizar un grafico de ventas contra comisiones: ventas=[2000 5000 100 800 300 1000 2200 350 50 1300]
clc; % limpia pantalla clear all; % borra variables ventas=[2000 5000 100 800 300 1000 2200 350 50 1300]; % vector de ventas i=1; % se encargará de recorrer todas las posiciones del vector ventas while(i <= length (ventas)) if(ventas(i)<=400) comisiones(i)=ventas(i).*0.01; elseif(ventas(i)>400 && ventas(i)<1000) comisiones(i)=ventas(i).*0.03; else comisiones(i)=ventas(i).*0.05; end i=i+1; End % creamos la tabla a graficar tabla=[ventas' comisiones']; disp('las comisiones por venta son: '); disp(tabla); plot(ventas, comisiones, b* )