2. 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
3. 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
4. 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
6. 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
7. 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
8. ACTIVIDAD
• Ejemplo: Cuantas veces se escribe el
texto “HOLA” al ejecutar los siguientes
algoritmos:
Mtra. Faviola Vega. Introd.
Computación
9. 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
10. Actividad convierte el siguiente
Diagrama en algoritmo
Mtra. Faviola Vega. Introd.
Computación
11. 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
12. 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
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
Fin
Mtra. Faviola Vega. Introd.
Computación
13. Recordemos el ejemplo de escribir los
números del 1 al 5 con la instrucción
FOR.
FOR n = 1 TO 5
PRINT n
NEXT
Mtra. Faviola Vega. Introd.
Computación
14. Ahora veremos como se hace lo mismo usando
la instrucción WHILE (Mientras).
n=1
WHILE n <= 5
PRINT n
n=n+1
WEND
Esto 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
15. 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
16. 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
17. 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
18. 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.
Inicio
Variable
I Integer
Leer i
i =1
While i<=9
imprime i
i =i+2
fin mientras
Fin
Mtra. Faviola Vega. Introd.
Computación
19. ACTIVIDAD
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
20. Inicio
variables
i int
num int
leer num
mientras num>1 hacer
If num modulo 2 = 0 entonces
num=num/2
de lo contrario
num=num*3+1
imprimir num
fin 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
21. ACTIVIDAD
• 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
22. ACTIVIDAD
Escribir un algoritmo para un programa
que imprima la siguiente tabla de
temperaturas Fahrenheit y Celsius.
Sugerencia
F C
32 0
34 1,1111
36 2,2222
... ...
100 37,778
Mtra. Faviola Vega. Introd.
Computación
23. 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
24. Inicio
Variables
x int
Dame Numero; x
Leer x
While x<32000 y x<>0 hacer
iF x>=0 y x<10 entonces imprimir x, "TIENE 1 CIFRA"
Fin si
If x>9 y x<100 entonces imprimir x, "TIENE 2 CIFRAS"
Fin si
IF x>99 y x<1000 entonces imprimir x, "TIENE 3
CIFRAS" Fin
IF x>999 y x< 10000 entonces imprimir x, "TIENE 4
CIFRAS" Fin si
IF x>9999 y x<=32000 entonces imprimir "TIENE 5
CIFRAS" Fin si
Fin mientras
Fin
Mtra. Faviola Vega. Introd.
Computación
25. 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
26. Inicio
x int
suma int
c int
while e(c<10)
Leer x
si x modulo 2 <>0 entonces
suma suma+x
c c+1
fin si
Fin mientras
imprimir suma
Fin
Mtra. Faviola Vega. Introd.
Computación