Gå til innhold

Funksjoner

En funksjon er en navngitt blokk med kode som du kan kjøre når du trenger den. Tenk på det som en oppskrift - du skriver den én gang, og kan bruke den så mange ganger du vil.

Lage en funksjon

def hilsen(navn):
    print("Hei, " + navn + "!")
func hilsen(navn):
    print("Hei, " + navn + "!")
function hilsen(navn) {
    console.log("Hei, " + navn + "!");
}

Her:

  • Nøkkelordet (function, def, func) sier at vi lager en funksjon
  • hilsen er navnet vi gir funksjonen
  • (navn) er parameteren - data funksjonen trenger
  • Koden inni blokken er det funksjonen gjør

Kalle en funksjon

Funksjonen gjør ingenting før du kaller den:

hilsen("Ola")     # Hei, Ola!
hilsen("Kari")    # Hei, Kari!
hilsen("Per")     # Hei, Per!
hilsen("Ola")     # Hei, Ola!
hilsen("Kari")    # Hei, Kari!
hilsen("Per")     # Hei, Per!
hilsen("Ola");    // "Hei, Ola!"
hilsen("Kari");   // "Hei, Kari!"
hilsen("Per");    // "Hei, Per!"

Parametere

Funksjoner kan ta imot ingen, én eller flere parametere:

# Ingen parametere
def si_hei():
    print("Hei!")

# Én parameter
def hilsen(navn):
    print("Hei, " + navn + "!")

# Flere parametere
def addisjon(a, b):
    print(a + b)

si_hei()            # Hei!
hilsen("Ola")       # Hei, Ola!
addisjon(5, 3)      # 8
# Ingen parametere
func si_hei():
    print("Hei!")

# Én parameter
func hilsen(navn):
    print("Hei, " + navn + "!")

# Flere parametere
func addisjon(a, b):
    print(a + b)

si_hei()            # Hei!
hilsen("Ola")       # Hei, Ola!
addisjon(5, 3)      # 8
// Ingen parametere
function siHei() {
    console.log("Hei!");
}

// Én parameter
function hilsen(navn) {
    console.log("Hei, " + navn + "!");
}

// Flere parametere
function addisjon(a, b) {
    console.log(a + b);
}

siHei();           // "Hei!"
hilsen("Ola");     // "Hei, Ola!"
addisjon(5, 3);    // 8

Returverdi

Funksjoner kan gi tilbake en verdi med return:

def addisjon(a, b):
    return a + b

resultat = addisjon(5, 3)
print(resultat)         # 8

# Du kan bruke den direkte
print(addisjon(10, 20)) # 30
func addisjon(a, b):
    return a + b

var resultat = addisjon(5, 3)
print(resultat)         # 8

# Du kan bruke den direkte
print(addisjon(10, 20)) # 30
function addisjon(a, b) {
    return a + b;
}

let resultat = addisjon(5, 3);
console.log(resultat);  // 8

// Du kan bruke den direkte
console.log(addisjon(10, 20));  // 30

return avslutter funksjonen

Kode etter return kjøres aldri:

def sjekk(tall):
    if tall > 10:
        return "Stort tall"
    return "Lite tall"
func sjekk(tall):
    if tall > 10:
        return "Stort tall"
    return "Lite tall"
function sjekk(tall) {
    if (tall > 10) {
        return "Stort tall";
    }
    return "Lite tall";
}

Arrow functions (kun JavaScript)

JavaScript har en kortere måte å skrive funksjoner på. Se JavaScript-referansen for flere eksempler.

// Vanlig funksjon
function dobbel(tall) {
    return tall * 2;
}

// Arrow function
const dobbel = (tall) => {
    return tall * 2;
};

// Kort versjon (for enkle funksjoner)
const dobbel = (tall) => tall * 2;

Alle tre gjør det samme. Arrow functions er praktiske for korte funksjoner. Python har et lignende konsept som heter lambda, og GDScript har anonyme funksjoner med func(x): return x * 2.

Hvorfor bruke funksjoner?

# Uten funksjon - gjentar kode
print("==========")
print("Velkommen!")
print("==========")

# ... mye kode ...

print("==========")
print("Ha det!")
print("==========")

# Med funksjon - gjenbrukbar
def vis_melding(tekst):
    print("==========")
    print(tekst)
    print("==========")

vis_melding("Velkommen!")
vis_melding("Ha det!")
# Uten funksjon - gjentar kode
print("==========")
print("Velkommen!")
print("==========")

# ... mye kode ...

print("==========")
print("Ha det!")
print("==========")

# Med funksjon - gjenbrukbar
func vis_melding(tekst):
    print("==========")
    print(tekst)
    print("==========")

vis_melding("Velkommen!")
vis_melding("Ha det!")
// Uten funksjon - gjentar kode
console.log("==========");
console.log("Velkommen!");
console.log("==========");

// ... mye kode ...

console.log("==========");
console.log("Ha det!");
console.log("==========");

// Med funksjon - gjenbrukbar
function visMelding(tekst) {
    console.log("==========");
    console.log(tekst);
    console.log("==========");
}

visMelding("Velkommen!");
visMelding("Ha det!");

Eksempel: Enkel kalkulator

def kalkuler(a, operator, b):
    if operator == "+":
        return a + b
    elif operator == "-":
        return a - b
    elif operator == "*":
        return a * b
    elif operator == "/":
        return a / b
    else:
        return "Ukjent operator"

print(kalkuler(10, "+", 5))   # 15
print(kalkuler(10, "*", 3))   # 30
func kalkuler(a, operator, b):
    if operator == "+":
        return a + b
    elif operator == "-":
        return a - b
    elif operator == "*":
        return a * b
    elif operator == "/":
        return a / b
    else:
        return "Ukjent operator"

print(kalkuler(10, "+", 5))   # 15
print(kalkuler(10, "*", 3))   # 30
function kalkuler(a, operator, b) {
    if (operator === "+") {
        return a + b;
    } else if (operator === "-") {
        return a - b;
    } else if (operator === "*") {
        return a * b;
    } else if (operator === "/") {
        return a / b;
    } else {
        return "Ukjent operator";
    }
}

console.log(kalkuler(10, "+", 5));   // 15
console.log(kalkuler(10, "*", 3));   // 30