PrInf11: Bucles while

De MateWiki
Revisión del 12:53 23 jul 2013 de Herraiz (Discusión | contribuciones) (Contenido de la práctica)

Saltar a: navegación, buscar
Práctica de Informática
Bucles con while
Práctica anterior Siguiente práctica
Este artículo es un guión de prácticas de Informática


Existe otro tipo de bucles que nos permiten repetir un conjunto de comandos si no sabemos cuántas veces se tiene que repetir. Lo que necesitamos saber es qué condición tiene que cumplirse para que se repitan los comandos. Son los denominados bucles while. En esta práctica vamos a introducir los bucles while con un ejemplo de lanzamiento de dardos. Supongamos que la probabilidad de acertar en el centro de una diana es el [math]5\%[/math], ¿cuántas veces tendremos que tirar el dardo para acertar en el centro? En principio, es imposible saber el número de tiradas necesario, unas veces será mayor, otras menor. Pero sí sabemos la condición que tiene que cumplirse: mientras no acertemos en el centro de la diana, seguiremos tirando el dardo.

1 Requisitos previos

Es importante entender el concepto de bucle y haber realizado la práctica anterior.

También es importante haber visto el siguiente vídeo antes de realizar esta práctica:

2 Comandos que se aprenderán en esta práctica

while

3 Contenido de la práctica

Lanzar un dardo y acertar en el centro de la diana es una tarea difícil. Supongamos que la posibilidad de acertar en el centro de la diana es del [math]5\%[/math]. ¿Cuántas veces tendremos que lanzar el dardo para acertar en el centro? Para responder a esta pregunta necesitaremos repetir la tirada del dardo tantas veces como sea necesario. Es imposible saber cuántas veces hasta que no hayamos acertado en el centro de la diana. Por tanto, es la situación ideal para resolver usando un bucle while.

La primera cuestión a resolver es cómo programar la tirada de un dardo. Dado que tirar un dardo es un fenómeno aleatorio, podemos intentar usar el comando rand para simular un dardo. El comando rand devuelve números uniformemente distribuidos entre 0 y 1. Por tanto, aproximadamente el 5% de las veces nos devolverá un número inferior a 0.05. Por tanto, el código que detecta si el dardo ha acertado en el centro de la diana podría ser el siguiente:

if rand() < 0.05
  % El dardo ha acertado en el centro de la diana
end

El programa tendrá que hacer dos tareas principales:

  • Llevar una cuenta de cuántas tiradas se ha realizado, y actualizar esta cuenta cada vez que se realice una tirada.
  • Repetir la tirada del dardo tantas veces como sea necesario.

Para llevar la cuenta usaremos una variable de nombre tiradas, que valdrá inicialmente 0, y cuyo valor se incremente con cada tirada.

Para repetir la tirada, tendremos que usar un bucle while. Necesitaremos otra variable que nos .

Lapiz.png Tarea: ¿Cuál es la condición que tiene que cumplir el bucle while? Si no lo tienes muy claro, echa un vistazo al vídeo Prog17: Bucles while


4 Ejercicio post-práctica