You are on page 1of 17

Estructuras Repetitivas:

SENTENCIA WHILE EN MATLAB


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

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;
else
if(ventas(i)>400 && ventas(i)<1000)
comisiones(i)=ventas(i).*0.03;
else
comisiones(i)=ventas(i).*0.05;
end
end
i=i+1;
end
tabla=[ventas' comisiones'];
disp('las comisiones por venta son: ');
disp(tabla);
plot(ventas , comisiones, b*)

You might also like