+ - 0:00:00
Notes for current slide
Notes for next slide

Introducció a funcions

Mateu Yábar Valles

1 / 16

Llicència

Pots copiar i redistribuir aquest material seguint la llicència Attribution-NonCommercial-ShareAlike 4.0 International CC BY-NC-SA 4.0, indicant-ne autors originals, l'origen (aquesta web), sense fins comercials i mantenint-ne aquesta la llicència

Autors:

2 / 16

Operacions matemàtiques

  • Si volem fer operacions matemàtiques complexes podem usar les funcions definides a Math.
    • Arrel quadrada
    • Mínim
    • ...
  • Math Kdoc
3 / 16

Math

val minValue = min(4, 9)
val maxValue = max(4, 9)
val sqrt = sqrt(32.5)
4 / 16

No fem pow, pq en Kotlin és una extension function i una funció "estàtica": 4.5.pow(5)

Math - imports

  • Cal especificar com s'ha de localitzar la funció ja que no hi és en el mateix arxiu.
    • Per especificar on és la classe math fem servir un import
import kotlin.math.*
// Es podria fer d'una en una
import kotlin.math.min
import kotlin.math.max
import kotlin.math.sqrt
  • Shortcut de l'Intellij alt+enter sobre la funció.
5 / 16

Exercicis

6 / 16

Funcions

  • Les funcions són conjunts d’instruccions. Agrupades per funcionalitat
  • Quan fem una crida a una funció, l'ordinador completarà (o executarà) totes les instruccions d'aquest conjunt abans de continuar amb la resta.
7 / 16

Funcions

Exercici robot

fer 5 vegades:
moure_peça_si_n'hi_ha()
avançar
def moure_peça_si_n'hi_ha:
si es detecta peça:
moure_peça
incrementar contador de peces
imprimir contador
8 / 16

Funció

  • Crida
  • Declaració
9 / 16

Funcions declaració

  • Per declarar una funció hem de definir:
    • Valor de retorn
    • Parametres d'entrada
    • Identificador (o nom)
    • Mateixes normes que identificadors de variables
    • Instruccions
10 / 16

Funcions

/**
* Calculates area from given dimensions
*/
fun rectangleArea(length: Double, width: Double): Double {
return length * width
}
fun main() {
val area = rectangleArea(4.5, 2.5)
val area2 = readRectangle(length=4.5, width=2.5)
}
11 / 16

Funcions

Per funcions d'una sola linia podem usar

fun rectangleArea(length: Double, width: Double) = length * width
12 / 16

Valors per defecte

fun rectangleArea(length: Double = 0, width: Double = 0) = length * width
rectangleArea(4.5, 2.1)
rectangleArea(4.5)
rectangleArea()
rectangleArea(length = 2.5)
rectangleArea(width = 2.5)
13 / 16

Funcions - avantatges

  • Reaprofitar codi
  • Estructurar el codi
    • Els mètodes no haurien de tenir més de 30 línies de codi de mitjana (sense contar línies buides i comentaris).
14 / 16

Funcions

  • Una funció només pot retornar un valor.
    • Recordeu que podem crear classes
15 / 16

Exemple retorn de més d'un valor

class Rectangle(val length: Double, val width: Double)
fun calculateArea(rectangle: Rectangle) = rectangle.length * rectangle.width
fun readRectangle(scanner: Scanner): Rectangle {
val length = scanner.nextDouble()
val width = scanner.nextDouble()
return Rectangle(length, width)
}
fun main() {
val scanner = Scanner(System.`in`)
val rectangle = readRectangle(scanner)
val area = calculateArea(rectangle)
println("L'area del rectangle és: $area")
}
16 / 16

Llicència

Pots copiar i redistribuir aquest material seguint la llicència Attribution-NonCommercial-ShareAlike 4.0 International CC BY-NC-SA 4.0, indicant-ne autors originals, l'origen (aquesta web), sense fins comercials i mantenint-ne aquesta la llicència

Autors:

2 / 16
Paused

Help

Keyboard shortcuts

, , Pg Up, k Go to previous slide
, , Pg Dn, Space, j Go to next slide
Home Go to first slide
End Go to last slide
Number + Return Go to specific slide
b / m / f Toggle blackout / mirrored / fullscreen mode
c Clone slideshow
p Toggle presenter mode
t Restart the presentation timer
?, h Toggle this help
Esc Back to slideshow