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

Hvorfor funksjoner?

Funksjoner er byggesteiner i god programmering. De lar oss:

Gjenbruke kode
I stedet for å skrive samme kode flere ganger, definerer vi en funksjon og kaller den når vi trenger den.

Organisere kode
Store programmer deles opp i mindre, håndterbare deler. Hver funksjon har én oppgave.

Abstrahere kompleksitet
Vi kan bruke funksjoner uten å vite nøyaktig hvordan de fungerer internt.

Forenkle testing og feilsøking
Hver funksjon kan testes separat.

Eksempel uten funksjoner:

# 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 funksjoner

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

Funksjoner uten returverdi:

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

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

Funksjoner med flere returverdier:

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

Parametre og argumenter

Posisjonsargumenter:
Argumenter matches med parametre basert på rekkefølge.

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

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

Navngitte argumenter (keyword arguments):
Argumenter spesifiseres med parameternavn.

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

Standardverdier:
Parametre kan ha standardverdier som brukes hvis ikke annet oppgis.

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 antall argumenter:

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

Biblioteker og moduler

Hva er et bibliotek/modul?
En samling forhåndsskrevne funksjoner og klasser som kan importeres og brukes i ditt program.

Importere hele modulen:

import math

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

Importere spesifikke funksjoner:

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)

Vanlige Python-biblioteker:
- math: Matematiske funksjoner
- random: Tilfeldig tall generering
- time: Tids- og forsinkelse funksjoner
- os: Operativsystem-interaksjon
- json: JSON data håndtering
- requests: HTTP-forespørsler
- numpy: Numeriske beregninger
- serial: Seriell kommunikasjon (pySerial)

Arduino biblioteker:
Installeres 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 en Python-funksjon som beregner arealet av en sirkel gitt radius.

📝Oppgave

Skriv en funksjon som tar en temperaturliste og returnerer både minimum, maksimum og gjennomsnitt.

📝Oppgave

Hva er forskjellen mellom "import math" og "from math import sqrt"?

📝Oppgave

Skriv en funksjon med standardverdier som beregner motstanden i en LED-krets: R = (Vforsyning - Vled) / Iled. La Vled ha standardverdi 2V og Iled ha standardverdi 20mA.

📝Oppgave

Forklar hva en "docstring" er og hvorfor den er nyttig.

📝Oppgave

Design et sett med funksjoner for å styre en robot med to motorer. Lag funksjoner for: framover(hastighet, tid), bakover(hastighet, tid), svingvenstre(grader), svinghoyre(grader), og stopp().

📝Oppgave

Lag en modul (bibliotek) for å arbeide med Ohms lov. Inkluder funksjoner for å beregne spenning, strøm 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.