Øving 1: Print, variabler, datatyper og pseudokode

VIKTIG!

Minst 5 av 6 oppgaver må løses for å få godkjent øvingen. Dersom ikke annet er oppgitt skal koden for hver programmeringsoppgave bestå av èn celle med hele programkoder.

Celler med "In [ ]:" foran er kode-celler som kan kjøre kode. Ellers er cellene tekstbokser. En celle (både tekst og kode) kjøres hvis du markerer den og trykker SHIFT+ENTER. Se guide for utfyllende informasjon om hvordan man bruker jupyter notebooks.

Last ned øvingen fra jupyter til din pc som .pdf-fil (se guide) og last den opp i Blackboard for å levere den.

Oppgave 1

a) Skriv et program som skriver "Programmering er veldig "kult"!" til konsoll. Legg merke til at de doble fnuttene (anførselstegn) i teksten også skal skrives ut.

b) Hvilke(n) funksjon(er) har kommentarer i programkode?

c) Hva er feil med koden i "Kodebit 1" under? Rett den opp så den kjører.

d) Skriv adressen ut på følgende to måter ved å bruke variabler: "Adressen er Kongens gate 432b" og "Gaten er Kongens Gate, husnummeret er 432, oppgang b"

In [8]:
# Oppgave 1 svar
#a
##flere alternativer som er riktige
print('"Programmering er veldig \"kult\"!"')
print('"Programmering er veldig "kult"!"')

b) Kommentarer brukes til å skrive forklaringer i koden

c) Variabelen "oppgang" er en string, men er ikke deklarert på riktig måte (med verdien i ""), og derfor blir den tolket som en variabel. Det er også feil i deklareringen av variabelen "adresse", siden man prøver å lagre verdier av forskjellig type i én variabel. Her må man gjøre "husnr" til en string. For å få variabelen "adresse" til å skrives ut riktig i den første print-setningen må man legge til mellomrom mellom "gate" og de andre to variablene.

In [15]:
### Kodebit 1 ###

gate = 'Kongens Gate'
husnr = '432'
oppgang = 'b'

adresse = gate + " " + husnr + oppgang
print(adresse)
print('Gaten er '+ gate + ', husnummeret er ' + husnr + ', oppgang '+ oppgang)

Oppgave 2

a) Lagre tallet 1000 som heltall i en variabel

b) Bruk heltallsdivisjon, og del tallet fra a) på 23

c) Ta resultatet fra b) og gang det med 23 igjen. Hvorfor blir ikke svaret 1000? Forklar hvorfor heltallsdivisjon kan være nyttig.

In [18]:
# Oppgave 2 svar

a = 1000

b = a//23

c = b*23

# Resultatet av c) blir ikke 1000 pga heltallsdivisjon gir hvor mange "hele" ganger tallet går opp i 1000.
# Er nyttig når man opererer med ting som ikke gir mening å dele opp med desimaler i den virkelige verden.

Oppgave 3

Med utgangspunkt i programmet "Økning av antallet blomster pr uke i et bed" under:

a) Skriv pseudokode for programmet

b) Erstatt variabelnavnene i programmet med beskrivende, gyldige variabelnavn

c) Endre tilordningen av variablene slik at programmet fungerer

d) Skriv antall blomster etter 10 uker til konsoll med en forklarende setning

In [21]:
## Opgpave 3 svar


#### Økning av antallet blomster pr uke i et bed ####

# Fyll inn pseudokode:

# Angi variabel "ant" for antall blomster som er i bedet i utgangspunktet
# Angi variabel "OKNING15" for prosentvis økning pr uke
# Beregn antall blomster (prUke) økning per uke uke basert på variablene
# Beregn antall blomster (ant_10uker) etter 10 uker basert på 


ant = 150
OKNING15 = 0.15

prUke = ant * OKNING15
ant_10uker = ant+(prUke*10)

print('Økning hver uke: ', prUke)
print('Økning på 10 uker: ', prUke*10)
print('Blomster etter 10 uker: ', ant_10uker)

Oppgave 4

Du er på restaurant med andre studenter på faget fra din kommune, og på regningen er følgende informasjon:

Total pris for mat og drikke: 850 kr Studentrabatt: 25% Tips: 10%

a) Legg informasjonen inn i variabler

b) Lag en ny variabel som regner ut total pris på middagen, og skriv ut denne

