Tilbake
20

20 Avansert programmering - Funksjoner og biblioteker

Strukturert programmering med funksjoner, parametre, returverdier og bruk av biblioteker.

60 min
7 oppgaver
FunksjonParameterArgumentReturverdiModul
Du leser den tradisjonelle versjonen
Din fremgang i kapitlet
0 / 7 oppgaver

Kvifor funksjonar?

Funksjonar er byggjesteinar i god programmering. Dei lèt oss:

Gjenbruke kode
I staden for å skrive same kode fleire gonger, definerer vi ein funksjon og kallar han når vi treng han.

Organisere kode
Store program blir delte opp i mindre, handterbare delar. Kvar funksjon har éi oppgåve.

Abstrahere kompleksitet
Vi kan bruke funksjonar utan å vite nøyaktig korleis dei fungerer internt.

Forenkle testing og feilsøking
Kvar funksjon kan testast separat.

Eksempel utan funksjonar:

# Beregn areal av tre rektangler
areal1 = 5 * 3
areal2 = 7 * 4
areal3 = 10 * 2

Eksempel med funksjon:

def beregn_areal(lengde, bredde):
    return lengde * bredde

areal1 = beregn_areal(5, 3)
areal2 = beregn_areal(7, 4)
areal3 = beregn_areal(10, 2)

Definere og kalle funksjonar

Python syntaks:

def funksjonsnavn(parameter1, parameter2):
    """Dokumentasjonsstreng (docstring)"""
    # Kode som utfører oppgaven
    return resultat

Eksempel:

def celsius_til_fahrenheit(celsius):
    """Konverterer temperatur fra Celsius til Fahrenheit."""
    fahrenheit = (celsius * 9/5) + 32
    return fahrenheit

# Kalle funksjonen
temp_f = celsius_til_fahrenheit(20)
print(f"20°C er {temp_f}°F")  # Output: 20°C er 68.0°F

Funksjonar utan returverdi:

def si_hei(navn):
    print(f"Hei, {navn}!")
    # Ingen return - returnerer None implisitt

si_hei("Ola")  # Output: Hei, Ola!

Funksjonar med fleire returverdiar:

def del_med_rest(a, b):
    kvotient = a // b
    rest = a % b
    return kvotient, rest

k, r = del_med_rest(17, 5)
print(f"17 / 5 = {k} rest {r}")  # Output: 17 / 5 = 3 rest 2

Parametrar og argument

Posisjonsargument:
Argument blir matcha med parametrar basert på rekkjefølgje.

def sett_fart(motor, hastighet):
    print(f"Motor {motor} settes til {hastighet}%")

sett_fart(1, 75)  # Motor 1 settes til 75%

Namngjevne argument (keyword arguments):
Argument blir spesifiserte med parameternamn.

sett_fart(hastighet=50, motor=2)  # Motor 2 settes til 50%

Standardverdiar:
Parametrar kan ha standardverdiar som blir brukte viss ikkje anna blir oppgjeve.

def blink_led(antall=3, forsinkelse=500):
    for i in range(antall):
        led_on()
        delay(forsinkelse)
        led_off()
        delay(forsinkelse)

blink_led()           # Bruker standardverdier: 3 blink, 500ms
blink_led(5)          # 5 blink, 500ms
blink_led(2, 100)     # 2 blink, 100ms

Variabelt tal på argument:

def summer(*tall):
    """Summerer vilkårlig antall tall."""
    total = 0
    for t in tall:
        total += t
    return total

print(summer(1, 2, 3))        # 6
print(summer(10, 20, 30, 40)) # 100

Bibliotek og modular

Kva er eit bibliotek/modul?
Ei samling førehandsskrivne funksjonar og klassar som kan importerast og brukast i programmet ditt.

Importere heile modulen:

import math

print(math.pi)           # 3.141592653589793
print(math.sqrt(16))     # 4.0
print(math.sin(math.pi/2)) # 1.0

Importere spesifikke funksjonar:

from math import sqrt, pi

print(pi)        # 3.141592653589793
print(sqrt(25))  # 5.0

Importere med alias:

import numpy as np
import matplotlib.pyplot as plt

data = np.array([1, 2, 3, 4, 5])
plt.plot(data)

Vanlege Python-bibliotek:
- math: Matematiske funksjonar
- random: Tilfeldig talgenerering
- time: Tids- og forseinkingsfunksjonar
- os: Operativsystem-interaksjon
- json: JSON datahandtering
- requests: HTTP-førespurnader
- numpy: Numeriske utrekningar
- serial: Seriell kommunikasjon (pySerial)

Arduino bibliotek:
Blir installerte via Library Manager i Arduino IDE.

#include <Servo.h>
#include <Wire.h>
#include <LiquidCrystal.h>

Servo myServo;
myServo.attach(9);
myServo.write(90);
📝Oppgave

Skriv ein Python-funksjon som reknar ut arealet av ein sirkel gjeve radius.

📝Oppgave

Skriv ein funksjon som tek ei temperaturliste og returnerer både minimum, maksimum og gjennomsnitt.

📝Oppgave

Kva er skilnaden mellom "import math" og "from math import sqrt"?

📝Oppgave

Skriv ein funksjon med standardverdiar som reknar ut motstanden i ein LED-krets: R = (Vforsyning - Vled) / Iled. Lat Vled ha standardverdi 2V og Iled ha standardverdi 20mA.

📝Oppgave

Forklar kva ein "docstring" er og kvifor han er nyttig.

📝Oppgave

Design eit sett med funksjonar for å styre ein robot med to motorar. Lag funksjonar for: framover(hastighet, tid), bakover(hastighet, tid), svingvenstre(grader), svinghoyre(grader), og stopp().

📝Oppgave

Lag ein modul (bibliotek) for å arbeide med Ohms lov. Inkluder funksjonar for å rekne ut spenning, straum og motstand, samt effekt.

Oppgaver

Dette kapitlet er skrevet av Anthropics toppmodeller (Claude Opus og Claude Fable) og er foreløpig ikke manuelt gjennomgått — kvalitetskontrollen gjøres av uavhengige KI-agenter, og innmeldte feil rettes fortløpende. Funnet en feil? Meld fra, så retter vi den. Les mer om hvordan innholdet lages.