martes, 21 de febrero de 2012

actividad 2




Actividad 1    Construye la idea de la proposición WHILE-DO (Presentación de la idea)

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
Contador:=contador+1
Incrementar el identificador contador mas uno
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:=0;                                             (*Inicializara la variable de control del ciclo*)

WHILE i<20 DO                        (*Continuar hasta que i>20 sea verdadera*)

BEGIN

      read(num);                           (*capturar el siguiente dato de estrada*)

      IF num>0

      THEN contador:=contador+1;

      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.




43 comentarios:

  1. Oiga profe una pregunta
    si el pajaro carpintero
    clava todo el dia .......
    ¿A que hora trabaja?
    DDDDDDD:

    ResponderEliminar
    Respuestas
    1. en que piensas, seguramente todo el dia te pica tu novia, OOONOOOO?

      Eliminar
    2. huuuuu! Profesor GROSEROOOO!
      ahahah Usted debe responder nuestras dudas && así :|
      no andarse burlandoo
      Contestele Bonitooo a su Hijoo x)

      Eliminar
    3. aqui no!!!
      eso es privado!!! aaaa, tenian que ser padre e hijo :D

      Eliminar
    4. digame cual es la duda, aque horas traba ja el carpintero, nolo se.

      Eliminar
    5. Siiiiii acusalo con su mama kiko ¡!¡!

      Eliminar
  2. 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). osceaaa.. como??????

    ResponderEliminar
    Respuestas
    1. una expresion booleana tiene dos resultados verdadero o falso , en el ejemplo
      WHILE num>0 DO


      BEGIN


      contador:=contador+1;


      read(num)


      END;
      la expresion booleana es num>0.
      si la expresion booleana es verdadera , esto es que el valor de num sea positivop antes de la intruccion while, entonces se realizaran las intrucciones entre el bgin y el end (bloque del ciclo).
      alterminar de ejecutarse estas instrucciones , se regresa el flujo de las instrucciones al while y se vuelve a evaluar la codicion. Esto se realiza de forma repetitiva hasta que la expresion booleana se a falsa

      Eliminar
  3. Respuestas
    1. Se puede tener el caso de que una estructura ciclica sea infinita, si se da , entonces podemos decir que el programador pierde el control, esto es que la expresion booleana de una while nunca sera falsa por ejemplo
      WHILE num> 0 DO


      BEGIN


      contador:=contador+1


      END



      en ejemplo, no se modifica ekl valor de la variable num que controla la condicion o expresion booleana. por lo tanto nunca sera falsa esta condicion

      Eliminar
  4. Que función lleva la palabra reservada DO’ para ir a fuerzas después de WHILE
    por que no puede llevar otra palabra reservada?

    ResponderEliminar
    Respuestas
    1. creo q es para q no se vaya a infinito

      Eliminar
    2. NO nopuede llevar otra palabra porque con estas palabras se diefinio el lenguaje pasacal.

      Eliminar
  5. o un ejemplo de while aparte de eso cual seria?? porqe no me qeda muy claro aparte de que entonces se acabaria el programa hasta que deje de existir numeros?

    ResponderEliminar
    Respuestas
    1. se acabaria el programa hasta que la expresion booleana des´ppues del while sea falsa

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

    ResponderEliminar
  7. Este comentario ha sido eliminado por el autor.

    ResponderEliminar
  8. que control se utiliza en scratch para while?
    y si en pascal while lleva al final ;?
    ???????????????? duda miiiiillocho miiil

    ResponderEliminar
    Respuestas
    1. en scracht se usa por siempre si, y si al finalizar el end; lleva ;

      Eliminar
  9. Contador:=0; (*Inicializar el contador*)

    i:=0; (*Inicializara la variable de control del ciclo*)

    WHILE i<20 DO (*Continuar hasta que i>20 sea verdadera*)

    BEGIN

    read(num); (*capturar el siguiente dato de estrada*)

    IF num>0

    THEN contador:=contador+1;

    i:=i+1; (*Incrementar la variable de control de ciclo*)

    END;

    Writeln (‘El número de enteros positivos es’, contador:1)


    aqui, ¿como i hace que se sepa cuantas veces se ha ejecutado el ciclo?

    ResponderEliminar
    Respuestas
    1. la variable i aparece en el programa entres momentos.
      1.- antes de la estructura ciclica, aqui se inicializa el valor de la variable a cero.
      2.-dentro de la condicion o expresion booleana , aqui el valor de i se compara con 20, como i al inicio vale cero entonces la primera vez que se ejecuta iz20 seria 0z<20, por lo tanto es vervadero y se ejecuta el cuerpo del ciclo.
      3.-en el cuerpo del cilo se incerementa el valor de la variable i en uno. i:=i+1; de tal fiorma que cada vez que se ejecuta el cuerpo del ciclo se modifica el valor de i en uno, sis se tendran en diferentes momento los valoresde 1,2,3,4,5..hasta 20 . cuando termina el ciclo.

      Eliminar
  10. Entonces es como en scracht (repetir hasta que) pero no de manera infinita, ademas tiene que tener una sentencia DO??. :D

    ResponderEliminar
  11. entonces cuando seria necesario utilizar esa palbra reservada?

    ResponderEliminar
    Respuestas
    1. cuando usas una sentencia del lenguaje pascal, usas palabras reservadas como write, read, begin,end, y ahora while

      Eliminar
  12. Las sentencias if, then entrar sólo cuando se necesita verificar el número de veces que se ha ejecutado el ciclo? & porqué se quiere verificar que WHILE i<20 DO sea verdadera? si al principio se buscaba fuera falsa?

    ResponderEliminar
    Respuestas
    1. con el if num>0 sirve para identificar cuando el valor de la variable num es positivo, si es elcaso se incrementara una variable contadora de numeros positivos que en este caso es contador:=contador +1,
      se quiere que while se averdadera al inicio porque por lo menos una vez se tiene que ejecutar el bloque del cilo, dentro deeste bloque se modifica la variable de control del ciclo, con lo cual la condicion se cuelce falsa y se rompe el cilo para continuar con las instruccions.

      Eliminar
  13. Cual es la expresión booleana!!!?! D:

    ResponderEliminar
    Respuestas
    1. WHILE num>0 DO


      BEGIN


      contador:=contador+1;


      read(num)


      END;

      en el ejemplo la expresion booleana es num>0

      Eliminar
  14. ponga un programa donde lo veamos claro!! profe

    ResponderEliminar