c) Regn ut pris per person for et valgfritt antall personer, og skriv ut pris per person og antallet personer til konsoll

In [8]:
# Oppgave 4 svar

# a)
total = 850
tips = 0.10
rabatt = 0.25

# b)
medRabatt = total-(total*rabatt)
print('Pris med rabatt, uten tips er ', format(medRabatt, '.1f'))

print('Tips på prisen med rabatt er', format(medRabatt*tips,'.1f'), 'kr.')

totalpris = medRabatt+(medRabatt*tips)
print('Total pris med tips og studentrabatt er: ', format(totalpris,'.1f'), 'kr.')

# c)

antPers = 3

prisPr = totalpris/antPers

print('Pris for hver person hvis man var', antPers, 'personer er', format(prisPr,'.1f'),'kr.')

Oppgave 5

Listen under er ingrediensene for å lage småkaker. Denne oppskriften gir 36 småkaker.

  • 100 g smør
  • 180 g hvetemel
  • 350 g brunt sukker
  • 4 egg
  • 1 ts bakepulver

Skriv et program som printer ut en liste med justert mengde av ingrediensene for 10, 24 og 50 småkaker. Her kan du skrive koden i flere enn én celle hvis du ønsker.

In [14]:
# Oppgave 5 svar

# Finner først mengde for å lage 1 småkake

smor1 = 100/36
hvete1 = 180/36
sukker1 = 350/36
egg1 = 4/36
bkpl1 = 1/36

# Multipliserer med ønsket antall småkaker

# 10 småkaker:

smor10 = format(smor1*10,'.0f')
hvete10 = format(hvete1*10,'.0f')
sukker10 = format(sukker1*10,'.0f')
egg10 = format(egg1*10,'.0f')
bkpl10 = format(bkpl1*10,'.1f')

print('For 10 småkaker trenger man: ', smor10,'g. smør, ', hvete10,'g. hvetemel, ', sukker10, 'g. sukker,',
     egg10,'egg og ', bkpl10, 'bakepulver.')

# 24 småkaker:

smor24 = format(smor1*24,'.0f')
hvete24 = format(hvete1*24,'.0f')
sukker24 = format(sukker1*24,'.0f')
egg24 = format(egg1*24,'.0f')
bkpl24 = format(bkpl1*24,'.1f')

print('For 24 småkaker trenger man: ', smor24,'g. smør, ', hvete24,'g. hvetemel, ', sukker24, 'g. sukker,',
     egg24,'egg og ', bkpl24, 'bakepulver.')

# 50 småkaker:

smor50 = format(smor1*50,'.0f')
hvete50 = format(hvete1*50,'.0f')
sukker50 = format(sukker1*50,'.0f')
egg50 = format(egg1*50,'.0f')
bkpl50 = format(bkpl1*50,'.1f')

print('For 50 småkaker trenger man: ', smor50,'g. smør, ', hvete50,'g. hvetemel, ', sukker50, 'g. sukker,',
     egg50,'egg og ', bkpl50, 'bakepulver.')

Oppgave 6

Nedenfor står et program hvor vi regner ut omkrets og areal for en sirkel etter de velkjente formlene O = 2πr og A = πr2. Slik programmet er nå brukes ingen variabler. Dette gjør at når vi skal regne ut arealet av en sylinder hvor sirkelen er grunnflate, må vi gjøre om igjen flere beregninger som vi allerede har gjort tidligere.

Tips: Arealet av sylinderen med høyde h vil være Omkrets_sirkel h + 2 Areal_sirkel, hvor det første leddet er arealet av sylinderveggen og det siste leddet er topp- og bunnlokket.

Oppgave: Endre koden ved å tilordne og deretter bruke variabler for pi, radius, høyde og sirkelens omkrets og areal, slik at programmet unngår å gjøre på nytt beregninger som allerede er gjort før.

In [20]:
## Oppgave 6 svar 

import math

pi = math.pi

radius = 5.4
hoyde = 7.9

omkrets = 2*pi * radius
arealSirkel = pi * radius**2


print("Har en sirkel med radius", radius, "som er grunnflate i en sylinder med høyde", hoyde)
print("Omkrets av sirkelen:", omkrets) 
print("Areal av sirkelen:", arealSirkel)
print("Areal av sylinderen:", omkrets * hoyde + arealSirkel*2)

Spørsmål eller kommentarer