Eksempel eksamensoppgave 1T

Programmeringsoppgave i 1T skal elevene kunne lese og forklare kode, si hva koden gjør, gjøre endringer i koden, og utvikle koden videre. De vil i mye mindre grad bli bedt om å skrive helt ny kode, likevel kan dette være nyttig i enkeltoppgaver. Under er et par eksempler på oppgaver som viser dette.

Eksempel 1

Arne har laget et program han mener finner funksjonsuttrykket til en rett linje gitt to puntker. Programmet har har laget er som følger:

1 
2
3
4
5
6
7
8
9
10
x1 = 1               # x-koordinaten til første punkt
y1 = 3               # y-koordinaten til første punkt
x2 = 2               # x-koordinaten til andre punkt
y2 = 5               # y-koordinaten til andre punkt

a = x2 - x1 / y2 - y1

b = y1 - x1*a 

print("f(x) =", a, "x +", b)

Arne kjører programmet et par ganger og mistenker at det er noe galt i koden.

<div class="alert alert-block alert-info"> a) Kommenter bekymringen til Arne og eventuelle forslag til endringer. </div>

Arne ønsker å utvide programmet til også å regne ut nullpunktet til funksjonen. Han legger til følgende linjer på slutten av forrige programkode.

1 
2
null = ???
print("Nullpunktet til funksjonen er ved x = ", null)
<div class="alert alert-block alert-info"> b) Hva kan Arne erstatte "???" med i koden over for at programmet også skal regne ut nullpunktet til den rettlinjede funksjonen. </div>

Eksempel 2

Berit sitter med en figurtallsoppgave, se figur under.

figurtall-01.png

Hun tenker at hun kan lage et program som kan hjelpe henne med å utforske oppgaven. Berit lager følgende kode:

1 
2
3
4
5
6
7
antall = 5
i = 1

while i < antall:
    F = 2 * i * (i+1)
    print(F)
    i = i + 1
<div class="alert alert-block alert-info"> a) Foklar hva koden over gjør<br>

b) Hva blir resultatet når Berit kjører koden over?

</div>

Berit vil gjerne vite hvor mange figurer hun kan lage hvis hun har 100 000 fyrstikker. Hun begynner å endre programmet sitt som følger:

1 
2
3
4
5
6
7
8
9
10
ant_fyrstikker = 100000
i = 0                      # Antall figurer laget
S = 0                      # Summen av antall fyrstykker brukt så langt

while ???:
    i = i + 1
    F = 2 * i * (i+1)
    S = ???

print(i-1)
<div class="alert alert-block alert-info"> c) Hva kan Berit skrive de to stedene det står "???" i koden over for at programmet skal regne ut antall figurer?<br>

d) Utvid programmet til Berit slik at det også regner ut antallet fyrstikker hun har til overs etter å ha lagd siste mulige figur.

</div>

Eksempel 3

Carl ønsker å lage et program som bruker enhetssirkelen. Han starter med å tegne opp enhetssirkelen (en halvsirkel med radius 1), setter et punkt AA på sirkelen, og tegner en rettvinklet ABS\triangle ABS, der BSA=α\angle BSA = \alpha.

enhetssirkel-01.png

Carl vet videre at sin(α)=AB\sin(\alpha) = AB og cos(α)=AC\cos(\alpha) = AC. Ved hjelp av dette lager han følgende program:

1 
2
3
4
5
6
7
from numpy import sin, cos, radians          # Gjør at python kan bruke sinus og cosinus

vinkel = 0                                   # Vinkelen i grader
alpha = radians(vinkel)                      # Gjør at python kan regne med vinkler i grader

print("Sinus til", vinkel, "er", sin(alpha))
print("Cosinus til", vinkel, "er", cos(alpha))
<div class="alert alert-block alert-info"> a) Hva blir resultatet når koden over kjøres?<br>

b) Hva blir resultatet hvis vi endrer til vinkel = 45?

</div>

Fra figuren over finner Carl at (sin(α))2+(cos(α))2=1(\sin(\alpha))^2 + (\cos(\alpha))^2 = 1.

<div class="alert alert-block alert-info"> c) Forklar hvordan Carl kommer frem til dette? </div>

Carl ønsker nå at programmet skal gi han arealet av ABS\triangle ABS.

<div class="alert alert-block alert-info"> d) Legg til kode i programmet under (bytt ut "???" med kode) slik at det også regner ut arealet av trekanten. </div>
1 
2
3
4
5
6
7
8
9
from numpy import sin, cos, radians          # Gjør at python kan bruke sinus og cosinus

vinkel = 30                                  # Vinkelen i grader
alpha = radians(vinkel)                      # Gjør at python kan regne med grader
areal = ???

print("Sinus til", vinkel, "er", sin(alpha))
print("Cosinus til", vinkel, "er", cos(alpha))
print("Arealet av trekanten er", areal)

Eksempel 4

Dina vil lage et program som finner faktorene til et polynom. Hun tenker at det stort sett er heltallsfaktorer og at de ofte ligger i intervallet [20,20][-20, 20].

1 
2
3
4
5
6
def P(x):
    return x**3 - 2*x**2 - 5*x + 6 
    
for i in range(-20, 21):
    if P(i) == 0:
        print("En faktor er x -", i)
<div class="alert alert-block alert-info"> a) Forklar oppbygningen av koden.<br>

b) Hva blir resultatet når koden kjøres?<br>

c) Dina ønsker også å finne hvor polynomet krysser yy-aksen. Utvid koden slik at den finner denne verdien.

</div>