Proposición WHILE-DO
Es un ejemplo de estructura de control de
ciclos que tiene la siguiente forma
general:
WHILE expresión-booleana DO
Proposición-1
Proposición-2
La palabra reservada WHILE va
seguida de una expresión booleana y después de a palabra reservada DO. Mientras se cumpla la expresión booleana, se
ejecutará la proposición-1 (o un grupo de proposiciones delimitado por una
pareja BEGIN-END). La proposición WHILE se ejecutará en forma repetida hasta
que al evaluarse la expresión booleana, resulte ser falsa, momento en el cual el control pasará a
la proposición que sigue a la proposición WHILE (proposición-2).
Contador:=0;
read(num);
WHILE
num>0 DO
BEGIN
contador:=contador+1;
read(num)
END;
writeln(‘Número de enteros
positivos=’,contador);
|
|
Seudocódigo
|
Explicación
|
|
PASO 1
|
contador:=0
|
Inicializar en cero el
contador
|
|
PASO 2
|
read(num)
|
Leer el primer número
|
|
PASO 3
|
WHILE(num>0) DO
|
Probar si num>0. Si es
así, continuar con el paso 4. Si no, seguir con el paso 7
|
|
PASO 4
|
sumar 1 a contador
|
Incrementar el contador
|
|
PASO 5
|
leer(num)
|
Leer el siguiente número
|
|
PASO 6
|
volver al Paso 3
|
Para evaluar y probar la
expresión booleana
|
|
PASO 7
|
exhibir(contador)
|
Exhibir el resultado
|
Es importante comprender que
la proposición read dentro del cuerpo del ciclo es esencial: sin ella el
programa seria un ciclo infinito es decir, el programa nunca podría salir del
ciclo. Así, sin la proposición read, la siguiente proposición WHILE sería un
ciclo infinito (suponiendo que num>0).
WHILE num>
0 DO
BEGIN
contador:=contador+1
END
En este ciclo el valor de la
expresión booleana jamás cambia. Por tanto el ciclo se ejecutará
indefinidamente. Para el siguiente ejemplo, la proposición WHILE necesita
verificar el número de veces que se ha ejecutado el ciclo. Puede utilizarse a
una variable llamada variable de control de ciclo. El siguiente segmento en
pascal realizaría ese trabajo (suponer que i, contador y num fueron declarados
como enteros).
Contador:=0; (*Inicializar
el contador*)
i:=; (*Inicializara la variable de
control del ciclo*)
WHILE i=20
DO (*Continuar
hasta que i>20*)
BEGIN
read(num); (*capturar
el siguiente dato de estrada*)
IF
num>0
THEN
contador: contador+1 contador;
i:=i+1 (*Incrementar
la variable de control de ciclo*)
END;
Writeln (‘El número de enteros positivos es’,
contador:1)
Se debe asignar un valor
inicial a la variable de control de ciclo i porque la computadora no tiene la
capacidad de determinar el valor de i<=20 sin conocer el valor de i.
Esta preposicion ayuda con el problema anterior? en lugar de que sea infinito como en este ejemplo pondriamos que sea 666? i con MOD sacar si es multiplo de 3 o 5?
ResponderEliminarefectivamente
Eliminarcon el while podrias repetir la entrada de numeros, hasta que el numero se a 666 ejemplo
while num<>666 DO
BEGIN
BLOQUE DE INSTRUCCIONES A REPETIRSE SI LA CONDICION (NUM<>666) ES VERDADERA
END;
aa que se reifere con experesion booleana?
ResponderEliminarsi es un ciclo como es que tiene fin?
while soloindica el ciclo?
WHILE num>0 DO
EliminarBEGIN
contador:=contador+1;
read(num)
END;
PARA EL EJEMPLO ANTERIOR LA expresion booleana es num>0, recuerda que el resultado de una expresion booleana o condicion es verdadero o falso.
En el caso anterior el fin del ciclo es cundo la condicion (num>o) tiene el resultado de falso.
Si la instruccion while nos sirve par a indicar el inicio del ciclo
maestro y para que nos sirve DO?
ResponderEliminarLa sintaxis de la instruccion while tiene como palabra reservada el DO, y se tiene que poner despues de la expresion logica o condicion.
Eliminarejemplo
WHILE num>o DO
Este comentario ha sido eliminado por el autor.
ResponderEliminarprofe el while funciona con el if then else
ResponderEliminarDepende del problema que tengas que resolver, si puedes utilizar if dentro del bloque repetitivo de while ejemplo:
EliminarWHILE i=20 DO
BEGIN
reaD(num);
IF num>0
THEN contador:= contador+1 ;
i:=i+1
END;
en este ejemplo utilizas el if num>0 tehn dentro del cuerpo del cilo , esto es dentro de begin y end; del ciclo.
veo que es importante ponerle la proposicion read porque si no ya no seria un ciclo y creo que este nos puede ayudar en el problema anterior
ResponderEliminarWHILE num>0 DO
EliminarBEGIN
contador:=contador+1;
read(num)
END;
Si no pones la instruccion read en este programa , nunca cambiarias el valor de num, al no cambiar el valor de num nunca tendrias la condicion del while num>0 con un resultado falso, por lo que si no tienes resultado falso el cilco seria infinito.
'i' siempre sera una variante de control de ciclo o puede ser cualquier otra letra, y aparte siempre debe de ir asi 'i:='???
ResponderEliminarSi tiene que ser una variable de control de cilclo, pero considera que puedes tener variables contadoras, variables de bandera, variables acumuladoras o variables multiplicadoraso etc. cualquier tipo de variable puede controlar un ciclo, no necesariamente tiene que ser una variable contadora o entera.
Eliminarpero dependiendo de k variable sea dependera la letra o io asigno la letra k kiera para cada variable???
Eliminarentonces el while repite la entrada de números hasta que resulte el número que buscas
ResponderEliminarSi , en la repeticion se acepta los numeros con read(num)
EliminarEste comentario ha sido eliminado por el autor.
ResponderEliminarque tiene fiin se repite se repite y no hay fin porque no tiene un limite
Eliminar