Utforske tallmønstre med programmering

En løkke («FOR HVERT») lar deg generere mange ledd i et tallmønster raskt, i stedet for å regne dem ut for hånd ett og ett. Dette gjør det lettere å OPPDAGE mønsteret og sjekke om en foreslått formel faktisk stemmer for mange verdier.

Tips

  • Skriv pseudokoden slik at den bygger videre på forrige ledd i mønsteret (f.eks. legg til neste tall), i stedet for å regne hvert ledd helt fra bunnen av – det ligner mer på hvordan ekte kode gjør det.
  • Sjekk alltid resultatet fra koden mot en kjent formel for noen få ledd FØR du stoler på at koden er riktig.

Eksempel: Generere trekanttall med en løkke

Skriv pseudokode som regner ut de fem første trekanttallene ved å legge sammen tall fortløpende (1, 1+2, 1+2+3, …), og sjekk det femte trekanttallet mot formelen n(n+1)2\frac{n(n+1)}{2}.

Spore løkken som bygger trekanttallene
iLegger tilSum (trekanttall)
111
223
336
4410
5515
Løsning:
  1. Pseudokoden er: «SETT sum = 0. FOR HVERT tall ii fra 1 til 5: legg ii til sum, skriv ut sum.»
  2. vi sporer den: i=1i=1 gir sum 1
  3. i=2i=2 gir sum 3
  4. i=3i=3 gir sum 6
  5. i=4i=4 gir sum 10
  6. i=5i=5 gir sum 15
  7. med formelen: 562=15\frac{5 \cdot 6}{2} = 15
  8. svaret er begge metodene gir 15, det femte trekanttallet.
Alternativ forklaring/metode: Bruk formelen i stedet for løkken

Alternativ metode – innenfor pensum, men ikke hovedmetoden her

Regne alle leddene direkte fra formelen

I stedet for å bygge opp summen ledd for ledd i en løkke, kan du regne ut hvert trekanttall direkte med formelen n(n+1)2\frac{n(n+1)}{2} for hver nn – raskere for store nn, men løkken viser tydeligere HVORFOR formelen stemmer, siden den følger samme oppbygning som selve mønsteret.

nn(n+1)/2
410
515

Oppgaver

Prøv minst én oppgave på hvert nivå.

Lett(3)

L-11En løkke summerer tallene 1, 2, 3. Hva blir summen?

Vis fasit
BeregningResultat
1+2+36

1+2+3 = 6

L-12Hva blir det fjerde trekanttallet, regnet med formelen n(n+1)/2 for n=4?

Vis fasit
BeregningResultat
4*520
20 : 210

4*5 : 2 = 20 : 2 = 10

L-13En løkke kjører «FOR HVERT tall fra 1 til 3». Hvor mange ganger kjører løkken?

Vis fasit
BeregningResultat
Tall 1, 2, 33 ganger
  1. Løkken går gjennom 1, 2 og 3
  2. 3 ganger
Middels(3)

M-11Bruk formelen n(n+1)/2 til å finne det 10. trekanttallet.

Vis fasit
BeregningResultat
10*11110
110 : 255

10*11 : 2 = 110 : 2 = 55

M-12En løkke summerer partallene 2, 4, 6, 8. Hva blir summen?

Vis fasit
BeregningResultat
2+4+6+820

2+4+6+8 = 20

M-13Spor en løkke som legger sammen kvadrattall: 1², 2², 3². Hva blir summen underveis (skriv alle delsummene)?

Vis fasit
iSum
sum=1
2²=4sum=5
3²=9sum=14
  1. 1²=1
  2. sum 1. 2²=4
  3. sum 1+4=5. 3²=9
  4. sum 5+9=14
  5. delsummene er 1, 5, 14
Vanskelig(3)

V-11Skriv pseudokode (i samme stil som i eksempelet) som regner ut summen av de 6 første oddetallene (1, 3, 5, 7, 9, 11).

Vis fasit
BeregningResultat
Oddetall1, 3, 5, 7, 9, 11
PseudokodeSETT sum=0, legg til for hvert oddetall
  1. Løkken må gå gjennom oddetallene 1, 3, 5, 7, 9 og 11 og legge hvert til en løpende sum
  2. SETT sum=0, gjenta for hvert oddetall: legg til sum

V-12Summen av de n første oddetallene er alltid n². Bruk dette til å finne summen av de 8 første oddetallene uten å legge sammen alle.

Vis fasit
BeregningResultat
64
  1. Summen av de 8 første oddetallene bruker regelen n²
  2. for n=8: 8² = 64

V-13Forklar hvorfor det er nyttig å teste en kode-generert tallfølge mot en kjent formel for flere verdier av n, ikke bare én.

Vis fasit
BeregningResultat
Én verdi stemmersvakt bevis
Mange verdier stemmersterkere bevis
  1. Én tilfeldig treff beviser lite, men stemmer koden med formelen for MANGE ulike n, er det sterk støtte for at begge er riktige
  2. flere testverdier gir sterkere bevis enn én