Post on 06-Jul-2015
WHILE
CICLOS
Mtra. Faviola Vega. Introd. Computación
INSTRUCCIÓN WHILE
En este tema vamos a ver una estructura
repetitiva más primitiva que FOR ya que
no maneja automáticamente el contador
y por lo tanto es más difícil de utilizar,
pero usada correctamente puede ser
bastante más flexible.
FOR se incrementa con el STEP
WHILE requiere un contador
Mtra. Faviola Vega. Introd. Computación
Una forma más general que el FOR
para realizar interacciones es el WHILE
(mientras), el cual permite repetir una
serie de instrucciones mientras una
determinada expresión lógica sea
verdadera. Su forma general utilizando
pseudocódigo es la siguiente
Mtra. Faviola Vega. Introd. Computación
Mientras (expresión lógica)
Instrucciones a repetir
mientras la expresión lógica
es verdadera
Fin del Mientras
Mtra. Faviola Vega. Introd. Computación
Representación gráfica del
While
Mtra. Faviola Vega. Introd. Computación
EJEMPLO
Se muestra un algoritmo que empleando el WHILE escriba 5 veces el texto “Hola”
INICIO
Hacer i = 1
while (i<=5)
imprime “Hola”
i = i +1
Fin del While
Fin
Mtra. Faviola Vega. Introd. Computación
Como pudo observarse en el ejemplo
anterior para que el proceso iterativo
llevado a cabo en el MIENTRAS no sea
infinito, dentro de las instrucciones que
se ejecutan en su interior se debe colocar
una instrucción que modifique el valor de
verdad en la expresión lógica.
Mtra. Faviola Vega. Introd. Computación
• Ejemplo: Cuantas veces se escribe el
texto “HOLA” al ejecutar los siguientes
algoritmos:
Mtra. Faviola Vega. Introd. Computación
ACTIVIDAD
Se puede observar que para utilizar un
WHILE se deben responder las
siguientes preguntas:
• 1.- En que valor inician la(s) variable(s)
de control
• 2.- Cuál es la condición de
terminación?
• 3.- Cómo se modifican la(s)
variables(s) de control?
Mtra. Faviola Vega. Introd. Computación
Actividad convierte el siguiente
Diagrama en algoritmo
Mtra. Faviola Vega. Introd. Computación
EJEMPLO
Diseñar un algoritmo para escribir los números impares menores que 100
Inicio
Variables
…..
i = 1
While (i<=100)
Imprime i
i = i +2
Fin del Mientras
Fin
Mtra. Faviola Vega. Introd. Computación
Encontrar el valor de P que cumple la siguiente ecuación:
En otras palabras se pide contar cuantos números enteros positivos se pueden sumar, sin que su suma exceda 1000
Inicio
..
i=0
suma = 0
While suma = 0
i = i + 1
suma = suma + i
Fin del While
P = i -1
Imprime P
FinMtra. Faviola Vega. Introd.
Computación
ACTIVIDAD: Realiza la prueba de escritorio con el siguiente Algoritmo para los números 17, 25, 12, 865, 658, 1, 333 escribe los resultados y escribe su diagrama
Recordemos el ejemplo de escribir los números del 1 al 5 con la instrucción FOR.
FOR n = 1 TO 5PRINT n
NEXT
Mtra. Faviola Vega. Introd. Computación
Ahora veremos como se hace lo mismo usando la instrucción WHILE (Mientras).n = 1WHILE n <= 5
PRINT nn = n + 1
WENDEsto lo que hace es ejecutar el bloque de instrucciones (Lo que hay entre el WHILE y el WEND) una y otra vez mientras se cumpla la condición del WHILE. Un poco más difícil que con el FOR.
Mtra. Faviola Vega. Introd. Computación
Se puede ver que el funcionamiento es
parecido al del FOR, solo que aquí lo
tenemos que controlar todo.
Las dos reglas que dijimos sobre los
contadores del FOR ya aquí no tienen
sentido porque de hecho nosotros
vamos a tener que incrementar el
contador haciendo una asignación y
una vez terminado podemos estar
seguro del valor que tiene la variable.
Mtra. Faviola Vega. Introd. Computación
Una norma que sí conviene respetar (Aunque no siempre es necesario) es que la instrucción que incrementa el contador sea la última del bloque, ya que si está en otro sitio ejecutaremos unas instrucciones con un valor y las demás con el otro, con lo que nos podemos liar. Un error muy típico es que se nos olvide de poner la instrucción de incrementar el contador, produciendo un bucle infinito que hará que nuestro programa no termine nunca. Si un programa se bloquea es conveniente revisar esto.
Mtra. Faviola Vega. Introd. Computación
También puede pasar que no lleguemos a entrar al MIENTRAS porque la condición ya sea falsa la primera vez, por ejemplo:
contador = 120
WHILE contador < 100
PRINT "Esto no se va a llegar a escribir nunca.”
contador = contador + 1
Mtra. Faviola Vega. Introd. Computación
ACTIVIDAD
Usando la instrucción mientras hacer un algoritmo para un programa que imprima la serie 1, 3, 5, 7,9, realiza su diagrama de Flujo y su prueba de escritorio.
InicioVariable
I IntegerLeer i
i =1While i<=9
imprime ii =i+2
fin mientrasFin
Mtra. Faviola Vega. Introd. Computación
1.- Hacer un algoritmo para un
programa que encuentre el primer
entero que haga que la suma de la
serie 1, 2, 3, 4, 5, 6, 7, 8,9,...; supere
30.
Mtra. Faviola Vega. Introd. Computación
ACTIVIDAD
Iniciovariables
i intnum int
leer nummientras num>1 hacerIf num modulo 2 = 0 entonces
num=num/2de lo contrario
num=num*3+1imprimir numfin mientras
Fin• El MODULO TOMA EL RESIDUO recuerda 5/2=2 y queda 1 EL RESIDUO ES EL QUE TOMA
Mtra. Faviola Vega. Introd. Computación
• Hacer el algoritmo para un programa
que calcule la suma de ciertos números
ingresados por el teclado. El cálculo de
la suma se hará en cualquier momento.
Mtra. Faviola Vega. Introd. Computación
ACTIVIDAD
ACTIVIDAD
Escribir un algoritmo para un programa que imprima la siguiente tabla de temperaturas Fahrenheit y Celsius. Sugerencia
F C32 034 1,111136 2,2222... ...100 37,778
Mtra. Faviola Vega. Introd. Computación
Inicio
variables
fareng int
cel int
fareng 30
While fareng<=100
Cel=(fareng-32)*5/9
fareng=fare+2
imprimir fareng, cel
Fin mientras
Fin
Mtra. Faviola Vega. Introd. Computación
Inicio
Variablesx int
Dame Numero; x
Leer x
While x<32000 y x<>0 haceriF x>=0 y x<10 entonces imprimir x, "TIENE 1 CIFRA" Fin siIf x>9 y x<100 entonces imprimir x, "TIENE 2 CIFRAS" Fin siIF x>99 y x<1000 entonces imprimir x, "TIENE 3 CIFRAS" FinIF x>999 y x< 10000 entonces imprimir x, "TIENE 4 CIFRAS" Fin siIF x>9999 y x<=32000 entonces imprimir "TIENE 5 CIFRAS" Fin si
Fin mientras
Fin
Mtra. Faviola Vega. Introd. Computación
ACTIVIDAD
Escriba el algoritmo para un programa
en el que se pida al usuario ingresar 10
números enteros impares para
sumarlos. Elabore el programa de
manera que no se arruine si el usuario
escribe algunos enteros pares. El
programa debe salir del ciclo e imprimir
la suma sólo cuando se hayan
ingresado los 10 enteros impares.
Mtra. Faviola Vega. Introd. Computación
Iniciox int
suma int
c intwhile e(c<10)Leer xsi x modulo 2 <>0 entoncessuma suma+x
c c+1fin siFin mientrasimprimir sumaFin
Mtra. Faviola Vega. Introd. Computación
Fuente:
• http://www.mailxmail.com/curso-
algoritmos-lenguaje-c/bucles-while-1
Mtra. Faviola Vega. Introd. Computación