Variabler og datatyper#
Læringsutbytte
Etter å ha arbeidet med dette temaet, skal du kunne:
kjøre enkle programmer med en programmeringseditor
definere og gjøre rede for ulike variabeltyper: heltall, flyttall og strenger
skrive ut output ved å bruke print-funksjonen
gjøre enkel aritmetikk i Python
ta input fra brukeren av programmet
importere og bruke biblioteker
Variabler#
Variabel
En programmeringsvariabel er en størrelse som lagrer en verdi i et program.
Variabler er spesielt nyttig når vi skal bruke samme verdi flere ganger, eller når vi skal oppdatere en verdi underveis i programmet. Et enkelt eksempel er hvis vi ønsker å finne ti tall i en bestemt tallrekke. Dette kan vi beskrive slik med en pseudokode:
tall = 0
gjenta 10 ganger:
tall = tall + 3
vis tall på skjermen
Du kan tenke på en variabel som en boks vi kan putte ting i, og som vi kan modifisere, endre og hente informasjon fra underveis.
Hva er en pseudokode?
En pseudokode er en beskrivelse av en algoritme uten å bruke et bestemt programmeringsspråk. Pseudokode kan skrives på mange måter og kan beskrives med ord, bilder og symboler.
Underveisoppgave
Nedenfor er et eksempel på en programkode i Python der vi beregner gjennomsnittshastigheten i m/s for ulike legemer som har beveget seg henholdsvis 3, 4.5, 7 og 14 meter i løpet av 3 sekunder. Hva er fordelen med å bruke variablen t her?
Løsningsforslag
Kommandoen print gir oss et ouput fra programmet vårt. Vi sier at noe blir skrevet ut til “konsollen”. Konsollen er der du får output i et programmeringsmiljø. Inni print-kommandoen kan vi skrive flere ting. Da må hver variabel og hver verdi være adskilt med komma.
t = 3
v1 = 3/t
v2 = 4.5/t
v3 = 7/t
v4 = 14/t
Print#
For å få noe ut av programmet vårt, må vi be datamaskinen om å “skrive ut” noe. Dette gjør vi med kommandoen print. Dersom vi ønsker å skrive ut flere variabler, må vi skille dem med komma i print-funksjonen. Her ser du tre måter å bruke print-kommandoen på:
print(v1)
print(v1, v2, v3, v4)
print("Gjennomsnittsfarten for legeme 4 er: ", v4, "m/s.")
1.0
1.0 1.5 2.3333333333333335 4.666666666666667
Gjennomsnittsfarten for legeme 4 er: 4.666666666666667 m/s.
Underveisoppgave
Lag et program som regner ut arealet av et rektangel og skriver ut en svarsetning med enheter.
Løsningsforslag
side1 = 5
side2 = 3
A = side1*side2
print("Arealet til rektangelet er:", A, "kvadratmeter")
Kommentarer#
Bruk av kommentarer i koden er viktig for at en selv skal huske hva koden illustrerer, hvilke enheter som brukes, og liknende. I tillegg er det viktig dersom andre skal bruke koden din til noe, for eksempel i store samarbeidsprosjekter. Kommentarer legges til ved å sette en # foran kommentaren. Eventuelt, dersom du kommenterer over flere linjer, kan du bruke triple anførselstegn før og etter kommentarene. Her er et eksempel:
"""
Regner ut kinetisk energi i én dimensjon
for et legeme med masse m og hastighet v
"""
m = 2.0 # masse i kg
v = 1.0 # fart i m/s
E = 0.5*m*v**2 # Kinetisk energi i J
print("Den kinetiske energien er", E, "J.")
Den kinetiske energien er 1.0 J.
Aritmetikk#
Vi kan bruke Python som en enkel kalkulator. Vi har blant annet følgende operatorer:
Operator |
Forklaring |
---|---|
+ |
Addisjon (a + b) |
- |
Subtraksjon (a - b) |
* |
Multiplikasjon (a*b) |
/ |
Divisjon (a/b) |
** |
Eksponent (a**b) |
Underveisoppgave
Det finnes også to spesielle operatorer: // og %. Finn ut hva disse operatorene gjør ved å prøve dere fram i koderuta nedenfor. Vi har lagt til fire linjer som du kan bruke som utgangspunkt. Du skriver kode i ruta til venstre, og output på denne koden kommer i ruta til høyre. Klikk “play”-knappen for å kjøre programmet.
Løsning
// utfører heltallsdivisjon, det vil si at operatoren finner det høyeste heltallet divisjonen går opp i. 24 // 5 = 4 fordi 4 * 5 = 20, som er det nærmeste vi kommer 24 i 5-gangen uten å overskride 24. Resten etter denne divisjonen er 4. Det får vi fram ved å bruke «modulusoperatoren» %, som ikke har noe med prosent å gjøre. 24 % 5 er altså 4.
Biblioteker#
De fleste matematiske operatorer og funksjoner finnes ikke i standard Python. For å få tilgang til mer avansert matematikk, må vi importere biblioteker (eller moduler) inn i Python-programmet vårt. Et bibliotek er en pakke med ekstra kommandoer og funksjoner som vi kan bruke, som sqrt, cos, log og så videre. Det finnes ulike måter å importere på, men i undervisningssammenheng kan det ofte være mest hensiktsmessig å bruke den enkleste måten. Vi kaller det metode 1 her. Klikk gjerne på de andre metodene for å se hvordan vi kan importere på andre måter. Du bør kjenne til de ulike metodene, men du kan bruke den metoden du syns er best tilpasset den situasjonen du skal bruke dem i.
Underveisoppgave
Lag et program som regner ut radius til en sirkel med arealet 4 ved å importere sqrt og pi fra numpy-biblioteket. Kunne du gjort beregningene uten disse funksjonene?
Løsningsforslag
from numpy import pi, sqrt
A = 4
r = sqrt(A/pi) # Vi kunne også skrevet (A/pi)**0.5
print("Radius til sirkelen er:", r)
Brukerinput#
Vi kan også få programmet vårt til å spørre brukeren av programmet om å taste inn enkelte variabler selv. Dette gjøres i samme ruta som du får output i editoren din. For å få brukerinput, bruker vi funksjonen input. Kjør programmet nedenfor og beskriv hvordan det fungerer. Prøv å bytte ut ulike kodelinjer og se hva slags output du får. Du må skrive inn input-verdiene i konsollen til høyre i koderuta.
Input er ikke nødvendig for annet enn å lage et mer interaktivt program. Men hvis du lager et program med input, bør du legge til input helt til slutt. Start med å gi variablene verdier, og test at programmet fungerer. Deretter kan du bruke input på de variablene du ønsker. Dette er for å unngå å måtte taste inn input-verdier hver gang du kjører programmet ditt, spesielt hvis det inneholder feil du må rette opp!
Underveisoppgave
Modifiser programmet fra forrige underveisoppgave slik at det tar arealet som input fra brukeren.
Løsningsforslag
from numpy import pi, sqrt
A = input("Skriv arealet til sirkelen: ")
A = float(A)
r = sqrt(A/pi) # Vi kunne også skrevet (A/pi)**0.5
print("Radius til sirkelen er:", r)
Variabeltyper#
I matematikk har vi ulike tallmengder, som reelle tall, irrasjonale tall, rasjonale tall, naturlige tall, hele tall og komplekse tall. Disse tallmengdene er uendelig store, som betyr at de ikke kan eksistere på en datamaskin. Vi har derfor en del andre tallmengder og variabeltyper. For eksempel heter desimaltall float fordi ikke alle desimaltall er representert på en datamaskin. Det er altså en annen tallmengde. De viktigste variabeltypene ser du her:
Datatype |
Forklaring |
Eksempel |
---|---|---|
Heltall (int) |
Hele tall |
42 |
Flyttall (float) |
Desimaltall |
3.1415 |
Streng (str) |
Tekst |
“Hei!” |
Boolsk |
Sannhet |
True eller False |
Når vi ønsker input fra en bruker av et program, må vi spesifisere hvilken variabeltype vi ønsker at inputen skal bli tolket som. Standard er tekst, men hvis vi for eksempel “adderer” teksten “4” med “2”, får vi “42”, mens tallet 4 + tallet 2 gir tallet 6. Eksempelet nedenfor illustrerer dette.
tekst1 = input("Skriv et tall: ")
tekst2 = input("Skriv et tall til: ")
tall1 = float(tekst1)
tall2 = float(tekst2)
tullsvar = tekst1 + tekst2
tallsvar = tall1 + tall2
print("Summen av teksten er:", tullsvar, "og summen av tallene er:", tallsvar)
Skriv et tall: 4
Skriv et tall til: 2
Summen av teksten er: 42 og summen av tallene er: 6.0
Underveisoppgave
Lag et program som skriver “Hei, navn!” til skjermen. Brukeren skal bes om å taste inn navnet sitt. Dette navnet skal lagres i en variabel, og så skrives ut som i setningen ovenfor.
Utvid programmet til å spørre om alderen din. La programmet skrive ut en kommentar til alderen din til slutt, for eksempel “din alder er jammen gammelt!”
Løsningsforslag
navn = input("Hva heter du? ")
print("Hei,", navn, "!") # Du kan eventuelt bruke + istedenfor komma mellom strenger for å unngå mellomrom
alder = input("Hvor gammel er du? ")
print(alder, "år er jammen gammelt!")
Datamaskinen krever nøyaktige instrukser#
Når du lager sammensatte programmer med Python, må du huske på følgende:
Programmet leses fra topp til bunn og fra venstre til høyre.
Små bokstaver er IKKE lik store bokstaver (p \(\neq\) P).
Python bryr seg lite om mellomrom, med mindre det er på starten av ei linje. Bruk mellomrom for å gjøre programmet ditt mer lesbart.
Øv deg på å lese feilmeldinger: Du får beskjed om linja der feilen befinner seg og typen feil.
Underveisoppgave
Forklar hva som er feil med følgende programmer:
tall1 = 1
print(tall1 + tall2)
tall2 = 3
navn = "Gunnar"
print(Navn)
a = 2
b = 3
print("Differansen mellom" a "og" b "=" a + b)
Løsningsforslag
Programmet leser fra topp til bunn. Derfor må vi definere tall2 før vi bruker det til addisjon. Linje 2 og 3 må derfor bytte plass.
Variabelen navn har liten n. Variabelen Navn finnes ikke.
For det første trenger vi komma mellom alle variabler i print-funksjonen. For det andre må det stå “summen”, ikke differansen!
print("Summen av", a, "og", b, "=", a + b)
Oppgaver#
Oppgave 1.1
Bruk kodeboksen nedenfor til å lage relevante variabler slik at programmet regner ut arealet av en trekant med grunnlinje 4 og høyde 2. Programmet inneholder litt kode fra før til å hjelpe deg på vei.
Løsningsforslag
g = 4
h = 2
A = g*h/2
print("Arealet til trekanten er:", A)
Oppgave 1.2
Lag et program som regner ut farten i m/s gitt følgende formel:
Utvid programmet slik at startfarten, akselerasjonen og tida blir tatt som input.
Løsningsforslag
Løsning uten input:
v0 = 1 # startfart i m/s
a = 10 # akselerasjon i m/s^2
t = 5 # slutt-tid i s
v = v0 + a*t
print("Sluttfarten blir:", v, "m/s")
Løsning med input:
v0 = float(input("startfart i m/s: "))
a = float(input("akselerasjon i m/s^2: "))
t = float(input("slutt-tid i s: "))
v = v0 + a*t
print("Sluttfarten blir:", v, "m/s")
Ekstra: Oppgave 1.3
Lag et program som bruker en valgfri formel fra matematikken til å regne ut noe. Bruk input-funksjonen til å hente variabelverdier fra brukeren.
Videoer#
Her kan du se videoer som introduksjon og/eller repetisjon til fagstoffet: