Programación funcional y reactiva - Computación
Func. matemáticas hacia la programación funcional
Funciones matemáticas
Algo para recordar
Funciones matemáticas
Algo para recordar
Funciones matemáticas a código. Expresiones
Funciones matemáticas a código.
Funciones matemáticas a código.
Definir función que tome un entero n y calcule el factorial de n
Funciones matemáticas a código.
Definir función que tome un entero n y calcule el factorial de n
Otros casos
Otra forma de definir funciones
Un método puede tener varias listas de parámetros.
def add(x: Int, y: Int): Int = x + y
println(add(1, 2)) // 3
Otra forma de definir funciones
Los métodos también pueden tener expresiones de varias líneas.
def dividir(a: Int, b: Int): Int = {
val dividendo = a
val divisor = b
dividendo / divisor
}
dividir(2, 3)
La ultima expresión en el cuerpo del método es el valor de retorno del mismo. (Scala tiene una palabra reservada return
, pero se usa raramente y no se aconseja usarla)
Otra forma de definir funciones
Los métodos también pueden tener expresiones de varias líneas.
def isAdult(age: Int): Boolean = {
if (age >= 18) {
true // La persona es mayor de edad
} else {
false // La persona es menor de edad
}
}
Otra forma de definir funciones
Las funciones se pueden simplificar en una expresión
def isAdult(age: Int): Boolean = if (age >= 18) true else false
Otra forma de definir funciones
Se puede realizar operaciones con cadenas
def countWithoutOpenVowels(word : String) : Int = {
word.toLowerCase.replaceAll("a", "").replaceAll("e", "").replaceAll("o", "").length
}
Otra casos de funciones matemáticas
Traducción matemática en código
Otra casos de funciones matemáticas
Traducción matemática en código
def g(n: Int) = (1 to n).map(k => k*k).sum
Funciones puras
Funciones puras
Antitesis
public class Counter {
private int counter = 0;
public int incrementCounter() {
return ++counter;
}
public int multiplyCounter(int num) {
counter *= num;
return counter;
}
public int getCounter() {
return counter;
}
}
Funciones puras
Antitesis
Funciones puras
Principales características
Funciones puras
Implementación en Scala
object Counter {
// Función pura que incrementa un contador
def incrementCounter(counter: Int): Int = {
counter + 1
}
// Función pura que multiplica el contador
def multiplyCounter(counter: Int, num: Int): Int = {
counter * num
}
// Función pura que devuelve el valor del contador (en este caso innecesario porque el valor del contador
// no necesita una función, simplemente se usa directamente)
def getCounter(counter: Int): Int = {
counter
}
}
// Uso de las funciones
val currentCounter = 5
val incremented = Counter.incrementCounter(currentCounter)
val multiplied = Counter.multiplyCounter(currentCounter, 2)
println(s"Incremented: $incremented") // Imprimirá 6
println(s"Multiplied: $multiplied") // Imprimirá 10
Funciones vs Métodos
Trabajo en grupo
Funciones matemáticas vs Métodos (Leng. Prog.)
Diferencias conceptuales
Trabajo de consulta
Trabajo de consulta
¿Qué son las funciones anónimas?