5.3 Condicionales

# condicionales

Algo común que seguramente querrás hacer es tocar más que notas al azar sino también tomar decisiones al azar y, dependiendo de cómo salga, correr más código u otro código. Por ejemplo, el querer tocar al azar una batería o platillo. Esto lo podemos hacer con `if` .

## Tirar una moneda

Tiremos una moneda: si sale cara, que suene una batería, si sale cruz, que sea un platillo. Fácil. Podemos imitar el tiro de una moneda con la función `one_in` (introducida en la sección de aleatoriedad) especificando una probabilidad de 1 en 2 `one_in(2)`. Entonces podemos utilizar el resultado para decidir entre dos piezas de código, el de batería o el de platillos:

```
loop do
  if one_in(2)
    sample :drum_heavy_kick
  else
    sample :drum_cymbal_closed
  end
  
  sleep 0.5
  
end
```

Debes notar que los `if` están compuestos de tres partes:

* La pregunta a hacer
* La primera elección de código a correr (si la respuesta es 'si')
* La segunda elección de código a correr (si la respuesta es 'no')

Típico de lenguajes de programación, la noción de 'sí' está representada por el término `true` y la noción de 'no', por `false`. Así que debemos encontrar una pregunta que nos dé una respuesta `true` o`false` que es exactamente lo que hace `one_in` .

¿notas que la primera opción está envuelta entre el `if` y el `else` y que la segunda opción está envuelta entre el `else` y el `end`?. Igual que con los bloques do/end puedes poner múltiples líneas de código en cualquiera de esos lugares. Por ejemplo:

```
loop do
  if one_in(2)
    sample :drum_heavy_kick
    sleep 0.5
  else
    sample :drum_cymbal_closed
    sleep 0.25
  end
  
end
```

Esta vez estaremos pausando por un tiempo distinto dependiendo de cuál elección hagamos.


## Condicional simple "if"

Algunas veces querrás ejecutar sólo una línea de código. Esto es posible al colocar `if` y después la pregunta al final. Por ejemplo:

```
use_synth :dsaw
loop do
  play 50, amp: 0.3, release: 2
  play 53, amp: 0.3, release: 2 if one_in(2)
  play 57, amp: 0.3, release: 2 if one_in(3)
  play 60, amp: 0.3, release: 2 if one_in(4)
  sleep 1.5
end
```

Eso tocará acordes de diferentes números con una probabilidad diferente para cada nota .
