lunes, 20 de febrero de 2012

actividad 2


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.


18 comentarios:

  1. 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?

    ResponderEliminar
    Respuestas
    1. efectivamente
      con 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;

      Eliminar
  2. aa que se reifere con experesion booleana?

    si es un ciclo como es que tiene fin?

    while soloindica el ciclo?

    ResponderEliminar
    Respuestas
    1. WHILE num>0 DO
      BEGIN

      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

      Eliminar
  3. Respuestas
    1. La sintaxis de la instruccion while tiene como palabra reservada el DO, y se tiene que poner despues de la expresion logica o condicion.

      ejemplo

      WHILE num>o DO

      Eliminar
  4. Este comentario ha sido eliminado por el autor.

    ResponderEliminar
  5. Respuestas
    1. Depende del problema que tengas que resolver, si puedes utilizar if dentro del bloque repetitivo de while ejemplo:

      WHILE 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.

      Eliminar
  6. 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

    ResponderEliminar
    Respuestas
    1. WHILE num>0 DO


      BEGIN


      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.

      Eliminar
  7. 'i' siempre sera una variante de control de ciclo o puede ser cualquier otra letra, y aparte siempre debe de ir asi 'i:='???

    ResponderEliminar
    Respuestas
    1. Si 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.

      Eliminar
    2. pero dependiendo de k variable sea dependera la letra o io asigno la letra k kiera para cada variable???

      Eliminar
  8. entonces el while repite la entrada de números hasta que resulte el número que buscas

    ResponderEliminar
    Respuestas
    1. Si , en la repeticion se acepta los numeros con read(num)

      Eliminar
  9. Este comentario ha sido eliminado por el autor.

    ResponderEliminar
    Respuestas
    1. que tiene fiin se repite se repite y no hay fin porque no tiene un limite

      Eliminar