7.3 Programmering og modellering
Lær grunnleggende programmering og hvordan vi kan bruke digitale verktøy til å modellere naturfenomener.
Programmering og modellering
Har du nokon gong lurt på korleis appar og spel fungerer? Eller korleis forskarar kan føreseie vêret? Svaret er programmering og modellering!
Programmering er å gi ei datamaskin instruksjonar for kva ho skal gjere. Modellering er å lage ein forenkla versjon av røyndomen på datamaskina – for eksempel å simulere korleis ein ball fell eller korleis ein epidemi spreier seg.
I naturfag bruker vi programmering til å:
- Samle og analysere data
- Lage simuleringar av naturfenomen
- Teste hypotesar utan å måtte gjere dyre eller farlege eksperiment
- Visualisere komplekse prosessar
La oss utforske grunnleggjande programmeringskonsept og korleis dei blir brukte i naturfag!
Eit program (eller kode) er ein sekvens av instruksjonar skriven i eit programmeringsspråk som Python, Scratch, JavaScript eller Java.
Programmering blir brukt til å lage alt frå enkle kalkulatorar til komplekse simuleringar av klimaendringar.
Kva er programmering?
Algoritmar – oppskrifta datamaskina følgjer
Ein algoritme er ei steg-for-steg-oppskrift for å løyse eit problem. Det er som ei kokeoppskrift, men for datamaskiner!
Døme: Algoritme for å lage pannekaker
1. Finn fram ingrediensar: mjølk, egg, mjøl, salt
2. Bland ingrediensane i ei bolle
3. Varm opp steikepanna
4. Hell deig i panna
5. Steik til kaka er gyllen på begge sider
6. Gjenta steg 4-5 til all deig er brukt opp
I programmering skriv vi algoritmar som kode, slik at datamaskina kan følgje dei automatisk.
Naturfagleg døme: Algoritme for å rekne ut fart
1. Få input frå brukaren: distanse (i meter) og tid (i sekund)
2. Rekn ut fart = distanse ÷ tid
3. Skriv ut resultatet
Denne algoritmen kan lett skrivast som eit program i Python:
distanse = float(input("Skriv inn distanse i meter: "))
tid = float(input("Skriv inn tid i sekunder: "))
fart = distanse / tid
print(f"Farten er {fart} m/s")Ein algoritme er ei nøyaktig skildring av stega som skal utførast for å løyse eit problem eller utføre ei oppgåve.
Gode algoritmar er:
- Presise – kvart steg er tydeleg definert
- Komplette – inneheld alle nødvendige steg
- Effektive – løyser problemet så raskt og enkelt som mogleg
Algoritmar blir brukte overalt: i søkjemotorar, GPS-navigasjon, vêrvarsel, og til og med når du sorterer namn alfabetisk!
Lag ein algoritme (steg-for-steg-oppskrift) for å finne det største talet i ei liste med tre tal.
Variablar – lagring av informasjon
I programmering bruker vi variablar til å lagre verdiar som vi vil bruke seinare. Du kan tenkje på ein variabel som ein boks med eit namn på, der du kan leggje inn verdiar.
Døme:
# Lagre en temperatur
temperatur = 25
# Lagre et navn
navn = "Emma"
# Lagre et desimaltall
tyngde = 9.81
# Lagre en sannhetsverdi
er_solrik = TrueNaturfagleg bruk:
# Beregn tyngdekraft
masse = 10 # kg
tyngde = 9.81 # m/s²
kraft = masse * tyngde
print(f"Tyngdekraften er {kraft} N")Variabelen kraft får verdien 98.1 (fordi 10 × 9.81 = 98.1).
Viktig:
- Variabelnamn bør skildre kva dei inneheld (f.eks. temperatur, ikkje x)
- Variabelverdiar kan endrast undervegs i programmet
- Forskjellige typar data: tal (int, float), tekst (string), sanningsverdiar (boolean)
Kva er ein variabel i programmering?
Løkkjer – gjenta ei oppgåve
I programmering bruker vi løkkjer når vi vil gjenta ei handling fleire gonger.
To typar løkkjer:
1. For-løkkje (gjenta eit bestemt tal gonger):
# Skriv ut tallene fra 1 til 5
for i in range(1, 6):
print(i)Output:
1
2
3
4
52. While-løkkje (gjenta så lenge eit vilkår er sant):
# Skriv ut tall mens de er mindre enn 5
tall = 1
while tall < 5:
print(tall)
tall = tall + 1Output: Same som over (1, 2, 3, 4)
Naturfagleg døme:
# Beregn temperaturer i Fahrenheit for 0-100°C
for celsius in range(0, 101):
fahrenheit = celsius * 9/5 + 32
print(f"{celsius}°C = {fahrenheit}°F")Denne løkkja gjer om 101 temperaturar på eitt sekund – det ville teke lang tid for hand!
Skriv pseudokode (algoritme i vanleg språk, ikkje ekte programmeringskode) for ei løkkje som skriv ut alle partal frå 2 til 20.
Vilkår – ta avgjerder
I programmering bruker vi if-setningar (vilkår) for å la programmet ta avgjerder.
Grunnleggjande struktur:
if betingelse:
# Gjør dette hvis betingelsen er sann
else:
# Gjør dette hvis betingelsen er usannDøme:
temperatur = 18
if temperatur > 20:
print("Det er varmt!")
else:
print("Det er kaldt!")Output: "Det er kaldt!" (fordi 18 ikkje er større enn 20)
Fleire alternativ med elif:
temperatur = 15
if temperatur > 25:
print("Det er varmt")
elif temperatur > 15:
print("Det er mildt")
else:
print("Det er kaldt")Naturfagleg døme:
# Sjekk om vann er is, flytende eller damp
temperatur = 50
if temperatur < 0:
print("Vann er is")
elif temperatur < 100:
print("Vann er flytende")
else:
print("Vann er damp")Kva vil dette programmet skrive ut?
hastighet = 65
if hastighet > 80:
print("For fort!")
elif hastighet > 50:
print("Passe fart")
else:
print("For sakte")Modellering av naturfenomen
Modellering handlar om å lage ein forenkla versjon av røyndomen på datamaskina. Dette lèt oss:
- Teste hypotesar utan å måtte gjere dyre eksperiment
- Føreseie framtida (vêr, klimaendringar)
- Forstå komplekse system (økosystem, planetbaner)
Døme 1: Fritt fall
La oss modellere korleis ein ball fell:
# Modell av fritt fall
tyngde = 9.81 # m/s²
tid = 0
fart = 0
høyde = 100 # meter
print("Tid (s) | Høyde (m) | Fart (m/s)")
print("-------------------------------")
while høyde > 0:
print(f"{tid:6.1f} | {høyde:8.1f} | {fart:8.1f}")
# Oppdater verdier
tid = tid + 0.1
fart = fart + tyngde * 0.1
høyde = høyde - fart * 0.1
print("Ballen har truffet bakken!")Dette programmet simulerer ein ball som fell frå 100 meter og reknar ut kor raskt han fell.
Døme 2: Bakterievekst
# Modell av bakterievekst (deler seg hvert 20. minutt)
bakterier = 1
tid_i_minutter = 0
print("Tid (min) | Antall bakterier")
print("---------------------------")
while tid_i_minutter <= 120:
print(f"{tid_i_minutter:9} | {bakterier:15}")
tid_i_minutter = tid_i_minutter + 20
bakterier = bakterier * 2Denne modellen viser eksponentiell vekst – bakteriane doblar seg kvar 20. minutt.
Ein modell er ein forenkla representasjon av røyndomen som blir brukt til å forstå, forklare eller føreseie korleis noko fungerer.
Typar modellar:
- Fysiske modellar: Miniatyrmodellar (f.eks. modell av solsystemet)
- Matematiske modellar: Formlar og likningar
- Datamodellar: Program som simulerer røyndomen
Viktigheitsgrad: Alle modellar er forenklingar – dei fangar opp dei viktigaste aspekta, men ikkje alle detaljar. "All models are wrong, but some are useful" (George Box).
Forklar kvifor modellar er nyttige i naturfag, sjølv om dei er forenklingar av røyndomen. Gi eitt konkret døme.
Lag ein algoritme (pseudokode) for eit program som simulerer ei plante som veks. Planta:
- Startar på 10 cm høgd
- Veks 2 cm per veke viss ho får vatn
- Veks 0 cm per veke viss ho ikkje får vatn
- Døyr viss ho ikkje får vatn i 3 veker på rad
Programmet skal simulere 10 veker og skrive ut høgda til planta kvar veke.
Visualisering av data
Eit viktig aspekt av programmering i naturfag er å visualisere data – altså å lage grafar og diagram.
Døme: Graf av temperatur over tid
import matplotlib.pyplot as plt
# Data
timer = [0, 1, 2, 3, 4, 5, 6]
temperatur = [20, 22, 25, 28, 27, 24, 21]
# Lag graf
plt.plot(timer, temperatur)
plt.xlabel("Timer")
plt.ylabel("Temperatur (°C)")
plt.title("Temperatur gjennom dagen")
plt.grid(True)
plt.show()Dette lagar ein linjegraf som viser korleis temperaturen endrar seg.
Fordelar med visualisering:
- Mønster blir lettare å sjå: Ein graf viser trendar som kan vere vanskelege å sjå i reine tal
- Samanlikning: Lett å samanlikne fleire datasett
- Kommunikasjon: Enklare å forklare funn til andre
Typar visualiseringar:
- Linjegraf: Viser endring over tid
- Søylediagram: Samanliknar kategoriar
- Sektordiagram (kakediagram): Viser delar av ein heilskap
- Spreiingsdiagram: Viser samanheng mellom to variablar
Kva type graf er best eigna til å vise korleis høgda til ei plante endrar seg dag for dag over ein månad?
Programmering i Scratch
Scratch er eit visuelt programmeringsspråk utvikla av MIT. I staden for å skrive kode, dreg du saman blokker som puslespelbrikker.
Fordelar med Scratch:
- Visuelt og intuitivt: Lett å kome i gang
- Ingen syntaksfeil: Du kan ikkje skrive feil – blokkene passar berre saman på rette måtar
- Kreativt: Lag animasjonar, spel og interaktive simuleringar
Naturfagleg bruk av Scratch:
Døme 1: Simulere planetbaner
- Lag ein figur som representerer ein planet
- Bruk løkkjer for å få planeten til å rotere rundt sola
- Juster fart og radius
Døme 2: Mattelek med partiklar
- Lag partiklar som beveger seg raskare når "temperaturen" blir auka
- Simuler gass, væske og fast stoff
Døme 3: Fotosyntese-spel
- Planta samlar sollys (klikk på lyspartiklar)
- Produserer oksygen når nok lys er samla
- Lærer om fotosyntese på ein interaktiv måte
Scratch er tilgjengeleg gratis på scratch.mit.edu!
Beskriv korleis du ville brukt Scratch til å lage ei enkel simulering av vatnets kretslaup (fordamping, kondensasjon, nedbør).
a) Kva figurar/sprites ville du brukt?
b) Kva rørsler og handlingar ville du programmert?
c) Korleis ville du visualisert dei ulike fasane?
Programmering i Python
Python er eitt av dei mest populære programmeringsspråka i verda, mykje brukt i forsking, dataanalyse og maskinlæring.
Kvifor Python?
- Lesbart: Koden ser nesten ut som vanleg engelsk
- Kraftig: Kan gjere alt frå enkel matte til avansert AI
- Stort fellesskap: Millionar av programmerarar verda over
- Gratis: Både Python og dei fleste biblioteka er gratis
Naturfagleg bruk av Python:
1. Dataanalyse:
import pandas as pd
# Les data fra en fil
data = pd.read_csv("temperatur_målinger.csv")
# Finn gjennomsnitt
gj_snitt = data["temperatur"].mean()
print(f"Gjennomsnittstemperatur: {gj_snitt}°C")2. Simulering av kjemiske reaksjonar:
# Simuler nedbrytning av et stoff
mengde = 100 # gram
halveringstid = 5 # timer
tid = 0
while mengde > 1:
print(f"Etter {tid} timer: {mengde:.2f} gram")
tid = tid + halveringstid
mengde = mengde / 23. Matematiske modellar:
import math
# Beregn kastlengde for et prosjektil
v0 = 20 # m/s (utgangsfart)
vinkel = 45 # grader
g = 9.81 # m/s²
vinkel_rad = math.radians(vinkel)
kastlengde = (v0**2 * math.sin(2 * vinkel_rad)) / g
print(f"Kastlengde: {kastlengde:.2f} meter")Python kan lastast ned gratis frå python.org, og det finst mange gode tutorials online!
1. Start enkelt: Ikkje prøv å lage komplekse program med ein gong
2. Øv regelmessig: 15 minutt kvar dag er betre enn 2 timar éin gong i veka
3. Eksperimenter: Endre kode og sjå kva som skjer
4. Les feilmeldingar: Dei fortel deg kva som er gale
5. Bryt ned problem: Løys eitt lite problem om gongen
6. Søk hjelp: Bruk Google, YouTube, eller spør læraren
7. Ha det gøy: Lag noko du synest er interessant!
Hugs: Alle som er gode til programmering i dag, byrja ein gong som nybyrjarar. Alle gjer feil – det er slik vi lærer!
Du skal lage eit program som hjelper elevar å øve på å gjere om mellom Celsius og Fahrenheit.
Programmet skal:
1. Spørje brukaren om kva retning dei vil konvertere (C til F eller F til C)
2. Spørje om temperaturen
3. Gjere konverteringa og vise svaret
4. Spørje om brukaren vil konvertere ein ny temperatur
Skriv pseudokode for dette programmet.
Formlar:
- Fahrenheit = Celsius × 9/5 + 32
- Celsius = (Fahrenheit - 32) × 5/9
Oppsummering
Viktige konsept frå dette kapittelet:
1. Programmering er å gi datamaskina instruksjonar for kva ho skal gjere
2. Algoritme er ei steg-for-steg-oppskrift for å løyse eit problem
3. Variablar blir brukte til å lagre verdiar (tal, tekst, sanningsverdiar)
4. Løkkjer (for og while) blir brukte til å gjenta handlingar
5. Vilkår (if/elif/else) lèt programmet ta avgjerder
6. Modellering er å lage forenkla versjonar av røyndomen på datamaskina
7. Visualisering av data hjelper oss å sjå mønster og trendar
8. Scratch er eit visuelt programmeringsspråk som er lett å lære
9. Python er eit kraftig programmeringsspråk mykje brukt i forsking
Programmering er eit kraftig verktøy i naturfag – det lèt oss utforske, forstå og føreseie naturfenomen på måtar som ikkje var moglege for nokre tiår sidan!
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.