Funciones y operadores aritméticos
Sumar dos números y devolver el resultado:
func suma(_ num1:Int, _ num2:Int) -> Int { return num1 + num2 } let num1 = 5 let num2 = 8 print("\(num1) + \(num2) = \(suma(num1, num2))")
Calcular el número de segundos que suman en total un número determinado de años:
func segundosAnyo(_ anyos:Int) -> Int { let dias = 365 let horas = 24 let segundos = 3600 return dias * horas * segundos * anyos } let anyos = 3 print("La cantidad de segundos en \(anyos) años es \(segundosAnyo(anyos))")
Calcular la cantidad total de píxeles que tiene una pantalla dada su altura y anchura en píxeles:
func pixeles(alto:Int, ancho:Int) -> Int { return(alto * ancho) } let alto = 720 let ancho = 480 print("La cantidad de píxeles de una pantalla de \(alto)x\(ancho) es \(pixeles(alto:720, ancho:480))")
Intercambiar el valor de dos variables:
func intercambiar(_ a:inout Int, _ b:inout Int) { let aux = a a = b b = aux } var num1 = 5 var num2 = 10 intercambiar(&num1, &num2) print("El primer número es: \(num1) y el segundo es: \(num2)")
Dado un número, imprimir el último dígito:
func ultimo(_ num:Int) -> Int { return num % 10 } let num = 2479 print("La última cifra de \(num) es \(ultimo(num))")
Dada la edad de un perro, calcular la edad equivalente en humanos, teniendo en cuenta que un año para una persona equivale a 7 años para un perro:
func edadHumano(_ edadPerro:Int) -> Int { return edadPerro * 7 } let edadPerro = 7 print("\(edadPerro) años de un perro equivalen a \(edadHumano(edadPerro)) años de un humano")
Funciones y control de flujo
Dado un número, comprobar si es par o no:
func esPar(_ num:Int) -> Bool { return num % 2 == 0 } let num = 24 // Con if if esPar(num) { print("El numero \(num) es par") } else { print("El numero \(num) es impar") } // Con el operador ? print("El numero \(num) es " + (esPar(num) ? "par" : "impar"))
Dados dos números, comprobar si el primero es divisible entre el segundo:
func esDivisible(_ num1:Int, _ num2:Int) -> Bool { return num2 != 0 && num1 % num2 == 0 } let num1 = 3 let num2 = 1 // Con if if esDivisible(num1, num2) { print("El número \(num1) es divisible entre \(num2)") } else { print("El número \(num1) no es divisible entre \(num2)") } // Con el operador ? print("El número \(num1) \(esDivisible(num1, num2) ? "" : "no") es divisible entre \(num2)")
Funciones y tuplas
Dada una cantidad determinada de chicos y chicas, calcular el porcentaje de cada uno respecto al total:
func calcularPorcentajes(hombres:Int, mujeres:Int) -> (hombres:Int, mujeres:Int) { let total = hombres + mujeres let porcentajeHombres = (hombres * 100) / total let porcentajeMujeres = (mujeres * 100) / total return (porcentajeHombres, porcentajeMujeres) } let hombres = 12 let mujeres = 15 let porcentaje = calcularPorcentajes(hombres:12, mujeres:15) print("De \(hombres + mujeres) personas, \(mujeres) son mujeres y \(hombres) son hombres, es decir, \(porcentaje.hombres)% de hombres y \(porcentaje.mujeres)% de mujeres")
Disponemos de dos tuplas de tipo (Int,Int)
que representan dos fracciones. El primer valor en cada tupla representa el numerador y el segundo valor representa el denominador. Utilizando una función, crear una nueva tupla también de tipo (Int,Int)
que contenga el resultado de sumar las dos fracciones:
func suma(_ fraccion1:(Int, Int), _ fraccion2:(Int, Int)) -> (Int, Int) { let numerador = fraccion1.0 * fraccion2.1 + fraccion2.0 * fraccion1.1 let denominador = fraccion1.1 * fraccion2.1 return (numerador, denominador) } let fraccion1 = (1, 2) let fraccion2 = (2, 3) print("La suma de \(fraccion1) y \(fraccion2) es \(suma(fraccion1, fraccion2)))
Escribir el código necesario para jugar a piedra, papel, tijeras, cumpliendo las siguientes especificaciones:
- Se debe definir una enumeración con tres posibles casos:
.piedra
,.papel
,.tijeras
. - Se debe definir una segunda enumeración con tres posibles casos:
.gana
,.empata
,.pierde
. - Escribir una función que reciba la elección de cada jugador y devuelva el resultado correspondiente al primer jugador.
enum Mano { case piedra, papel, tijeras } enum Resultado { case gana, empata, pierde } func jugar(jugador1:Mano, jugador2:Mano) -> Resultado { if jugador1 == jugador2 { return .empata } if jugador1 == .piedra && jugador2 == .tijeras || jugador1 == .papel && jugador2 == .piedra || jugador1 == .tijeras && jugador2 == .papel { return .gana } return .pierde } print(jugar(jugador1:.papel, jugador2:.tijeras))
Parámetros variádicos
Calcular la suma de un número indeterminado de fracciones:
func suma(_ fracciones:(Int, Int)...) -> (Int, Int) { var resultado = (0, 1) for fraccion in fracciones { resultado.1 *= fraccion.1 } for fraccion in fracciones { resultado.0 += (resultado.1 / fraccion.1) * fraccion.0 } return resultado } print(suma((1,2), (3,4), (5,2), (4,3)))