Fra prosent til vekstfaktor og tilbake
Oppgave 1
I det første eksempelet med prisøkning i artikkelen Vekstfaktor og prosentvis endring øker en vare i pris med 15 prosent. Originalprisen er 800 kroner. Vi skal finne prisen etter prisøkningen. Slike oppgaver er greie å løse ved å bruke vekstfaktor.
Vi ønsker å lage et program som kan brukes til å regne prosentoppgaver med vekstfaktor. Brukeren av programmet skal kunne skrive inn tallene i oppgaven.
a) Algoritme
Vi begynner med vekstfaktoren. Skriv algoritmen til et program som tar imot et prosenttall fra brukeren av programmet og regner ut vekstfaktoren ved en økning med dette prosenttallet. Husk å få med forklarende tekster til programmet.
Løsningsforslag
Forslag til algoritme:
Skriv til skjermen "Dette programmet regner ut vekstfaktoren ved en økning på en bestemt prosent. Skriv inn denne prosenten:".
- Ta imot svaret fra brukeren, og lagre det i variabelen
prosent
. - Regn ut 1+
prosent
/100, og lagre resultatet i variabelenvekstfaktor
. - Skriv til skjermen "Vekstfaktoren ved en økning på
<prosent>
prosent er<vekstfaktor>
.".
Med "<prosent>
" mener vi den verdien variabelen prosent
har. Tilsvarende gjelder for "<vekstfaktor>
".
b) Koding
Lag programmet med en programmeringseditor, og test at det fungerer slik det skal.
Løsningsforlag
Forslag til kode:
Python
1print("Dette programmet regner ut vekstfaktoren "
2"ved en økning på en bestemt prosent.")
3prosent = float(input("Skriv inn denne prosenten:"))
4vekstfaktor = 1 + prosent/100
5print(f"Vekstfaktoren ved en økning "
6f"på {prosent} prosent er {vekstfaktor}.")
Oppgave 2
Vi skal lage et program som skal kunne regne ut hva en vare med en viss pris vil koste etter en prisoppgang på en viss prosent. Brukeren av programmet skal kunne skrive inn både førprisen og prosenten.
a) Algoritme
Skriv algoritmen til et slikt program.
Løsningsforslag
Forslag til algoritme:
Skriv til skjermen "Dette programmet regner ut den nye prisen på en vare som får en prisøkning på en viss prosent.".
- Skriv til skjermen "Skriv inn nåværende pris på varen:".
- Ta imot svaret fra brukeren, og lagre det i variabelen
gammelpris
. - Skriv til skjermen "Skriv inn prosenten for prisøkningen:".
- Ta imot svaret fra brukeren, og lagre det i variabelen
prosent
. - Regn ut 1+
prosent
/100, og lagre resultatet i variabelenvekstfaktor
. - Multipliser
vekstfaktor
medgammelpris
, og lagre resultatet i variabelennypris
. - Skriv til skjermen "Når en vare som koster
<gammelpris>
kroner får en prisøkning på<prosent>
prosent, blir den nye prisen<nypris>
kroner.".
Med "<gammelpris>
" mener vi den verdien variabelen gammelpris
har. Tilsvarende gjelder for "<prosent>
" og "<nypris>
".
b) Koding
Skriv koden til algoritmen i a).
Løsning
Forslag til kode:
python
1# informasjon til brukeren av programmet
2
3print("Dette programmet regner ut den nye prisen på en vare"
4 " som får en prisøkning på en viss prosent.")
5
6# ta imot informasjon fra brukeren av programmet
7
8gammelpris = float(input("Skriv inn nåværende pris på varen: "))
9prosent = float(input("Skriv inn prosenten for prisøkningen: "))
10
11vekstfaktor = 1 + prosent/100
12
13nypris = gammelpris*vekstfaktor
14
15print(f"Når en vare som koster {gammelpris} kroner får en prisøkning"
16 f" på {prosent} prosent, blir den nye prisen {nypris} kroner.")
c) Algoritme
Det er ikke alltid at det er en pris som skal øke i prosent. Det kan være hva som helst. Endre på de forklarende tekstene i algoritmen i a) slik at programmet "passer" uansett hva det er som skal få en prosentøkning.
Løsning
Forslag til algoritme:
Skriv til skjermen "Dette programmet regner ut den nye verdien av et tall som skal øke med en viss prosent.".
- Skriv til skjermen "Skriv inn tallet som skal endres:".
- Ta imot svaret fra brukeren, og lagre det i variabelen
tall
. - Skriv til skjermen "Skriv inn prosenten for økningen:".
- Ta imot svaret fra brukeren, og lagre det i variabelen
prosent
. - Regn ut 1+
prosent
/100, og lagre resultatet i variabelenvekstfaktor
. - Multipliser
vekstfaktor
medtall
, og lagre resultatet i variabelennyverdi
. - Skriv til skjermen "Når tallet
<tall>
økes med<prosent>
prosent, øker det til<nytall>
.".
Oppgave 3
Vi ønsker å lage et program der brukeren av programmet skal kunne skrive inn et tall og en prosent og bestemme om det opprinnelige tallet skal øke eller minke med denne prosenten.
a) Algoritme
Skriv algoritmen til et slikt program.
Løsning
- Skriv til skjermen "Dette programmet regner ut den nye verdien på et tall som skal øke eller minke med en viss prosent.".
- Skriv til skjermen "Dersom tallet skal øke, skriv 'a'. Dersom tallet skal minke, skriv 'm'.".
- Ta imot svaret fra brukeren, og lagre det i variabelen
svar
. - Skriv til skjermen "Skriv inn tallet som skal få en prosentvis endring:".
- Ta imot svaret fra brukeren, og lagre det i variabelen
tall
. - Skriv til skjermen "Skriv inn prosenten tallet skal endres med:".
- Ta imot svaret fra brukeren, og lagre det i variabelen
prosent
. Dersom variabelen
svar
har verdien "a":Regn ut 1+
prosent
/100, og lagre resultatet i variabelenvekstfaktor
.Sett variabelen
endring
lik "øker".
Dersom
svar
ikke har verdien "a", men verdien "m":Regn ut 1-
prosent
/100, og lagre resultatet i variabelenvekstfaktor
.Sett variabelen
endring
lik "minker".
- Multipliser
vekstfaktor
medtall
, og lagre resultatet i variabelennyverdi
. Skriv til skjermen "Når tallet
<tall>
<endring>
med<prosent>
prosent,<endring>
det til<nytall>
.".
Merk at vi bruker variabelen endring
til å lage en svarsetning som gir mening, til slutt.
b) Koding
Lag programmet etter den ferdige algoritmen ovenfor.
Tips
Her kan du få bruk for kommandoordet if. Se artikkelen "Veivalg – if-elif-else".
Løsning
python
1# informasjon til brukeren av programmet
2print("Dette programmet regner ut den nye verdien på et tall "
3 "som skal øke eller minke med en viss prosent.")
4
5# ta imot informasjon fra brukeren av programmet
6svar = input("Dersom tallet skal øke, skriv 'a'. Dersom tallet skal minke, skriv 'm'.")
7tall = float(input("Skriv inn tallet som skal få en prosentvis endring: "))
8prosent = float(input("Skriv inn prosenten tallet skal endres med: "))
9
10# veivalg mellom økning eller minking
11if svar == "a":
12 vekstfaktor = 1 + prosent/100
13 endring = "øker" # bruker 'endring' til å lage svar som gir mening
14
15elif svar == "m":
16 vekstfaktor = 1 - prosent/100
17 endring = "minker"
18
19nytall = tall*vekstfaktor
20
21print(f"Når tallet {tall} {endring} med {prosent} prosent, "
22 f"{endring} det til {nytall}.")
Utfordring: Lag programmet slik at brukeren får meldinga "Skriv inn tallet som skal få en økning" dersom tallet skal økes, og tilsvarende om tallet skal minkes.
Oppgave 4
Det hender at brukeren av et program skriver feil. Dersom brukeren av programmet i forrige oppgave er uheldig og skriver noe annet enn "a" eller "m" på det første spørsmålet, vil programmet krasje. Vi ønsker at brukeren skal få en ny sjanse til å svare rett på dette spørsmålet – helt til hen klarer å svare riktig, det vil si enten "a" eller "m".
a) Algoritme
Endre på algoritmen til programmet i forrige oppgave slik at dette ønsket blir oppfylt.
Tips
Vi trenger en struktur som er slik at så lenge for eksempel variabelen svar
har en annen verdi enn "a" eller "m", skal brukeren bli bedt om å skrive svaret på nytt.
Løsning
Den øverste delen av algoritmen:
- Skriv til skjermen "Dette programmet regner ut den nye verdien på et tall som skal øke eller minke med en viss prosent.".
- La variabelen
svar
få verdien "feil". Så lenge
svar
har verdien "feil":- Skriv til skjermen "Dersom tallet skal øke, skriv 'a'. Dersom tallet skal minke, skriv 'm'.".
- Ta imot svaret fra brukeren, og lagre det i variabelen
svar
. - Dersom
svar
ikke har verdien "a" eller "m", skriv til skjermen "Du skrev noe programmet ikke forsto.", og la variabelensvar
få verdien "feil".
- (Resten av algoritmen er som før.)
b) Koding
Endre deretter på programkoden, og kontroller at programmet fungerer slik det skal.
Tips
Her trenger du en while-struktur.
Løsning
python
1# informasjon til brukeren av programmet
2print("Dette programmet regner ut den nye verdien på et tall "
3 "som skal øke eller minke med en viss prosent.")
4
5# ta imot informasjon fra brukeren av programmet
6svar = "feil"
7while svar == "feil":
8 svar = input("Dersom tallet skal øke, skriv 'a'. Dersom tallet skal minke, skriv 'm'.")
9 if svar != "a":
10 if svar != "m":
11 print("Du skrev inn verken 'a' eller 'm'.")
12 svar = "feil"
13
14tall = float(input("Skriv inn tallet som skal få en prosentvis endring: "))
15prosent = float(input("Skriv inn prosenten tallet skal endres med: "))
16
17# veivalg mellom økning eller minking
18if svar == "a":
19 vekstfaktor = 1 + prosent/100
20 endring = "øker" # bruker 'endring' til å lage et svar som gir mening
21
22elif svar == "m":
23 vekstfaktor = 1 - prosent/100
24 endring = "minker"
25
26nytall = tall*vekstfaktor
27
28print(f"Når tallet {tall} {endring} med {prosent} prosent, "
29 f"{endring} det til {nytall}.")
c) Algoritme
Hvorfor er den andre instruksjonen i algoritmen over viktig?
Svar
Testingen er bygd opp rundt verdien av variabelen svar
. svar
må derfor være definert og ha fått en verdi før vi bruker den i testen på tredje linje i algoritmen. I tillegg må den verdien svar
skal få i den andre linja, være "feil", ellers blir ikke noe av det som hører til under tredje linje, kjørt i det hele tatt.
Oppgave 5
Vi ønsker nå at programmet i forrige oppgave skal kunne regne ut den nye verdien etter flere omganger med samme prosentvise endring, det vil si når vi har eksponentiell vekst.
a) Algoritme
Endre på algoritmen til programmet i forrige oppgave slik at brukeren kan skrive inn hvor mange ganger tallet skal endres med den samme prosenten.
Løsning
Vi har forkortet algoritmen så den ikke skal ta så stor plass.
Skriv startmelding og ta imot informasjon fra brukeren om økning eller minking.
Kjør testen på om brukeren skriver inn 'a' eller 'm'.
Ta imot tallet, prosenten og hvor mange ganger tallet skal endres, fra brukeren.
Regn ut vekstfaktor etter om det skal være økning eller minking.
Multipliser tallet med vekstfaktoren opphøyd i antall ganger tallet skal endres.
Skriv en passende svarmelding.
b) Koding
Skriv koden til programmet etter algoritmen i a).
Løsning
python
1# informasjon til brukeren av programmet
2print("Dette programmet regner ut den nye verdien på et tall "
3 "som skal øke eller minke med en viss prosent et visst antall ganger.")
4
5# ta imot informasjon fra brukeren av programmet
6svar = "feil"
7while svar == "feil":
8 svar = input("Dersom tallet skal øke, skriv 'a'. Dersom tallet skal minke, skriv 'm'.")
9 if svar != "a":
10 if svar != "m":
11 print("Du skrev inn verken 'a' eller 'm'.")
12 svar = "feil"
13
14tall = float(input("Skriv inn tallet som skal få en prosentvis endring: "))
15prosent = float(input("Skriv inn prosenten tallet skal endres med: "))
16n = float(input("Skriv inn hvor mange ganger tallet skal endres: "))
17
18# veivalg mellom økning eller minking
19if svar == "a":
20 vekstfaktor = 1 + prosent/100
21 endring = "øker" # bruker 'endring' til å lage svar som gir mening
22
23elif svar == "m":
24 vekstfaktor = 1 - prosent/100
25 endring = "minker"
26
27nytall = tall*vekstfaktor**n
28
29print(f"Når tallet {tall} {endring} med {prosent} prosent "
30 f"{n} ganger, {endring} det til {nytall}.")
Oppgave 6
a) Regning
Noen ganger vet vi hvor stort et tall er både før og etter en prosentvis endring, men vi vet ikke prosenten. For å finne prosenten her må vi gjøre to regneoperasjoner. Hvilke to regneoperasjoner er det? Igjen er vekstfaktoren et stikkord.
Svar
- Vi må regne ut vekstfaktoren ut ifra de to tallene.
- Vi må regne ut prosenten ut ifra vekstfaktoren.
b) Regning
Vi ønsker å lage et program som kan regne ut den prosentvise økningen ut ifra verdien på et tall før og etter økningen. Vi ser nå på trinn nummer 2 ovenfor. Hvordan regner vi ut prosenten dersom vi vet vekstfaktoren?
Tips
Formelen for vekstfaktoren ved prosentvis økning er
Prøv å snu på formelen slik at den blir på formen
prosent = ....
Tips for hvordan du snur en formel, finner du i artikkelen "Formelregning".
Løsningsforslag
c) Regning
Formelen ovenfor gjelder ved prosentvis økning. Finn tilsvarende formel for prosentvis nedgang.
d) Algoritme og koding
I første omgang skal vi lage et program som regner ut prosenten ut ifra to tall når det har vært prosentvis økning.
Skriv algoritmen til et slikt program. (Husk å få med gode forklarende tekster.) Lag programmet etterpå.
Løsningsforslag
- Skriv til skjermen "Dette programmet regner ut den prosentvise økningen når et tall øker fra en verdi til en annen.".
- Skriv til skjermen "Skriv inn det opprinnelige tallet:".
- Ta imot tallet fra brukeren, konverter det til et ekte tall, og lagre det i variabelen
gammelverdi
. - Skriv til skjermen "Skriv inn hva tallet er etter den prosentvise økningen:".
- Ta imot tallet fra brukeren, konverter det til et ekte tall, og lagre det i variabelen
nyverdi
. - Regn ut
nyverdi
dividert medgammelverdi
, og sett resultatet inn i variabelenvekstfaktor
. - Regn ut 100 multiplisert med
vekstfaktor
, og trekk fra 100. Sett resultatet inn i variabelenprosent
. - Skriv til skjermen "Når et tall øker fra
<gammelverdi>
til<nyverdi>
, er økningen på<prosent>
prosent.".
e) Algoritme og koding
Endre på algoritmen til programmet slik at det kan håndtere både prosentvis nedgang og prosentvis økning. Lag programmet etterpå.
Tips
Trenger vi å spørre brukeren om det har vært nedgang eller økning?
f) Algoritme og koding
Endre på algoritmen til programmet slik at det kan håndtere at det har vært den samme prosentvise endringen et visst antall ganger som brukeren kan skrive inn. Lag programmet etterpå.
Oppgave 7
Bygg sammen de to programmene i de to oppgavene over slik at du får et ekte "prosentprogram" som kan takle alle oppgaver med vekstfaktor.