3  Estructuras de control

3.1 Condicionales

if condición 1
   bloque código 1
elseif condición 2
   bloque código 2

else
   bloque código n
end

La indentación de los bloques de código no es necesaria, pero es una buena práctica.

3.1.1 Ejemplo de condicional

julia> x = -1
-1

julia> if x > 0
         signo = "positivo"
       elseif x < 0
         signo = "negativo"
       else
         signo = "nulo"
       end
"negativo"

3.1.2 Operador condicional

Una forma abreviada de la estructura condicional es el operador condicional.

condición ? bloque true : bloque false

Este operador ejecuta el primer bloque de código si la condición es true y el segundo en caso contrario.

julia> x > 0 ? signo = "positivo" : signo = "negativo"
"negativo"

3.2 Bucles

3.3 Bucles iterativos

for iterador in secuencia
   bloque código
end

Ejecuta el bloque de código tantas veces como elementos tenga la secuencia. En cada iteración el iterador toma como valor el siguiente elemento de la secuencia.

julia> c = "Julia"
"Julia"

julia> for i in c
         println(i)
       end
J
u
l
i
a

3.3.1 Bucles iterativos con rangos

En muchas ocasiones la secuencia que se recorre en un bucle iterativo se genera mediante un rango, que es una secuencia de números igualmente espaciados. Existen distintas funciones para generar rangos:

  • i:j: Genera la secuenciad de números desde i hasta j.
  • i:j:k: Genera la secuencia de números desde i hasta k dando saltos de j.
  • StepRange(i, j, k): Genera la secuencia de números desde i hasta k dando saltos de j.
  • range(i, j, n): Genera una secuencia de n números desde i hasta j.

3.3.2 Ejemplo de bucles iterativos con rangos

julia> for i in 1:2:10
         println(i)
       end
1
3
5
7
9

julia> for i = range(0, 10, 5)
         println(i)
       end
0.0
2.5
5.0
7.5
10.0

3.3.3 Bucles iterativos anidados

En muchas ocasiones es habitual incluir un bucle iterativo en el bloque de código de otro bucle iterativo, lo que se conoce como bucles anidados.

Julia permite simplificar estas estructuras indicando los iteradores en la cabecera de un único bucle.

julia> for i in "abc", j = 1:2
         println(i,j)
       end
a1
a2
b1
b2
c1
c2

3.4 Bucles condicionales

while condición
   bloque código
end

Repite la ejecución del bloque de código mientras que la condición sea cierta.

julia> x = 3
3

julia> while x >= 0
          println(x)
          x -= 1
       end
3
2
1
0

3.4.1 Interrupción de bucles

La instrucción break provoca inmediatamente la finalización de un bucle tanto iterativo como condicional.

julia> x=3
3

julia> while true
          if x < 0 
             break
          end
          println(x)
          x -= 1
       end
3
2
1
0

3.4.2 Salto de bucles

La instrucción continue provoca la finalización del bloque de código de un bucle y pasa inmediatamente a la siguiente iteración.

julia> for i in 1:10
          if i % 2 == 0
             continue
          end
          println(i)
       end
1
3
5
7
9