diegoRodicio

Está documentación está a túa disposición sin ningún custo económico. Sen embargo, para a súa elaboración dedico moito tempo e recursos, polo que agradecería unha colaboración co que consideres oportuno. Gracias.

Control de fluxo

Swift ofrece unha variedade de instrucións de control de fluxo.

  • Bucles while para realizar unha tarefa varias veces
  • Instrucións if, guard e switch para executar diferentes ramas de código en función de determinadas condicións
  • Instrucións como break para romper e continue para continuar transferindo o fluxo de execución a outro punto do código.
  • Bucle for-in que facilita o recorrido de matrices, dicionarios, intervalos, cadeas e outras secuencias.

for-in #

Usamos o bucle for-in para iterar sobre unha secuencia, como elementos dunha matriz, intervalos de números ou caracteres dunha cadea.

var nombres = ["Pepe","Amelia","Lucía","Diego"]
for nombre in nombres {
    print("\(nombre)")
}

Aínda que non os vimos, tamén podemos recorrer un dicionario. Cada elemento devólvese como unha tupla (clave, valor):

var numPatas = ["araña":8, "hormiga":6, "gato":4]
for (nombreAnimal, patas) in numPatas{
    print("El/la \(nombreAnimal) tiene \(patas) patas")
}

Podemos percorrer un Array e engadir unha condición. Para eso usamos where de xeito que podemos iterar o noso Array mentres se cumpra a condición do where.

Así, no seguinte exemplo imprimimos recorremos o array nombres e visualizamos os elementos do array, neste caso cadeas String, sempre e cando a cadea do array teña un tamaño menor que seis:

var nombres = ["Pepe","Amelia","Lucía","Diego"]
for nombre in nombres where nombre.count < 6 {
    print("\(nombre)")
}

//Imprime "Pepe", "Lucia" e "Diego", pero non "Amelia"

Rangos #

Tamén podemos usar bucles for-in con intervalos numéricos:

for i in 1...5 {
    print("For: \(i)")
}

for i in 1..<5 {
    print("For: \(i)")
}

Rango pechado #

O operador de rango pechado (a...b) define un rango que vai de a a b.

  • Inclúe os valores a e b.
  • O valor de a non debe ser maior que o de b.

É útil ao iterar sobre un rango, como no caso dun ciclo for-in:

for index in 1...5 {
    print("\(index) multiplicado por 5 es \(index * 5)")
}
// 1 multiplicado por 5 es 5
// 2 multiplicado por 5 es 10
// 3 multiplicado por 5 es 15
// 4 multiplicado por 5 es 20
// 5 multiplicado por 5 es 25

Rango semiaberto #

O operador de rango semiabierto (a..<b) define un rango que vai de a a b, pero non inclúe a b.

Os rangos semiabiertos son particularmente útiles ao traballar con arrays:

let nombres = ["Ana", "Alejandro", "Cindy", "Laura"]
let conteo = nombres.count

for i in 0..<conteo {
    print("La persona #\(i + 1) se llama \(nombres[i])")
}
// La persona #1 se llama Ana
// La persona #2 se llama Alejandro
// La persona #3 se llama Cindy
// La persona #4 se llama Laura

Rangos unilaterais #

O operador de rango pechado conta cunha forma alternativa para os rangos que continúan o máis lonxe posible nunha dirección.

  • Por exemplo, un rango que inclúe todos os elementos dun array desde o índice 2 ata o final do array.
  • Nestes casos, podes omitir o valor nun dos lados do operador.
for nombre in nombres[2...] {
    print(nombre)
}
// Cindy
// Laura

for nombre in nombres[...2] {
    print(nombre)
}
// Ana
// Alejandro
// Cindy

for nombre in nombres[..<2] {
    print(nombre)
}
// Ana
// Alejandro

while #

var x = 5

while x > 0 {
    print("While: \(x)")
    x -= 1
}

repeat-while #

x = 5

repeat {
    print("Repeat - While: \(x)")
    x -= 1
} while x > 0

Condicinais #

Swift ofrece dúas formas de engadir ramas condicionais ao código:

  • if
  • switch

if #

var temperatura = 15

if (temperatura <= 10){
    print("Hace mucho frío, sobre \(temperatura) grados")
} else if (temperatura > 30){
    print("Hace mucho calor, sobre \(temperatura) grados")

} else {
    print("Está el día templado, sobre \(temperatura) grados")
}

Para poñer múltiples condicións no if empregamos parénteses ou a ,. Así, no seguinte exemplo, os dous if son equivalentes:

var temperatura = 7

if temperatura <= 10, temperatura > 5{
    print("Hace frío, sobre \(temperatura) grados")
}

if (temperatura <= 10) && (temperatura > 5) {
    print("Hace frío, sobre \(temperatura) grados")
}

switch #

var temperatura = 15

switch temperatura {
  case -100..<10:
    print("Hace mucho frío, sobre \(temperatura) grados")
  case 10..<30:
    print("Está el día templado, sobre \(temperatura) grados")
  case 30...40:
    print("Hace mucho calor, sobre \(temperatura) grados")
  default:
    print("Temperatura de \(temperatura) grados")
}

Con tuplas. No seguinte exemplo imaxinamos un cadrado entre (-2,2) e (2,-2), tal como vemos na imaxe:

//Imaginamos un cuadrado entre (-2,2) y (2,-2)
var coordenada = (1, 1)

switch coordenada {
  case (0, 0):
    print("\(coordenada) es en el origen")
  case (_, 0):
    print("\(coordenada) es en el eje x")
  case (0, _):
    print("\(coordenada) es en el eje y")
  case (-2...2, -2...2):
    print("\(coordenada) está dentro del cuadrado")
  default:
    print("\(coordenada) está fuera del cuadrado")
}

Máis info #

Na páxina https://www.swift.org/documentation/ atoparedes outros xeitos de emprego da sentencia switch

Transferencia de fluxo #

Na páxina https://www.swift.org/documentation/ atoparedes formas de controlar o fluxo mediante as instrucións:

  • continue
  • break
  • fallthrough
  • return
  • throw

Neste módulo non vamos a ver estas sentencias.

Share Your Valuable Opinions