INFORMTICA T2 INGENIERA INDUSTRIAL JORNADA ESPECIAL Significado La sentencia while (mientras que) se usa para que MATLAB repita un bloque de instrucciones mientras que se cumpla una condicin dada, la cual es evaluada cada que se termina la ultima instruccin del bloque. SINTAXIS En MATLAB, la forma general de representar un ciclo es la siguiente:
while condicion Bloque de instrucciones que se repiten mientras se cumpla la condicin. end Un ejemplo real puede ser que yo subo una escalera mientras haya escalones para subir, cada que subo un escaln evalo si hay mas escalones, en el momento que no hayan escalones no subo mas. Es decir paro el ciclo, si lo furamos a codificar seria de la siguiente manera:
El while en la prctica es usado para realizar procesos que impliquen una secuencia repetitiva de instrucciones while (haya escalones) subir un escaln end Ejemplos aplicados Crear un programa en MATLAB que imprima los nmeros desde cero hasta un numero ingresado por el usuario. En este ejemplo debemos tener en cuenta que instruccin debe repetirse?, esta es, imprimir un numero, ahora debemos conocer hasta cuando se realiza la condicin?, para nuestro caso es hasta que MATLAB llegue hasta el numero ingresado por el usuario. Tambin debemos saber en donde comenzaremos?, el problema nos dice que en cero. Como nos dicen que imprimir los nmeros desde cero hasta un numero ingresado por el usuario, entenderemos que el ciclo se incrementa de uno en uno. La solucin queda de la siguiente forma:
n=input(Ingrese un nmero mayor que cero: ); i=0; % esto porque el problema nos dice que comencemos en cero. Variable contadora while(i<=n) % esta es la condicin que debe cumplirse para continuar el ciclo disp(n); % instruccin 1 i=i+1; % instruccin 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, declaracin 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 nmeros ingresados por el usuario mientras que el nmero ingresado sea diferente de cero.
D.F.D inicio N <>0 ? inicio n<>0? n1 Sum 0 Ingrese un numero, para terminar digite CERO Sum Sum + n n La suma es, Sum inicio fin SI NO En MatLab % programa que suma nmeros 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 nmeros ingresados es: ); disp(sumatoria);
Ejercicio
Escribir un programa llamado mifactorial que calcule el factorial de un nmero 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 ] SOLUCIN:
V=[1, 2, 25, -12, -8, 32, -4, 88, -7,-21 ]; i=1; while(i<=length(V)) if(V(i)<0) disp('En la siguiente posicin hay un numero negativo'); disp(i); end i=i+1; end
Ejemplo con ndices en vectores SOLUCIN:
n=input('ingrese un numero: '); i=1; j=1; while(i <= n) if(mod(i,2)==0) pares(j)=i; j=j+1; end i=i+1; end disp(pares);
Crear un programa que lea un numero y luego cree un vector con los nmeros pares desde 1 hasta el numero.
Ejemplo While con ndices de Vectores Crear un programa que realice lo siguiente: Una empresa le paga a sus empleados una comisin segn el valor de las ventas realizadas en el mes, la comisin se paga de la siguiente manera: si vendi 400 millones o menos le paga 1% de comisin, 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 comisin.
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