certmundo.
es‑mx

6 min de lectura

¿Cómo escribir funciones y estructuras de control en Swift?

Las funciones y las estructuras de control son el motor lógico de cualquier app en Swift: permiten ejecutar código condicional, repetir tareas y organizar la lógica en bloques reutilizables.

Qué es una función en Swift

Una función es un bloque de código con nombre que puedes ejecutar cuando lo necesites. Evita repetir el mismo código en varios lugares de tu app.

La sintaxis básica es:

func nombreDeLaFuncion(parametro: Tipo) -> TipoDeRetorno {
    // código
    return valor
}

Usa func para declarar la función. El símbolo -> indica el tipo de dato que regresa.


Funciones sin retorno

Algunas funciones solo ejecutan una acción sin devolver ningún valor. En ese caso omites -> TipoDeRetorno.

func mostrarBienvenida(nombre: String) {
    print("Hola, \(nombre). Bienvenido a Liverpool.")
}

mostrarBienvenida(nombre: "Ana")
// Imprime: Hola, Ana. Bienvenido a Liverpool.

Este patrón es útil para mostrar mensajes, registrar eventos o actualizar la interfaz.


Funciones con retorno

Cuando tu función necesita calcular y devolver un resultado, usa return.

func calcularDescuento(precio: Double, porcentaje: Double) -> Double {
    return precio - (precio * porcentaje / 100)
}

let precioFinal = calcularDescuento(precio: 850.0, porcentaje: 15.0)
print("Precio con descuento: $\(precioFinal)")
// Imprime: Precio con descuento: $722.5

Este ejemplo simula un descuento en un producto de Mercado Libre. El valor devuelto se guarda en precioFinal.


Funciones con múltiples parámetros

Puedes declarar tantos parámetros como necesites, separados por comas.

func calcularSalarioNeto(salarioBruto: Double, porcentajeIMSS: Double) -> Double {
    let descuentoIMSS = salarioBruto * porcentajeIMSS / 100
    return salarioBruto - descuentoIMSS
}

let neto = calcularSalarioNeto(salarioBruto: 18500, porcentajeIMSS: 4.0)
print("Salario neto: $\(neto)")
// Imprime: Salario neto: $17,760

Este ejemplo modela el descuento del IMSS sobre un salario. Los salarios en México van de $10,000 a $30,000 al mes según puesto y empresa.


La estructura if / else

La estructura if ejecuta código solo cuando una condición es verdadera. Si la condición es falsa, puedes usar else para definir qué pasa en ese caso.

let stockProducto = 3

if stockProducto > 0 {
    print("Producto disponible en FEMSA.")
} else {
    print("Producto agotado.")
}
// Imprime: Producto disponible en FEMSA.

Puedes encadenar condiciones con else if:

let calificacion = 75

if calificacion >= 90 {
    print("Excelente")
} else if calificacion >= 70 {
    print("Aprobado")
} else {
    print("Reprobado")
}
// Imprime: Aprobado

La estructura switch

switch evalúa un valor y ejecuta el bloque que coincide con ese valor. Es más legible que múltiples else if cuando tienes muchos casos.

let categoriaProducto = "pan"

switch categoriaProducto {
case "pan":
    print("Producto de Bimbo: pan de caja.")
case "refresco":
    print("Producto de FEMSA: Coca-Cola.")
case "ropa":
    print("Producto de Liverpool: camisa.")
default:
    print("Categoría no reconocida.")
}
// Imprime: Producto de Bimbo: pan de caja.

El caso default es obligatorio en Swift cuando los demás casos no cubren todos los valores posibles. Si lo omites, el compilador arroja un error.

switch con rangos

Swift permite usar rangos dentro de switch, lo que es muy útil para clasificar datos numéricos.

let precioArticulo = 1200

switch precioArticulo {
case 0..<500:
    print("Artículo económico")
case 500..<1500:
    print("Artículo de precio medio")
case 1500...:
    print("Artículo premium")
default:
    break
}
// Imprime: Artículo de precio medio

El ciclo for-in

El ciclo for-in recorre una colección o un rango de valores, ejecutando el bloque de código en cada iteración.

let productos = ["Gansito", "Marinela", "Nito"]

for producto in productos {
    print("Producto Bimbo: \(producto)")
}
// Imprime:
// Producto Bimbo: Gansito
// Producto Bimbo: Marinela
// Producto Bimbo: Nito

