Diferencia entre revisiones de «PrInf14: Interrumpir bucles while»

De MateWiki
Saltar a: navegación, buscar
(Contenido de la práctica)
(Contenido de la práctica)
Línea 32: Línea 32:
 
Se pueden poner varias condiciones diferentes en el bucle ''while''. Nosotros, que somos optimistas, repetiremos el bucle hasta que gane: {{#tag:source|while nCaras < 3
 
Se pueden poner varias condiciones diferentes en el bucle ''while''. Nosotros, que somos optimistas, repetiremos el bucle hasta que gane: {{#tag:source|while nCaras < 3
 
   % Cuerpo del bucle
 
   % Cuerpo del bucle
 +
end|lang="matlab"}}
 +
Ahora tenemos que realizar la tirada de la moneda dentro del bucle. El bucle quedaría entonces como sigue:{{#tag:source|while nCaras < 3
 +
  if rand() < 0.5
 +
    % Sale cara
 +
    nCaras = nCaras + 1;
 +
  else
 +
    % Sale cruz
 +
    nCruces = nCruces + 1;
 +
  end
 +
 +
  % Salga cara o cruz, hemos hecho una tirada
 +
  tiradas = tiradas + 1;
 
end|lang="matlab"}}
 
end|lang="matlab"}}
  

Revisión del 17:40 2 ago 2013

Práctica de Informática
Cómo interrumpir bucles while
Práctica anterior Siguiente práctica
Este artículo es un guión de prácticas de Informática


Warning.png Este artículo está en versión beta. El autor de este artículo no lo ha terminado todavía, por favor no lo edites hasta que elimine este mensaje.

En un bucle while, no sabemos a priori cuántas veces se va ejecutar el bucle. Pero sí podemos saber la condición que tiene que cumplirse para que se siga ejecutando el bucle. Si esta condición es muy compleja, puede ser recomendable simplificarla y añadir algún break o continue al cuerpo del bucle. De nuevo, el uso de break y continue debería ser minoritario, ya que muchas veces hacen el código más difícil de entender y modificar, y más propenso a contener fallos. En esta práctica vamos a ver una condición compleja, y cómo añadiendo un break hacemos el programa más sencillo.

1 Requisitos previos

Es importante haber realizado las siguientes prácticas antes de realizar esta práctica:

Para la segunda parte de la práctica, también puede ser necesario repasar la práctica sobre expresiones lógicas:

2 Vídeos posteriores

Tras realizar esta práctica, el siguiente vídeo te ayudará a afianzar conocimientos:

3 Contenido de la práctica

En esta práctica vamos a realizar una simulación de un juego con una moneda. El juego consiste en tirar una moneda varias veces. Si el jugador saca tres caras, gana un premio en euros igual al número de tiradas que se hayan realizado. Si saca tres cruces, pierde la cantidad en euros igual al número de tiradas realizado. Nuestro programa tiene que tirar la moneda las veces que sean necesarias para sacar tres caras o tres cruces, y luego mostrar el número de tiradas que han sido necesarias.


Para simular el lanzamiento de una moneda usaremos la función rand, que devuelve un número aleatorio entre 0 y 1. Si el número es menor que 0.5, entenderemos que ha salido cara, y si no lo es, que ha salido cruz.


El primer paso consiste en crear tres variables para llevar la cuenta del número de tiradas, caras y cruces:

tiradas = 0;
nCaras = 0;
nCruces = 0;

Una vez creadas estas variables, tenemos que repetir la tirada tantas veces como sea necesario. Como no podemos saber el número de tiradas que hará falta, tenemos que usar un bucle while para repetir los comandos.

Lapiz.png Tarea: ¿Cuál es la condición que tiene que cumplir el bucle while para seguir realizando tiradas?


Se pueden poner varias condiciones diferentes en el bucle while. Nosotros, que somos optimistas, repetiremos el bucle hasta que gane:
while nCaras < 3
  % Cuerpo del bucle
end
Ahora tenemos que realizar la tirada de la moneda dentro del bucle. El bucle quedaría entonces como sigue:
while nCaras < 3
  if rand() < 0.5
    % Sale cara
    nCaras = nCaras + 1;
  else
    % Sale cruz
    nCruces = nCruces + 1;
  end

  % Salga cara o cruz, hemos hecho una tirada
  tiradas = tiradas + 1;
end

4 Ejercicio post-práctica