Ciclo for en Swift para buscar datos

Resumen

El ciclo for en Swift te permite ejecutar un bloque de código por cada elemento de una secuencia, ya sea un rango numérico, una lista de nombres o incluso los caracteres de un string. Es la herramienta ideal cuando sabes que necesitas recorrer un conjunto de datos completo sin escribir condiciones manuales como en while.

¿Cuál es la estructura del ciclo for en Swift?

La sintaxis es directa y se lee casi como una frase en inglés. Empiezas con la palabra for, declaras una variable temporal, usas in y a continuación pones la secuencia a recorrer. Dentro de las llaves va el código que se ejecuta en cada iteración.

swift for numero in 1...10 { print("El número es (numero)") }

Esos tres puntos ... definen un rango cerrado entre dos números. La consola imprimirá del 1 al 10, exactamente como lo haría un while, pero con menos código. [01:00]

¿Cuándo uso for en lugar de while? Usa for cuando ya conoces el conjunto o rango que vas a recorrer. Reserva while para cuando la repetición depende de una condición que cambia dinámicamente.

¿Cómo recorrer una lista de nombres con for?

El mismo patrón funciona con arreglos. Si tienes una lista de nombres y quieres procesarlos uno a uno, basta con apuntar el for a la lista.

swift for nombre in nombres { print("El nombre es (nombre)") }

La consola te devolverá cada nombre del arreglo, por ejemplo: Juan, Pedro y María. Este patrón sirve para cualquier colección que quieras recorrer, incluyendo sets y otros conjuntos de datos. [01:45]

¿Cómo buscar un nombre dentro de una lista?

Un caso muy común es verificar si un valor existe dentro de una colección. Para eso defines una variable nombreABuscar y agregas una validación dentro del ciclo.

swift let nombreABuscar = "Pedro" for nombre in nombres { if nombre == nombreABuscar { print("He encontrado a (nombre)") } }

Si el nombre coincide, imprime el mensaje. Si no existe en la lista, la consola simplemente queda vacía porque ninguna iteración cumple la condición. [02:30]

¿Cómo mejorar el algoritmo de búsqueda con una variable resultado?

Imprimir en cada iteración ensucia la consola. Lo más limpio es declarar una variable resultado antes del ciclo, asignarle el mensaje cuando encuentres coincidencia y, al final, decidir qué imprimir.

swift var resultado = "" for nombre in nombres { if nombre.lowercased() == nombreABuscar.lowercased() { resultado = "He encontrado a (nombre)" } }

if resultado.isEmpty { print("No he encontrado a nadie llamado (nombreABuscar)") } else { print(resultado) }

Aquí entran dos conceptos potentes. El primero es isEmpty, una propiedad que te dice si un string está vacío. Si el resultado sigue vacío después de recorrer toda la lista, significa que no hubo coincidencia. [04:30]

El segundo es lowercased(), una función que convierte cualquier string en minúsculas. Aplicarla a ambos lados de la comparación garantiza que la búsqueda no falle solo porque el usuario escribió "pedro" con minúscula y tu lista tiene "Pedro" con mayúscula. Esto mejora directamente la experiencia de usuario. [05:30]

¿Qué hace lowercased() en Swift? Convierte todos los caracteres de un string a minúsculas. Es ideal para comparaciones donde no importa si el texto está en mayúscula o minúscula.

¿Se puede recorrer un string letra por letra con for?

Sí, y es una de las capacidades más útiles del ciclo. Un string en Swift se comporta como una colección de caracteres, así que puedes iterar sobre cada letra.

swift let texto = "Hola, mi nombre es Juan" for letra in texto { print(letra) }

La consola imprimirá carácter por carácter. Esto te abre la puerta a tareas como buscar un símbolo específico, contar ocurrencias o validar el contenido de un campo de texto. [06:30]

¿Para qué sirve recorrer un string carácter por carácter? Sirve para contar letras, detectar símbolos, validar formatos o construir algoritmos de procesamiento de texto como contadores de vocales o filtros.

Reto: cuenta las vocales de una cadena

El reto consiste en escribir una función que reciba un string como parámetro y devuelva cuántas vocales contiene. Te dejo dos pistas que vienen directo del enunciado:

  • Apóyate en una variable tipo string que liste todas las vocales en español, incluyendo tildes y mayúsculas.
  • Revisa cómo funciona el método contains en los strings, porque te permite verificar si un carácter pertenece al conjunto de vocales.

La lógica que necesitas combinar ya la viste: un ciclo for que recorra letra por letra, una condición que evalúe si esa letra está dentro de tu string de vocales, y un contador que se incremente cuando haya coincidencia.

Cuéntame en los comentarios cómo resolviste el reto, qué variaciones probaste y si encontraste alguna forma más elegante de manejar las tildes.