Santiago Quiñones Cuenca
Software Developer and Educator, Master in Software Engineering, Research UTPL {Loja, Ecuador} Repositories: http://github.com/lsantiago
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?
By Santiago Quiñones Cuenca
Programación funcional - funciones
Software Developer and Educator, Master in Software Engineering, Research UTPL {Loja, Ecuador} Repositories: http://github.com/lsantiago