También puedes iterar sobre un rango numérico:

for numero in 1...5 {
    print("Orden #\(numero) procesada")
}
// Imprime:
// Orden #1 procesada
// Orden #2 procesada
// ... hasta Orden #5 procesada

El ciclo while

El ciclo while repite un bloque mientras una condición sea verdadera. Úsalo cuando no sabes de antemano cuántas veces se repetirá.

var intentos = 0

while intentos < 3 {
    print("Verificando pago con tarjeta... intento \(intentos + 1)")
    intentos += 1
}
// Imprime tres líneas de verificación

Este patrón simula reintentos de pago, algo común en apps de e-commerce como Mercado Libre.


Combinar funciones con estructuras de control

El poder real aparece cuando combinas funciones con if, switch y for. Así construyes lógica compleja de forma organizada.

func clasificarProducto(precio: Double) -> String {
    switch precio {
    case 0..<200:
        return "Económico"
    case 200..<1000:
        return "Precio medio"
    default:
        return "Premium"
    }
}

let precios = [150.0, 450.0, 2300.0]

for p in precios {
    let categoria = clasificarProducto(precio: p)
    print("$\(p) → \(categoria)")
}
// Imprime:
// $150 → Económico
// $450 → Precio medio
// $2,300 → Premium

Esta función puede integrarse directamente en una app de catálogo de productos para etiquetar artículos automáticamente.


Errores comunes

1. Olvidar el default en switch Swift requiere que switch cubra todos los casos posibles. Si trabajas con String o Int sin rangos exhaustivos, agrega siempre default: o el compilador marcará error.

2. Confundir = con == en condiciones Escribir if stock = 0 intenta asignar un valor, no comparar. En Swift esto genera un error de compilación. Usa siempre == para comparar: if stock == 0.

3. Ciclo infinito con while Si la condición de while nunca se vuelve falsa, tu app se congela. Asegúrate de que la variable que controla el ciclo cambie en cada iteración. Siempre incluye una línea como intentos += 1 dentro del ciclo.

4. Nombre de parámetro incorrecto al llamar la función Swift exige que uses el nombre del parámetro al llamar la función: calcularDescuento(precio: 850, porcentaje: 15). Si escribes solo calcularDescuento(850, 15), el compilador arroja error. Los nombres de parámetros son parte de la firma de la función en Swift.


Tabla de referencia rápida

Estructura Uso principal Ejemplo de aplicación
func Organizar lógica reutilizable Calcular descuentos, validar datos
if / else Decisiones binarias o múltiples Verificar stock, aprobar pedido
switch Múltiples casos conocidos Clasificar categorías de producto
for-in Recorrer listas o rangos Iterar un carrito de compras
while Repetir mientras se cumpla condición Reintentar conexión o pago

Puntos clave

  • func te permite encapsular lógica y reutilizarla sin repetir código. Declara el tipo de retorno con -> cuando la función devuelva un valor.
  • if / else if / else controla qué código se ejecuta según condiciones booleanas. Usa == para comparar, nunca =.
  • switch es más legible que cadenas largas de else if. Siempre incluye default: cuando los casos no son exhaustivos.
  • for-in recorre colecciones y rangos de forma segura y clara. Es la estructura más usada para procesar listas de datos en apps reales.
  • Combinar funciones con estructuras de control es la base de la lógica de cualquier app. Una función bien nombrada hace tu código más fácil de leer y mantener.

Puntos clave

  • `func` encapsula lógica reutilizable. Declara parámetros con su tipo y usa `->` para indicar el tipo de retorno cuando la función devuelva un valor.
  • `if / else if / else` ejecuta código según condiciones booleanas. Usa siempre `==` para comparar valores, no `=`.
  • `switch` cubre múltiples casos de forma legible y requiere `default:` cuando los valores posibles no están todos listados explícitamente.
  • `for-in` recorre arreglos y rangos; `while` repite mientras una condición sea verdadera. Evita ciclos infinitos actualizando la variable de control dentro del ciclo.
  • La combinación de funciones con estructuras de control es la base de la lógica de cualquier app iOS: organiza tu código en funciones pequeñas y usa `if`, `switch` o `for` dentro de ellas.

Comparte esta lección:

¿Cómo escribir funciones y estructuras de control en Swift? | Swift para iOS Básico: Programa tu primera app para iPhone | Certmundo